Merge pull request #477 from sparklemotion/dependabot/github_actions/… #436
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: native packaging | |
concurrency: | |
group: "${{github.workflow}}-${{github.ref}}" | |
cancel-in-progress: true | |
on: | |
workflow_dispatch: | |
schedule: | |
- cron: "0 8 * * 3" # At 08:00 on Wednesday # https://crontab.guru/#0_8_*_*_3 | |
push: | |
branches: | |
- main | |
- "*-stable" | |
tags: | |
- v*.*.* | |
pull_request: | |
types: [opened, synchronize] | |
branches: | |
- '*' | |
jobs: | |
setup: | |
runs-on: ubuntu-latest | |
outputs: | |
rcd_image_version: ${{steps.rcd_image_version.outputs.rcd_image_version}} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/cache@v4 | |
with: | |
path: ports/archives | |
key: ports-archives-tarball-${{hashFiles('ext/sqlite3/extconf.rb','dependencies.yml')}} | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: "3.3" | |
bundler-cache: true | |
- run: bundle exec ruby ./ext/sqlite3/extconf.rb --download-dependencies | |
- id: rcd_image_version | |
run: bundle exec ruby -e 'require "rake_compiler_dock"; puts "rcd_image_version=#{RakeCompilerDock::IMAGE_VERSION}"' >> $GITHUB_OUTPUT | |
cruby-package: | |
needs: ["setup"] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/cache@v4 | |
with: | |
path: ports/archives | |
key: ports-archives-tarball-${{hashFiles('ext/sqlite3/extconf.rb','dependencies.yml')}} | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: "3.3" | |
bundler-cache: true | |
- run: ./bin/test-gem-build gems ruby | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: cruby-gem | |
path: gems | |
retention-days: 1 | |
cruby-linux-install: | |
needs: ["cruby-package"] | |
strategy: | |
fail-fast: false | |
matrix: | |
sys: ["enable", "disable"] | |
ruby: ["3.0", "3.1", "3.2", "3.3"] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby-pkgs@v1 | |
with: | |
ruby-version: "${{matrix.ruby}}" | |
apt-get: "libsqlite3-dev pkg-config" | |
- uses: actions/download-artifact@v3 | |
with: | |
name: cruby-gem | |
path: gems | |
- run: ./bin/test-gem-install gems --${{matrix.sys}}-system-libraries | |
cruby-osx-install: | |
needs: ["cruby-package"] | |
strategy: | |
fail-fast: false | |
matrix: | |
sys: ["enable", "disable"] | |
ruby: ["3.1", "3.2", "3.3", "truffleruby"] | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby-pkgs@v1 | |
with: | |
ruby-version: "${{matrix.ruby}}" | |
brew: sqlite3 pkg-config | |
- uses: actions/download-artifact@v3 | |
with: | |
name: cruby-gem | |
path: gems | |
- if: matrix.sys == 'enable' | |
run: ./bin/test-gem-install gems --enable-system-libraries --with-opt-dir=$(brew --prefix sqlite3) | |
- if: matrix.sys == 'disable' | |
run: ./bin/test-gem-install gems --disable-system-libraries | |
cruby-windows-install: | |
needs: ["cruby-package"] | |
strategy: | |
fail-fast: false | |
matrix: | |
sys: ["enable", "disable"] | |
ruby: ["3.0"] | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby-pkgs@v1 | |
with: | |
ruby-version: "${{matrix.ruby}}" | |
mingw: "sqlite3" | |
- uses: actions/download-artifact@v3 | |
with: | |
name: cruby-gem | |
path: gems | |
- run: | | |
gem install --verbose --no-document gems/*.gem -- --${{matrix.sys}}-system-libraries | |
gem list -d sqlite3 | |
ruby -rsqlite3 -e 'puts SQLite3::SQLITE_LOADED_VERSION' | |
cruby-windows-install-ucrt: | |
needs: ["cruby-package"] | |
strategy: | |
fail-fast: false | |
matrix: | |
sys: ["enable", "disable"] | |
ruby: ["3.1", "3.2", "3.3"] | |
runs-on: windows-2022 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby-pkgs@v1 | |
with: | |
ruby-version: "${{matrix.ruby}}" | |
mingw: "sqlite3" | |
- uses: actions/download-artifact@v3 | |
with: | |
name: cruby-gem | |
path: gems | |
- run: | | |
gem install --verbose --no-document gems/*.gem -- --${{matrix.sys}}-system-libraries | |
gem list -d sqlite3 | |
ruby -rsqlite3 -e 'puts SQLite3::SQLITE_LOADED_VERSION' | |
cruby-native-package: | |
needs: ["setup"] | |
strategy: | |
fail-fast: false | |
matrix: | |
plat: | |
- "aarch64-linux" | |
- "arm-linux" | |
- "arm64-darwin" # github actions does not support this runtime as of 2022-12, but let's build anyway | |
- "x64-mingw-ucrt" | |
- "x64-mingw32" | |
- "x86-linux" | |
- "x86_64-darwin" | |
- "x86_64-linux" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/cache@v4 | |
with: | |
path: ports/archives | |
key: ports-archives-tarball-${{hashFiles('ext/sqlite3/extconf.rb','dependencies.yml')}} | |
- env: | |
DOCKER_IMAGE: "ghcr.io/rake-compiler/rake-compiler-dock-image:${{needs.setup.outputs.rcd_image_version}}-mri-${{matrix.plat}}" | |
run: | | |
docker run --rm -v "$(pwd):/sqlite3" -w /sqlite3 ${DOCKER_IMAGE} \ | |
./bin/test-gem-build gems ${{matrix.plat}} | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: "cruby-${{matrix.plat}}-gem" | |
path: gems | |
retention-days: 1 | |
cruby-aarch64-linux-install: | |
needs: ["cruby-native-package"] | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ["3.0", "3.1", "3.2", "3.3"] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: cruby-aarch64-linux-gem | |
path: gems | |
- run: | | |
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes | |
docker run --rm -v "$(pwd):/sqlite3" -w /sqlite3 \ | |
--platform=linux/arm64/v8 \ | |
ruby:${{matrix.ruby}} \ | |
./bin/test-gem-install ./gems | |
cruby-arm-linux-install: | |
needs: ["cruby-native-package"] | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ["3.0", "3.1", "3.2", "3.3"] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: cruby-arm-linux-gem | |
path: gems | |
- run: | | |
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes | |
docker run --rm -v "$(pwd):/sqlite3" -w /sqlite3 \ | |
--platform=linux/arm/v7 \ | |
ruby:${{matrix.ruby}} \ | |
./bin/test-gem-install ./gems | |
## arm64-darwin installation testing is omitted until github actions supports it | |
# cruby-arm64-darwin-install: | |
# ... | |
cruby-x64-mingw-ucrt-install: | |
needs: ["cruby-native-package"] | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ["3.1", "3.2", "3.3"] | |
runs-on: windows-2022 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: "${{matrix.ruby}}" | |
- uses: actions/download-artifact@v3 | |
with: | |
name: cruby-x64-mingw-ucrt-gem | |
path: gems | |
- run: | | |
gem install --verbose --no-document gems/*.gem | |
gem list -d sqlite3 | |
ruby -rsqlite3 -e 'puts SQLite3::SQLITE_LOADED_VERSION' | |
cruby-x64-mingw32-install: | |
needs: ["cruby-native-package"] | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ["3.0"] | |
runs-on: windows-2019 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: "${{matrix.ruby}}" | |
- uses: actions/download-artifact@v3 | |
with: | |
name: cruby-x64-mingw32-gem | |
path: gems | |
- run: | | |
gem install --verbose --no-document gems/*.gem | |
gem list -d sqlite3 | |
ruby -rsqlite3 -e 'puts SQLite3::SQLITE_LOADED_VERSION' | |
cruby-x86-linux-install: | |
needs: ["cruby-native-package"] | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ["3.0", "3.1", "3.2", "3.3"] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: cruby-x86-linux-gem | |
path: gems | |
- run: | | |
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes | |
docker run --rm -v "$(pwd):/sqlite3" -w /sqlite3 \ | |
--platform=linux/386 \ | |
ruby:${{matrix.ruby}} \ | |
./bin/test-gem-install ./gems | |
cruby-x86_64-darwin-install: | |
needs: ["cruby-native-package"] | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ["3.0", "3.1", "3.2", "3.3"] | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: "${{matrix.ruby}}" | |
- uses: actions/download-artifact@v3 | |
with: | |
name: cruby-x86_64-darwin-gem | |
path: gems | |
- run: ./bin/test-gem-install gems | |
cruby-x86_64-linux-install: | |
needs: ["cruby-native-package"] | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ["3.0", "3.1", "3.2", "3.3"] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: "${{matrix.ruby}}" | |
- uses: actions/download-artifact@v3 | |
with: | |
name: cruby-x86_64-linux-gem | |
path: gems | |
- run: ./bin/test-gem-install gems | |
cruby-x86_64-linux-musl-install: | |
needs: ["cruby-native-package"] | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- { ruby: "3.0", flavor: "alpine" } | |
- { ruby: "3.1", flavor: "alpine3.18" } | |
- { ruby: "3.2", flavor: "alpine3.18" } | |
- { ruby: "3.3", flavor: "alpine3.18" } | |
runs-on: ubuntu-latest | |
container: | |
image: ruby:${{matrix.ruby}}-${{matrix.flavor}} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: cruby-x86_64-linux-gem | |
path: gems | |
- run: apk add bash build-base | |
- run: ./bin/test-gem-install ./gems |