diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 84f3666..39d02ea 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,9 +5,17 @@ on: branches: - safety-O tags: + - "*-beta" - "*-beta.*" + - "*-alpha" - "*-alpha.*" + - "*-rc" - "*-rc.*" + + release: + types: + - published + workflow_dispatch: concurrency: @@ -21,16 +29,18 @@ jobs: build: name: Check and build plugin runs-on: ubuntu-latest + outputs: release_version: ${{ steps.release_version.outputs.version }} publish_release: ${{ steps.release_eligibility.outputs.publish }} - release_sha: ${{ steps.release_eligibility.outputs.sha }} + release_tag: ${{ steps.release_version.outputs.tag }} steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 0 + ref: ${{ github.event.release.target_commitish || github.ref }} - name: Setup Node.js uses: actions/setup-node@v4 @@ -45,12 +55,21 @@ jobs: id: release_version shell: bash run: | - if [[ "${GITHUB_REF}" == refs/tags/* ]]; then - echo "version=${GITHUB_REF_NAME}" >> "${GITHUB_OUTPUT}" + if [[ "${GITHUB_EVENT_NAME}" == "release" ]]; then + echo "version=${{ github.event.release.tag_name }}" >> "${GITHUB_OUTPUT}" + echo "tag=${{ github.event.release.tag_name }}" >> "${GITHUB_OUTPUT}" exit 0 fi - node -p '"version=" + require("./package.json").version' >> "${GITHUB_OUTPUT}" + if [[ "${GITHUB_REF}" == refs/tags/* ]]; then + echo "version=${GITHUB_REF_NAME}" >> "${GITHUB_OUTPUT}" + echo "tag=${GITHUB_REF_NAME}" >> "${GITHUB_OUTPUT}" + exit 0 + fi + + VERSION="$(node -p 'require("./package.json").version')" + echo "version=${VERSION}" >> "${GITHUB_OUTPUT}" + echo "tag=" >> "${GITHUB_OUTPUT}" - name: Sync build metadata env: @@ -94,15 +113,16 @@ jobs: shell: bash run: | publish=false - release_sha="${GITHUB_SHA}" - if [[ "${GITHUB_EVENT_NAME}" == "push" && "${GITHUB_REF}" == refs/tags/* && "${GITHUB_REF_NAME}" == *-* ]]; then - release_sha="$(git rev-list -n 1 "${GITHUB_REF_NAME}")" + if [[ "${GITHUB_EVENT_NAME}" == "release" ]]; then + if [[ "${{ github.event.release.prerelease }}" == "true" && "${{ github.event.release.tag_name }}" == *-* ]]; then + publish=true + fi + elif [[ "${GITHUB_EVENT_NAME}" == "push" && "${GITHUB_REF}" == refs/tags/* && "${GITHUB_REF_NAME}" == *-* ]]; then publish=true fi echo "publish=${publish}" >> "${GITHUB_OUTPUT}" - echo "sha=${release_sha}" >> "${GITHUB_OUTPUT}" - name: Lint run: npm run lint --if-present @@ -127,10 +147,12 @@ jobs: manifest.json prerelease: - name: Publish GitHub prerelease + name: Publish GitHub prerelease assets runs-on: ubuntu-latest needs: build + if: needs.build.outputs.publish_release == 'true' + permissions: contents: write @@ -140,13 +162,11 @@ jobs: with: name: ai-vault-plugin - - name: Create prerelease + - name: Upload prerelease assets uses: softprops/action-gh-release@v2 with: - tag_name: ${{ github.ref_name }} + tag_name: ${{ needs.build.outputs.release_tag }} name: ${{ needs.build.outputs.release_version }} - target_commitish: ${{ needs.build.outputs.release_sha }} - generate_release_notes: true prerelease: true make_latest: false files: |