feat: add has_last_result? to workflow info (#351) #133
This file contains hidden or 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: Build Gems | |
| on: | |
| push: | |
| branches: | |
| - main | |
| - "releases/*" | |
| jobs: | |
| build-platform-gems: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| # TODO(cretz): Enable x64-mingw-ucrt if we can figure out Windows issue, see | |
| # https://github.com/temporalio/sdk-ruby/issues/172 | |
| rubyPlatform: ["aarch64-linux", "aarch64-linux-musl", "x86_64-linux", "x86_64-linux-musl", "arm64-darwin", "x86_64-darwin"] | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Setup Ruby and Rust | |
| uses: oxidize-rb/actions/setup-ruby-and-rust@v1 | |
| with: | |
| ruby-version: "3.4" | |
| bundler-cache: true | |
| cargo-cache: true | |
| cargo-vendor: true | |
| working-directory: ./temporalio | |
| cache-version: v1-${{ matrix.rubyPlatform }} | |
| # Cannot use oxidize-rb/actions/cross-gem because it has older Rust and we | |
| # need --mount-toolchains to get latest Rust, see | |
| # https://github.com/oxidize-rb/actions/issues/61 | |
| - name: Cross compile gem | |
| id: cross-gem | |
| working-directory: ./temporalio | |
| run: | | |
| bundle exec rb-sys-dock --platform ${{ matrix.rubyPlatform }} --ruby-versions "3.2,3.3,3.4" --mount-toolchains --build | |
| echo "gem-path=$(find pkg -name '*-${{ matrix.rubyPlatform }}.gem')" >> $GITHUB_OUTPUT | |
| - name: Upload gem | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| if-no-files-found: error | |
| name: ${{ matrix.rubyPlatform }}-gem | |
| path: ./temporalio/${{ steps.cross-gem.outputs.gem-path }} | |
| build-source-gem: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Setup Ruby and Rust | |
| uses: oxidize-rb/actions/setup-ruby-and-rust@v1 | |
| with: | |
| ruby-version: "3.4" | |
| bundler-cache: true | |
| cargo-cache: true | |
| cache-version: v1-source | |
| - name: Install bundle | |
| working-directory: ./temporalio | |
| run: bundle install | |
| - name: Build | |
| working-directory: ./temporalio | |
| run: bundle exec rake build | |
| - name: Upload gem | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: source-gem | |
| path: temporalio/pkg/*.gem | |
| smoke-test-gems: | |
| needs: | |
| - build-platform-gems | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| # TODO(cretz): Enable Linux ARM. See ci.yaml comment for why we can't right now. | |
| # | |
| # TODO(cretz): Enable windows-latest if we can figure out Windows issue, see | |
| # https://github.com/temporalio/sdk-ruby/issues/172 | |
| # | |
| # TODO(cretz): macos-intel (macos-13) is not tested against because the GH runner for it | |
| # does not have updated certificates and it is not easy to update them, see | |
| # https://github.com/temporalio/sdk-ruby/issues/306 | |
| os: [ubuntu-latest, macos-latest] | |
| rubyVersion: ["3.2", "3.3", "3.4"] | |
| # Container defaults to empty/none, but additional container for Alpine | |
| # added later | |
| container: [""] | |
| include: | |
| - os: ubuntu-latest | |
| rubyPlatform: x86_64-linux | |
| - os: macos-latest | |
| rubyPlatform: arm64-darwin | |
| - os: ubuntu-latest | |
| rubyVersion: "3.3" | |
| container: alpine/git:latest | |
| rubyPlatform: x86_64-linux-musl | |
| runs-on: ${{ matrix.os }} | |
| container: ${{ matrix.container }} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Download gem | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: ${{ matrix.rubyPlatform }}-gem | |
| path: local-gem | |
| # This only works on official runners | |
| - name: Setup Ruby | |
| if: ${{ matrix.container == '' }} | |
| uses: oxidize-rb/actions/setup-ruby-and-rust@v1 | |
| with: | |
| ruby-version: "${{ matrix.rubyVersion }}" | |
| bundler-cache: true | |
| cargo-cache: false | |
| # Works for Alpine | |
| - name: Setup Ruby (Alpine) | |
| if: ${{ matrix.container == 'alpine/git:latest' }} | |
| run: apk add --no-cache ruby ruby-dev ruby-bundler build-base | |
| - name: Run smoke test | |
| run: ruby ./temporalio/smoke_test/smoke_test_gem.rb 'local-gem/*-${{ matrix.rubyPlatform }}.gem' |