.github/workflows/release.yml in unitsml-0.2.3 vs .github/workflows/release.yml in unitsml-0.2.4
- old
+ new
@@ -3,19 +3,74 @@
on:
workflow_dispatch:
inputs:
next_version:
description: |
- Next release version. Possible values: x.y.z, major, minor, patch or pre|rc|etc
+ Next release version. Possible values: x.y.z, major, minor, patch (or pre|rc|etc).
+ Also, you can pass 'skip' to skip 'git tag' and do 'gem push' for the current version
required: true
- default: 'skip'
- repository_dispatch:
- types: [ do-release ]
-
+ type: string
+ secrets:
+ pat_token:
+ required: false
jobs:
release:
- uses: metanorma/ci/.github/workflows/rubygems-release.yml@main
- with:
- next_version: ${{ github.event.inputs.next_version }}
- post_install: 'git submodule update --remote --recursive'
- secrets:
- rubygems-api-key: ${{ secrets.UNITSML_CI_RUBYGEMS_API_KEY }}
+ runs-on: ubuntu-latest
+ env:
+ HAVE_PAT_TOKEN: ${{ secrets.pat_token != '' }}
+ steps:
+ - uses: actions/checkout@v3
+ with:
+ submodules: true
+
+ - run: git fetch --tags origin
+
+ - if: ${{ env.HAVE_PAT_TOKEN == 'true' }}
+ uses: metanorma/ci/gh-rubygems-setup-action@main
+ with:
+ token: ${{ secrets.pat_token }}
+
+ # workaround for https://github.com/actions/runner-images/issues/37
+ - if: matrix.os == 'ubuntu-latest'
+ run: |
+ sudo apt-get update
+ sudo apt-get install libcurl4-openssl-dev
+
+ - uses: ruby/setup-ruby@v1
+ with:
+ ruby-version: '3.1'
+ bundler-cache: true
+
+ - run: |
+ git config user.name github-actions
+ git config user.email github-actions@github.com
+
+ - run: gem install gem-release
+
+ - run: gem bump --version ${{ inputs.next_version }} --tag --push
+
+ - name: publish to rubygems.org
+ env:
+ RUBYGEMS_API_KEY: ${{ secrets.UNITSML_CI_RUBYGEMS_API_KEY }}
+ run: |
+ mkdir -p ~/.gem
+ envsubst << 'EOF' > ~/.gem/credentials
+ ---
+ :rubygems_api_key: ${RUBYGEMS_API_KEY}
+ EOF
+ chmod 0600 ~/.gem/credentials
+ bundle exec rake release
+
+ # This workflow usually called via repository_dispatch or direct workflow_dispatch
+ # in both cases `github.ref` doesn't reflect real version so we calculate it from gemspecfile
+ - name: get current gem ref
+ id: gem-tag-ref
+ run: |
+ GEM_VERSION=$(ruby -e "puts Gem::Specification.load(Dir.glob('*.gemspec').first).version.to_s")
+ echo "value=refs/tags/v${GEM_VERSION}" >> $GITHUB_OUTPUT
+
+ - uses: peter-evans/repository-dispatch@v2
+ with:
+ token: ${{ secrets.pat_token || github.token }}
+ repository: ${{ github.repository }}
+ event-type: release-passed
+ client-payload: '{"ref": "${{ steps.gem-tag-ref.outputs.value }}", "sha": "${{ github.sha }}", "type": "release-passed"}'