62 lines
1.8 KiB
YAML
62 lines
1.8 KiB
YAML
name: Push gem
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- "v*"
|
|
|
|
jobs:
|
|
verify:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
ruby: ["3.2", "3.3", "3.4", "4.0"]
|
|
steps:
|
|
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
|
|
- name: Set up Ruby ${{ matrix.ruby }}
|
|
uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0
|
|
with:
|
|
ruby-version: ${{ matrix.ruby }}
|
|
bundler-cache: true
|
|
|
|
- name: Run tests
|
|
run: bundle exec rake test
|
|
|
|
- name: Build gem
|
|
run: gem build opencode-ruby.gemspec
|
|
|
|
- name: Verify gem loads after install
|
|
run: |
|
|
gem install opencode-ruby-*.gem --no-document
|
|
ruby -ropencode-ruby -e 'puts Opencode::VERSION'
|
|
|
|
push:
|
|
needs: verify
|
|
if: ${{ github.server_url == 'https://github.com' }}
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: write
|
|
id-token: write
|
|
environment: release
|
|
steps:
|
|
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
with:
|
|
persist-credentials: false
|
|
- uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0
|
|
with:
|
|
ruby-version: "4.0"
|
|
bundler-cache: true
|
|
- name: Verify tag matches gem version
|
|
env:
|
|
RELEASE_TAG: ${{ github.ref_name }}
|
|
run: >-
|
|
ruby -Ilib -ropencode/version -e
|
|
'expected = ENV.fetch("RELEASE_TAG").delete_prefix("v");
|
|
abort "tag #{expected.inspect} does not match gem #{Opencode::VERSION.inspect}"
|
|
unless Opencode::VERSION == expected'
|
|
- name: Run tests
|
|
run: bundle exec rake test
|
|
- uses: rubygems/release-gem@052cc82692552de3ef2b81fd670e41d13cba8092 # v1.4.0
|