From ac704650ca87e4882610c22282d3f5385898596e Mon Sep 17 00:00:00 2001 From: "Petr Savichev (proton)" Date: Mon, 27 Nov 2023 08:21:23 -0600 Subject: [PATCH] conditional steps --- .github/workflows/release.yml | 75 +++++++++++++++++++++-------------- 1 file changed, 45 insertions(+), 30 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 27011d3..818d2ca 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,3 +1,4 @@ + name: Create GitHub Release on: @@ -7,7 +8,7 @@ on: - github-release jobs: - release: + check_tag: runs-on: ubuntu-latest steps: @@ -20,33 +21,47 @@ jobs: VERSION=$(grep 'version"' package.json | cut -d '"' -f 4) echo "version=$VERSION" >> $GITHUB_OUTPUT - - name: Create tag - uses: actions/github-script@v7 - with: - script: | - github.rest.git.createRef({ - owner: context.repo.owner, - repo: context.repo.repo, - ref: 'refs/tags/${{ steps.extract_version.outputs.version }}', - sha: context.sha - }) - - - name: Set up Node.js - uses: actions/setup-node@v4 - with: - node-version: 20 - - - name: Install dependencies - run: npm install - - - name: Create GitHub Release - id: create_release - uses: softprops/action-gh-release@v1 - with: - tag_name: ${{ steps.extract_version.outputs.version }} - files: | - out/Kino.pub_${{ steps.extract_version.outputs.version }}.zip - - - name: Publish Release URL + - name: Check if the tag exists + id: check_tag run: | - echo "Release URL: ${{ steps.create_release.outputs.upload_url }}" + if git rev-parse --quiet --verify "refs/tags/${{ steps.extract_version.outputs.version }}" >/dev/null; then + echo "The tag ${{ steps.extract_version.outputs.version }} exists. Workflow will be canceled." + echo "version_exists=true" >> $GITHUB_OUTPUT + else + echo "The tag ${{ steps.extract_version.outputs.version }} does not exist." + echo "version_exists=false" >> $GITHUB_OUTPUT + fi + + - name: Tag and release + if: ${{ needs.check_tag.outputs.tag_exists == 'false' }} + steps: + - name: Create tag + uses: actions/github-script@v7 + with: + script: | + github.rest.git.createRef({ + owner: context.repo.owner, + repo: context.repo.repo, + ref: 'refs/tags/${{ steps.extract_version.outputs.version }}', + sha: context.sha + }) + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: Install dependencies + run: npm install + + - name: Create GitHub Release + id: create_release + uses: softprops/action-gh-release@v1 + with: + tag_name: ${{ steps.extract_version.outputs.version }} + files: | + out/Kino.pub_${{ steps.extract_version.outputs.version }}.zip + + - name: Publish Release URL + run: | + echo "Release URL: ${{ steps.create_release.outputs.upload_url }}"