Skip to content

v1.2.12

v1.2.12 #31

Workflow file for this run

name: Release
on:
workflow_dispatch:
push:
tags: ["v*"]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: false
jobs:
source-gem:
name: Build source gem
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@stable
- uses: ruby/setup-ruby@v1
with:
ruby-version: "3.4"
bundler-cache: true
- run: bundle exec rake build
- uses: actions/upload-artifact@v7
with:
name: source-gem
path: pkg/*.gem
if-no-files-found: error
native-linux:
name: Build native gem (${{ matrix.platform }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
platform:
- x86_64-linux
- aarch64-linux
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@stable
- uses: ruby/setup-ruby@v1
with:
ruby-version: "3.4"
bundler-cache: true
- run: bundle exec rb-sys-dock --ruby-versions 4.0,3.4,3.3 --platform ${{ matrix.platform }} --mount-toolchains --build
- uses: actions/upload-artifact@v7
with:
name: native-gem-${{ matrix.platform }}
path: pkg/*.gem
if-no-files-found: error
# arm64-darwin cannot use rb-sys-dock: BoringSSL cross-compilation fails because
# CMake picks up /usr/bin/ld (ELF) instead of the osxcross Mach-O linker.
# No upstream project (wreq, rnet, boring) cross-compiles BoringSSL for Darwin.
native-darwin:
name: Build native gem (arm64-darwin)
runs-on: macos-latest
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
prefix-key: macos-arm64
shared-key: release
# Compile per-Ruby-version binaries (matching rb-sys-dock behavior on Linux).
# BoringSSL is compiled once and cached; only rb-sys/magnus rebuild per version.
- uses: ruby/setup-ruby@v1
with:
ruby-version: "3.3"
bundler-cache: true
- name: Compile for Ruby 3.3
env:
RB_SYS_CARGO_PROFILE: release
run: |
cargo clean -p rb-sys -p magnus -p wreq-ruby --release 2>/dev/null || true
bundle exec rake compile
mkdir -p lib/wreq_ruby/3.3
cp lib/wreq_ruby/wreq_ruby.bundle lib/wreq_ruby/3.3/
- uses: ruby/setup-ruby@v1
with:
ruby-version: "3.4"
bundler-cache: true
- name: Compile for Ruby 3.4
env:
RB_SYS_CARGO_PROFILE: release
run: |
cargo clean -p rb-sys -p magnus -p wreq-ruby --release
bundle exec rake compile
mkdir -p lib/wreq_ruby/3.4
cp lib/wreq_ruby/wreq_ruby.bundle lib/wreq_ruby/3.4/
- uses: ruby/setup-ruby@v1
with:
ruby-version: "4.0"
bundler-cache: true
- name: Compile for Ruby 4.0
env:
RB_SYS_CARGO_PROFILE: release
run: |
cargo clean -p rb-sys -p magnus -p wreq-ruby --release
bundle exec rake compile
mkdir -p lib/wreq_ruby/4.0
cp lib/wreq_ruby/wreq_ruby.bundle lib/wreq_ruby/4.0/
- name: Build platform gem
run: ruby script/build_platform_gem.rb arm64-darwin
- uses: actions/upload-artifact@v7
with:
name: native-gem-arm64-darwin
path: pkg/*arm64-darwin*.gem
if-no-files-found: error
native-windows:
name: Build native gem (x64-mingw-ucrt)
runs-on: windows-latest
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@stable
with:
targets: x86_64-pc-windows-gnu
- uses: ruby/setup-ruby@v1
with:
ruby-version: "3.3"
bundler-cache: true
- name: Install Windows build dependencies for Ruby 3.3
run: >-
ridk exec pacman -S --needed --noconfirm
mingw-w64-ucrt-x86_64-gcc
mingw-w64-ucrt-x86_64-clang
mingw-w64-ucrt-x86_64-cmake
mingw-w64-ucrt-x86_64-pkgconf
- name: Compile for Ruby 3.3
shell: pwsh
env:
RB_SYS_CARGO_PROFILE: release
run: |
bundle exec rake compile
New-Item -ItemType Directory -Force "lib\wreq_ruby\3.3" | Out-Null
Copy-Item "lib\wreq_ruby\wreq_ruby.so" "lib\wreq_ruby\3.3\wreq_ruby.so" -Force
- uses: ruby/setup-ruby@v1
with:
ruby-version: "3.4"
bundler-cache: true
- name: Install Windows build dependencies for Ruby 3.4
run: >-
ridk exec pacman -S --needed --noconfirm
mingw-w64-ucrt-x86_64-gcc
mingw-w64-ucrt-x86_64-clang
mingw-w64-ucrt-x86_64-cmake
mingw-w64-ucrt-x86_64-pkgconf
- name: Compile for Ruby 3.4
shell: pwsh
env:
RB_SYS_CARGO_PROFILE: release
run: |
bundle exec rake compile
New-Item -ItemType Directory -Force "lib\wreq_ruby\3.4" | Out-Null
Copy-Item "lib\wreq_ruby\wreq_ruby.so" "lib\wreq_ruby\3.4\wreq_ruby.so" -Force
- uses: ruby/setup-ruby@v1
with:
ruby-version: "4.0"
bundler-cache: true
- name: Install Windows build dependencies for Ruby 4.0
run: >-
ridk exec pacman -S --needed --noconfirm
mingw-w64-ucrt-x86_64-gcc
mingw-w64-ucrt-x86_64-clang
mingw-w64-ucrt-x86_64-cmake
mingw-w64-ucrt-x86_64-pkgconf
- name: Compile for Ruby 4.0
shell: pwsh
env:
RB_SYS_CARGO_PROFILE: release
run: |
bundle exec rake compile
New-Item -ItemType Directory -Force "lib\wreq_ruby\4.0" | Out-Null
Copy-Item "lib\wreq_ruby\wreq_ruby.so" "lib\wreq_ruby\4.0\wreq_ruby.so" -Force
- name: Build platform gem
run: ruby script/build_platform_gem.rb x64-mingw-ucrt
- uses: actions/upload-artifact@v7
with:
name: native-gem-x64-mingw-ucrt
path: pkg/*x64-mingw-ucrt*.gem
if-no-files-found: error
smoke-test:
name: Smoke test Linux (Ruby ${{ matrix.ruby }})
needs: [native-linux]
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
ruby: ["3.3", "3.4", "4.0"]
steps:
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
- uses: actions/download-artifact@v8
with:
name: native-gem-x86_64-linux
path: pkg/
- name: Install native gem
run: gem install pkg/wreq-*-x86_64-linux.gem
- name: Verify gem loads and prints version
run: ruby -rwreq -e "puts Wreq::VERSION"
smoke-test-darwin:
name: Smoke test macOS (Ruby ${{ matrix.ruby }})
needs: [native-darwin]
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
ruby: ["3.3", "3.4", "4.0"]
steps:
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
- uses: actions/download-artifact@v8
with:
name: native-gem-arm64-darwin
path: pkg/
- name: Install native gem
run: gem install pkg/wreq-*-arm64-darwin.gem
- name: Verify gem loads and prints version
run: ruby -rwreq -e "puts Wreq::VERSION"
smoke-test-windows:
name: Smoke test Windows (${{ matrix.platform }}, Ruby ${{ matrix.ruby }})
needs: [native-windows]
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
include:
- platform: x64-mingw-ucrt
ruby: "3.3"
- platform: x64-mingw-ucrt
ruby: "3.4"
- platform: x64-mingw-ucrt
ruby: "4.0"
steps:
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
- uses: actions/download-artifact@v8
with:
name: native-gem-${{ matrix.platform }}
path: pkg/
- name: Install native gem
run: gem install pkg/wreq-*-${{ matrix.platform }}.gem
- name: Verify gem loads and prints version
run: ruby -rwreq -e "puts Wreq::VERSION"
release:
name: Release
needs:
[
source-gem,
native-linux,
native-darwin,
native-windows,
smoke-test,
smoke-test-darwin,
smoke-test-windows,
]
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
permissions:
contents: write
id-token: write
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@stable
- uses: ruby/setup-ruby@v1
with:
ruby-version: "3.4"
bundler-cache: true
- uses: actions/download-artifact@v8
with:
path: pkg/
pattern: "{native-gem-*,source-gem}"
merge-multiple: true
- name: List gems
run: ls -la pkg/*.gem
- name: Verify version matches tag
run: |
GEM_VERSION=$(bundle exec rake version)
if [ "v${GEM_VERSION}" != "${{ github.ref_name }}" ]; then
echo "::error::Gem version v${GEM_VERSION} does not match tag ${{ github.ref_name }}"
exit 1
fi
- name: Configure trusted publishing credentials
uses: rubygems/configure-rubygems-credentials@v2.1.0
- name: Push all gems to RubyGems.org
run: |
failed=0
for gem in pkg/*.gem; do
echo "Pushing $(basename $gem)..."
if ! gem push "$gem"; then
echo "::warning::Failed to push $(basename $gem)"
failed=1
fi
done
if [ "$failed" -eq 1 ]; then
echo "::error::Some gems failed to push"
exit 1
fi
- name: Create GitHub Release
uses: softprops/action-gh-release@v3
with:
generate_release_notes: true
prerelease: ${{ contains(github.ref_name, '-rc') || contains(github.ref_name, '-alpha') || contains(github.ref_name, '-beta') }}