From 9c6ebff575c7ede82f717414d529a059c80bf284 Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Tue, 11 Jun 2024 09:26:08 -0400 Subject: [PATCH] fix(action): add delay when deleting tags (#172) --- README.md | 1 + action.yml | 14 +++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 86bcfa5..b825eb0 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,7 @@ steps: | keepPreReleaseCount | The number of pre-releases to keep. | `2` | `false` | | name | The version to create. | | `true` | | prerelease | Whether the release is a prerelease. | `true` | `false` | +| sleepDuration | The duration to sleep in seconds before deleting tags. | `15` | `false` | | tag | The tag to create. | | `true` | | token | GitHub Token. | | `true` | diff --git a/action.yml b/action.yml index 87c38ff..3401690 100644 --- a/action.yml +++ b/action.yml @@ -46,6 +46,10 @@ inputs: description: 'Whether the release is a prerelease.' required: false default: 'true' + sleepDuration: + description: 'The duration to sleep in seconds before deleting tags.' + required: false + default: '15' tag: description: 'The tag to create.' required: true @@ -90,12 +94,14 @@ runs: env: DELETE_TAGS: ${{ inputs.deletePreReleaseTags }} KEEP_LATEST: ${{ inputs.keepPreReleaseCount }} + SLEEP_DURATION: ${{ inputs.sleepDuration }} with: github-token: ${{ inputs.token }} script: | // process input const DELETE_TAGS = process.env.DELETE_TAGS.toLowerCase() === 'true'; const KEEP_LATEST = parseInt(process.env.KEEP_LATEST, 10); + const SLEEP_DURATION = parseInt(process.env.SLEEP_DURATION, 10); console.log(`DELETE_TAGS: ${DELETE_TAGS}`); console.log(`KEEP_LATEST: ${KEEP_LATEST}`); @@ -145,8 +151,14 @@ runs: console.error(`Failed to delete release: ${release.tag_name}`); console.error(error); } + } + + // sleep to allow any on release deleted event workflow runs to be created + // if the tag is deleted before the workflow run is created, the run will fail to be created + await new Promise(resolve => setTimeout(resolve, SLEEP_DURATION * 1000)); - if (DELETE_TAGS) { + if (DELETE_TAGS) { + for (let i = 0; i < preReleases.length - KEEP_LATEST; i++) { console.log(`Deleting tag: ${release.tag_name}`); try { await github.rest.git.deleteRef({