diff --git a/.github/workflows/scheduled-release.yml b/.github/workflows/scheduled-release.yml index 84374cdee..b03d92698 100644 --- a/.github/workflows/scheduled-release.yml +++ b/.github/workflows/scheduled-release.yml @@ -15,9 +15,23 @@ jobs: runs-on: ubuntu-latest outputs: release_exists: ${{ steps.check.outputs.release_exists }} + is_tag: ${{ steps.check-ref.outputs.is_tag }} + ref_name: ${{ steps.check-ref.outputs.ref_name }} steps: + - name: Determine ref type and name + id: check-ref + run: | + if [[ $GITHUB_REF == refs/tags/* ]]; then + echo "is_tag=true" >> "$GITHUB_OUTPUT" + echo "ref_name=${GITHUB_REF#refs/tags/}" >> "$GITHUB_OUTPUT" + else + echo "is_tag=false" >> "$GITHUB_OUTPUT" + echo "ref_name=${GITHUB_REF#refs/heads/}" >> "$GITHUB_OUTPUT" + fi + - name: Check if release exists id: check + if: steps.check-ref.outputs.is_tag == 'true' run: | RELEASE_EXISTS=$(curl -s -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ "https://api.github.com/repos/onsonr/sonr/releases/tags/${GITHUB_REF#refs/tags/}" \ @@ -27,7 +41,9 @@ jobs: goreleaser: name: Run GoReleaser needs: check-release - if: needs.check-release.outputs.release_exists == 'false' + if: | + (needs.check-release.outputs.is_tag == 'true' && needs.check-release.outputs.release_exists == 'false') || + (needs.check-release.outputs.is_tag == 'false') permissions: write-all runs-on: ubuntu-latest steps: @@ -38,8 +54,17 @@ jobs: fetch-depth: 0 fetch-tags: true - - name: Checkout Latest Tag - run: git checkout $(git describe --tags --abbrev=0) + - name: Set up release configuration + id: setup + run: | + if [[ "${{ needs.check-release.outputs.is_tag }}" == "true" ]]; then + echo "Using tag configuration" + git checkout ${{ needs.check-release.outputs.ref_name }} + echo "args=release --clean" >> "$GITHUB_OUTPUT" + else + echo "Using snapshot configuration" + echo "args=release --snapshot --clean" >> "$GITHUB_OUTPUT" + fi - uses: actions/setup-go@v5 with: @@ -57,7 +82,7 @@ jobs: with: distribution: goreleaser-pro version: latest - args: release --clean + args: ${{ steps.setup.outputs.args }} env: GITHUB_TOKEN: ${{ secrets.GH_RELEASER_TOKEN }} GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}