From 37e7d96cc31a09841822efb7e3b01042b82c6a9b Mon Sep 17 00:00:00 2001 From: Juha Kukkonen Date: Mon, 14 Feb 2022 21:54:04 +0200 Subject: [PATCH] Enhance drafting and publishing release * Add check for existing released tags for draft a new release. -> Prevent drafting already published release again. * Add leniency to publishing a release crate. -> Try 3 times while waiting exponential time between retries. --- .github/workflows/draft.yaml | 6 ++++++ .github/workflows/release.yaml | 20 ++++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/.github/workflows/draft.yaml b/.github/workflows/draft.yaml index 1e1d805c..a1987f29 100644 --- a/.github/workflows/draft.yaml +++ b/.github/workflows/draft.yaml @@ -45,6 +45,12 @@ jobs: echo "::set-output name=is_prerelease::$prerelease" echo "::set-output name=version::$version" + - name: Check existing release + run: | + if git tag | grep ${{ steps.release_info.outputs.version }} > /dev/null; then + echo "Tag tag with ${{ steps.release_info.outputs.version }} already exists, cannot draft a release for already existing tag!, Consider upgrading versions to Cargo.toml file" && exit 1 + fi + - name: Remove previous release run: | echo ${{ secrets.GITHUB_TOKEN }} | gh auth login --with-token diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 6b34f536..ca05eb78 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -23,8 +23,24 @@ jobs: for manifest in $(echo "$manifests" | xargs); do module=$(cargo read-manifest --manifest-path "$manifest" | jq -r .name) if [[ "$module" == "utoipa" ]]; then - cargo publish + retry=0 + while ! cargo publish && [[ $retry -lt 3 ]]; do + echo "Failed to publish, Retrying... $retry after $((retry*1)) sec." + sleep $((retry*1)) + retry=$((retry+1)) + done + if [[ $retry -eq 3 ]]; then + echo "Failed to publish crate utoipa, try to increase wait? Or retries?" && exit 1 + fi else - cargo publish -p "$module" + retry=0 + while ! cargo publish -p "$module" && [[ $retry -lt 3 ]]; do + echo "Failed to publish, Retrying... $retry after $((retry*1)) sec." + sleep $((retry*1)) + retry=$((retry+1)) + done + if [[ $retry -eq 3 ]]; then + echo "Failed to publish crate $module, try to increase wait? Or retries?" && exit 1 + fi fi done