diff options
| author | Joshua M. Boniface <joshua@boniface.me> | 2024-04-18 09:03:06 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-18 09:03:06 -0400 |
| commit | 7d67443aca4f67932d6b248f038a44f83683ebf3 (patch) | |
| tree | c1b251480f3b7853e5e16187dce91381a8cfb2bf | |
| parent | 37d301ebd40520bb3719baa14420d98c168dd8da (diff) | |
ci: Add flock to openapi spec upload (#11381)
* Add flock to openapi spec upload
Prevents a race condition if two PRs are merged in very quick
succession.
* Remove lock at the end
* Revert "Remove lock at the end"
This reverts commit a7baafd10e3c1bc47304f05c93ac4864e622e5e0.
* Correct incorrect comments
* Exit with an error if flock fails
| -rw-r--r-- | .github/workflows/ci-openapi.yml | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/.github/workflows/ci-openapi.yml b/.github/workflows/ci-openapi.yml index bdbfcd3eb..0abbb09c0 100644 --- a/.github/workflows/ci-openapi.yml +++ b/.github/workflows/ci-openapi.yml @@ -174,6 +174,8 @@ jobs: debug: false script_stop: false script: | + ( + flock -x -w 300 200 || exit 1 TGT_DIR="/srv/repository/main/openapi" LAST_SPEC="$( ls -lt ${TGT_DIR}/unstable/ | grep 'jellyfin-openapi' | head -1 | awk '{ print $NF }' )" # If new and previous spec don't differ (diff retcode 0), remove incoming and finish @@ -187,10 +189,11 @@ jobs: sudo rm ${TGT_DIR}/jellyfin-openapi-unstable_previous.json # Move current jellyfin-openapi-unstable.json symlink to jellyfin-openapi-unstable_previous.json sudo mv ${TGT_DIR}/jellyfin-openapi-unstable.json ${TGT_DIR}/jellyfin-openapi-unstable_previous.json - # Create new jellyfin-openapi-stable.json symlink + # Create new jellyfin-openapi-unstable.json symlink sudo ln -s unstable/jellyfin-openapi-${{ env.JELLYFIN_VERSION }}.json ${TGT_DIR}/jellyfin-openapi-unstable.json - # Check that the previous openapi spec is correct + # Check that the previous openapi unstable spec link is correct if [[ "$( readlink ${TGT_DIR}/jellyfin-openapi-unstable_previous.json )" != "unstable/${LAST_SPEC}" ]]; then sudo rm ${TGT_DIR}/jellyfin-openapi-unstable_previous.json sudo ln -s unstable/${LAST_SPEC} ${TGT_DIR}/jellyfin-openapi-unstable_previous.json fi + ) 200>/run/openapi-unstable.lock |
