Release #46
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: Release | |
on: | |
workflow_dispatch: | |
push: | |
tags: ["v*"] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
ci-data: | |
runs-on: ubuntu-latest | |
outputs: | |
result: ${{ steps.fetch.outputs.result }} | |
steps: | |
- id: fetch | |
uses: oxidize-rb/actions/fetch-ci-data@v1 | |
with: | |
supported-ruby-platforms: | | |
exclude: [arm-linux] # no cranelift support yet | |
stable-ruby-versions: | | |
exclude: [head] | |
build: | |
name: Build native gems | |
needs: ci-data | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby-platform: ${{ fromJSON(needs.ci-data.outputs.result).supported-ruby-platforms }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: oxidize-rb/actions/setup-ruby-and-rust@v1 | |
with: | |
ruby-version: "3.3" | |
bundler-cache: false | |
cargo-cache: true | |
cargo-vendor: true | |
cache-version: v1-${{ matrix.ruby-platform }} | |
- uses: oxidize-rb/cross-gem-action@main | |
with: | |
version: latest | |
platform: ${{ matrix.ruby-platform }} | |
ruby-versions: ${{ join(fromJSON(needs.ci-data.outputs.result).stable-ruby-versions, ', ') }} | |
- name: Smoke gem install | |
if: matrix.ruby-platform == 'x86_64-linux' # GitHub actions architecture | |
run: | | |
gem install pkg/wasmtime-*.gem --verbose | |
script="puts Wasmtime::Engine.new.precompile_module('(module)')" | |
ruby -rwasmtime -e "$script" | grep wasmtime.info | |
echo "✅ Successfully gem installed" | |
release: | |
name: Release | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: oxidize-rb/actions/setup-ruby-and-rust@v1 | |
with: | |
ruby-version: "3.3" | |
bundler-cache: true | |
cargo-cache: true | |
cache-version: v1 | |
- uses: actions/download-artifact@v4 | |
with: | |
name: cross-gem | |
- name: Package source gem | |
run: bundle exec rake pkg:ruby | |
- name: Ensure version matches the tag | |
run: | | |
GEM_VERSION=$(grep VERSION lib/wasmtime/version.rb | head -n 1 | cut -d'"' -f2) | |
if [ "v$GEM_VERSION" != "${{ github.ref_name }}" ]; then | |
echo "Gem version does not match tag" | |
echo " v$GEM_VERSION != ${{ github.ref_name }}" | |
exit 1 | |
fi | |
- name: Push Gem | |
working-directory: pkg/ | |
env: | |
GEM_HOST_API_KEY: ${{ secrets.RUBYGEMS_KEY }} | |
run: | | |
mkdir -p $HOME/.gem | |
touch $HOME/.gem/credentials | |
chmod 0600 $HOME/.gem/credentials | |
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials | |
ls -l | |
for i in *.gem; do | |
if [ -f "$i" ]; then | |
if ! gem push "$i" >push.out; then | |
gemerr=$? | |
sed 's/^/::error:: /' push.out | |
if ! grep -q "Repushing of gem" push.out; then | |
exit $gemerr | |
fi | |
fi | |
fi | |
done | |
- name: Create GitHub release | |
uses: ncipollo/release-action@v1 | |
with: | |
allowUpdates: true | |
generateReleaseNotes: true | |
draft: true | |
omitBodyDuringUpdate: true | |
omitNameDuringUpdate: true | |
omitPrereleaseDuringUpdate: true | |
skipIfReleaseExists: true |