diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..4e7f823 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,48 @@ +name: Release + +on: + push: + tags: + - 'v[0-9]*.[0-9]*.[0-9]*' + +jobs: + build: + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - uses: actions/checkout@v6.0.2 + with: + persist-credentials: false + - uses: ruby/setup-ruby@afeafc3d1ab54a631816aba4c914a0081c12ff2f # v1.310.0 + with: + ruby-version: '3.2' + - run: gem build komoju-sdk.gemspec + + publish: + needs: build + runs-on: ubuntu-latest + environment: release + permissions: + contents: write + id-token: write # Required for RubyGems OIDC Trusted Publishing + steps: + - uses: actions/checkout@v6.0.2 + with: + persist-credentials: false + - uses: ruby/setup-ruby@afeafc3d1ab54a631816aba4c914a0081c12ff2f # v1.310.0 + with: + ruby-version: '3.2' + - uses: rubygems/configure-rubygems-credentials@762a4b77c3300434bb57c7ce80b20e36231927aa # v2.0.0 + - run: gem build komoju-sdk.gemspec + - run: gem push "$(ls komoju-sdk-*.gem | tail -1)" + - name: Create GitHub Release + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + TAG_NAME: ${{ github.ref_name }} + run: | + PRERELEASE="" + if [[ "$TAG_NAME" == *"beta"* ]] || [[ "$TAG_NAME" == *"alpha"* ]]; then + PRERELEASE="--prerelease" + fi + gh release create "$TAG_NAME" --generate-notes $PRERELEASE