90 lines
2.4 KiB
Text
90 lines
2.4 KiB
Text
# 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
|