# Set up env env REPO=${SCRIPT_NAME}-${RANDOM_STRING} # Use gh as a credential helper exec gh auth setup-git # Create a repository with a file so it has a default branch exec gh repo create ${ORG}/${REPO} --add-readme --private # Defer repo cleanup defer gh repo delete --yes ${ORG}/${REPO} # Clone the repo exec gh repo clone ${ORG}/${REPO} # commit the workflow file cd ${REPO} mkdir .github/workflows mv ../workflow.yml .github/workflows/workflow.yml exec git add .github/workflows/workflow.yml exec git commit -m 'Create workflow file' exec git push -u origin main # Sleep because it takes a second for the workflow to register sleep 1 # Check the workflow is indeed created exec gh workflow list stdout 'Test Workflow Name' # Run the workflow exec gh workflow run 'Test Workflow Name' # It takes some time for a workflow run to register sleep 10 # Get the run ID we want to watch exec gh run list --json databaseId --jq '.[0].databaseId' stdout2env RUN_ID # Wait for workflow to complete exec gh run watch ${RUN_ID} --exit-status # Download the artifact to current dir exec gh run download ${RUN_ID} # Check that we downloaded the artifact and extracted into a dir with the name of the artifact exists ./my-artifact/child/world.txt # Remove the artifact rm ./my-artifact # Download the artifact via name to current dir exec gh run download -n 'my-artifact' ${RUN_ID} # Check that we downloaded the artifact and extracted into the current dir exists ./child/world.txt # Download the artifact via name to a specific dir exec gh run download -n 'my-artifact' ${RUN_ID} --dir '..' # Check that we downloaded the artifact and extracted into the specified dir exists ../child/world.txt -- workflow.yml -- # This is a basic workflow to help you get started with Actions name: Test Workflow Name # Controls when the workflow will run on: # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" build: # The type of runner that the job will run on runs-on: ubuntu-latest # Steps represent a sequence of tasks that will be executed as part of the job steps: - run: | mkdir -p ./parent/child echo hello > ./parent/child/world.txt - uses: actions/upload-artifact@v4 with: name: my-artifact path: ./parent