Created
February 1, 2024 17:10
-
-
Save datadavev/1dd07675a9d7d96da526b004cb48cb17 to your computer and use it in GitHub Desktop.
Example workflow that self terminates if another instance of same workflow is running
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: test_terminate_duplicate | |
on: | |
workflow_dispatch | |
jobs: | |
check_duplicate: | |
runs-on: ubuntu-latest | |
env: | |
GH_TOKEN: ${{ github.token }} | |
steps: | |
- name: show_vars | |
run: | | |
echo GITHUB_ACTION = "${GITHUB_ACTION}" | |
echo GITHUB_ACTION_PATH = "${GITHUB_ACTION_PATH}" | |
echo GITHUB_REPOSITORY = "${GITHUB_REPOSITORY}" | |
echo GITHUB_REPOSITORY_ID = "${GITHUB_REPOSITORY_ID}" | |
echo GITHUB_ACTION_REPOSITORY = "${GITHUB_ACTION_REPOSITORY}" | |
echo GITHUB_RUN_ID = "${GITHUB_RUN_ID}" | |
echo GITHUB_RUN_NUMBER = "${GITHUB_RUN_NUMBER}" | |
echo GITHUB_JOB = "${GITHUB_JOB}" | |
echo GITHUB_WORKFLOW = "${GITHUB_WORKFLOW}" | |
- name: check_same_workflow | |
run: | | |
NUM_EXISTING=$(gh run -R "${GITHUB_REPOSITORY}" list -w "${GITHUB_WORKFLOW}" --json name,status,number | \ | |
jq --argjson jnum ${GITHUB_RUN_NUMBER} '[ .[] | select((.number!=$jnum) and (.status | IN ("pending","queued","in_progress"))) ] | length') | |
echo NUM_EXISTING = ${NUM_EXISTING} | |
if (( $NUM_EXISTING > 0 )); then | |
echo "Duplicate run. Aborting." | |
exit 1 | |
fi | |
- name: sleep a while | |
run: | | |
echo "Sleeping for 30 seconds..." | |
sleep 30 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment