diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..8f7ee72 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,56 @@ +name: Release + +on: + push: + branches: + - master + +jobs: + release: + runs-on: ubuntu-latest + + permissions: + contents: write + + steps: + - uses: actions/checkout@v6 + + - name: Extract version + id: version + run: | + version=$(grep -oP '(?<=VERSION = ")[^"]+' lib/ezclient/version.rb) + echo "tag=v$version" >> $GITHUB_OUTPUT + + - name: Check if release already exists + id: check + run: | + if gh release view "${{ steps.version.outputs.tag }}" &>/dev/null; then + echo "exists=true" >> $GITHUB_OUTPUT + else + echo "exists=false" >> $GITHUB_OUTPUT + fi + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - uses: ruby/setup-ruby@v1 + if: steps.check.outputs.exists == 'false' + with: + ruby-version: "3.4" + bundler-cache: true + + - name: Build gem + if: steps.check.outputs.exists == 'false' + run: gem build ezclient.gemspec + + - name: Push gem to RubyGems + if: steps.check.outputs.exists == 'false' + run: gem push *.gem + env: + GEM_HOST_API_KEY: ${{ secrets.GEM_HOST_API_KEY }} + + - uses: softprops/action-gh-release@v3 + if: steps.check.outputs.exists == 'false' + with: + tag_name: ${{ steps.version.outputs.tag }} + files: "*.gem" + generate_release_notes: true