v19.0.0 #52
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: | | |
# Excluding: | |
# `arm-linux`: Cranelift doesn't support 32-bit architectures | |
# `x64-mingw32`: `x64-mingw-ucrt` should be used for Ruby 3.1+ (https://github.com/rake-compiler/rake-compiler-dock?tab=readme-ov-file#windows) | |
# 3.0 is deprecated as stable ruby version according to: | |
# https://github.com/oxidize-rb/actions/blob/main/fetch-ci-data/evaluate.rb#L54 | |
exclude: [arm-linux, x64-mingw32] | |
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 | |
# It seems that v4 is not compatible with how artifacts are uploaded by | |
# oxidize-rb/cross-gem-action. So this must stay as v3 until the issue | |
# below is fixed. | |
# See https://github.com/oxidize-rb/actions/issues/27, for more details. | |
- uses: actions/download-artifact@v3 | |
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 |