CI #1225
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: CI | |
| on: | |
| pull_request: | |
| push: | |
| branches: | |
| - main | |
| tags: | |
| - v*.*.* | |
| schedule: | |
| - cron: 14 21 * * * | |
| concurrency: | |
| group: ${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| ruleset: | |
| name: Ruleset | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: bazel-contrib/setup-bazel@0.19.0 | |
| with: | |
| bazelrc: common --announce_rc --color=yes | |
| repository-cache: true | |
| - run: bazel run :buildifier.check | |
| - run: bazel test --verbose_failures --test_output=errors --test_summary=detailed ... | |
| - if: failure() && runner.debug == '1' | |
| uses: mxschmitt/action-tmate@v3 | |
| examples-gem: | |
| name: Examples / Gem | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 30 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| ruby: | |
| - 3.2.9 | |
| - 3.3.9 | |
| - 3.4.6 | |
| - 4.0.1 | |
| - jruby-10.0.2.0 | |
| - truffleruby-33.0.0 | |
| - system | |
| os: | |
| - ubuntu-latest | |
| - macos-latest | |
| - windows-latest | |
| mode: | |
| - bzlmod | |
| - WORKSPACE | |
| exclude: | |
| # TruffleRuby doesn't work on Windows. | |
| - os: windows-latest | |
| ruby: truffleruby-33.0.0 | |
| defaults: | |
| run: | |
| working-directory: examples/gem | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: bazel-contrib/setup-bazel@0.19.0 | |
| with: | |
| # Move autoload_externally to .bazelrc once Bazel 6 support is dropped. | |
| bazelrc: common --announce_rc --color=yes --incompatible_autoload_externally= ${{ matrix.mode == 'WORKSPACE' && '--enable_workspace' || '' }} | |
| module-root: examples/gem | |
| # Workaround for long path issues: https://github.com/jruby/jruby/issues/3995. | |
| output-base: ${{ matrix.os == 'windows-latest' && 'D:/b' || '' }} | |
| repository-cache: true | |
| - run: echo ${{ matrix.ruby }} > .ruby-version | |
| - if: matrix.ruby == 'system' | |
| uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: 3.2.9 | |
| - run: bazel build ... | |
| - run: bazel run lib/gem:add-numbers 2 | |
| - run: bazel run lib/gem:print-version | |
| - run: bazel run "@ruby" "--" -e "puts RUBY_VERSION" | |
| - run: bazel run "@ruby//:bundle" "--" lock | |
| - run: bazel run "@ruby//:gem" "--" info | |
| - run: bazel run "@bundle//bin:rake" "--" --version | |
| - run: bazel run "@bundle//bin:rspec" "--" --help | |
| - run: bazel test ... | |
| - name: Run coverage | |
| if: matrix.os != 'windows-latest' | |
| shell: bash | |
| run: | | |
| bazel coverage //spec:add | |
| COVERAGE_FILE=bazel-testlogs/spec/add/coverage.dat | |
| if ! grep -q "SF:.*lib/gem/add.rb" "$COVERAGE_FILE"; then | |
| echo "Error: Coverage report does not contain expected file coverage" | |
| cat "$COVERAGE_FILE" | |
| exit 1 | |
| fi | |
| - name: Upload coverage report | |
| if: matrix.os != 'windows-latest' | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: coverage-${{ matrix.os }}-${{ matrix.ruby }}-${{ matrix.mode }} | |
| path: examples/gem/bazel-testlogs/spec/add/coverage.dat | |
| - if: failure() && runner.debug == '1' | |
| uses: mxschmitt/action-tmate@v3 | |
| examples-jekyll: | |
| name: Examples / Jekyll | |
| runs-on: ${{ matrix.os }}-latest | |
| timeout-minutes: 30 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| - ubuntu | |
| - macos | |
| defaults: | |
| run: | |
| working-directory: examples/jekyll | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: bazel-contrib/setup-bazel@0.19.0 | |
| with: | |
| bazelrc: common --announce_rc --color=yes | |
| module-root: examples/jekyll | |
| repository-cache: true | |
| - run: bazel build ... | |
| - if: failure() && runner.debug == '1' | |
| uses: mxschmitt/action-tmate@v3 | |
| examples-native_ext: | |
| name: Examples / Native Ext | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| ruby: | |
| - 3.3.9 | |
| - jruby-10.0.2.0 | |
| use-system-ruby: | |
| - true | |
| - false | |
| defaults: | |
| run: | |
| working-directory: examples/native_ext | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: bazel-contrib/setup-bazel@0.19.0 | |
| with: | |
| bazelrc: common --announce_rc --color=yes | |
| module-root: examples/native_ext | |
| repository-cache: true | |
| - if: matrix.use-system-ruby | |
| uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: ${{ matrix.ruby }} | |
| - run: echo ${{ matrix.use-system-ruby && 'system' || matrix.ruby }} > .ruby-version | |
| - run: bazel build ... | |
| - if: failure() && runner.debug == '1' | |
| uses: mxschmitt/action-tmate@v3 | |
| examples-deep-gem: | |
| name: Examples / Deep Gem | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 30 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| ruby: | |
| - jruby-10.0.2.0 | |
| os: | |
| - ubuntu-latest | |
| - macos-latest | |
| - windows-latest | |
| defaults: | |
| run: | |
| working-directory: examples/deep_gem | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: bazel-contrib/setup-bazel@0.19.0 | |
| with: | |
| # Move autoload_externally to .bazelrc once Bazel 6 support is dropped. | |
| bazelrc: common --announce_rc --color=yes --incompatible_autoload_externally= | |
| module-root: examples/deep_gem | |
| # Workaround for long path issues: https://github.com/jruby/jruby/issues/3995. | |
| output-base: ${{ matrix.os == 'windows-latest' && 'D:/b' || '' }} | |
| repository-cache: true | |
| - run: echo ${{ matrix.ruby }} > .ruby-version | |
| - if: matrix.ruby == 'system' | |
| uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: 3.2.9 | |
| - run: ./do_test | |
| examples-rails: | |
| name: Examples / Rails | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 30 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| ruby: | |
| - 3.4.8 | |
| os: | |
| - ubuntu-latest | |
| - macos-latest | |
| - windows-latest | |
| defaults: | |
| run: | |
| working-directory: examples/rails | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: bazel-contrib/setup-bazel@0.19.0 | |
| with: | |
| # Move autoload_externally to .bazelrc once Bazel 6 support is dropped. | |
| bazelrc: common --announce_rc --incompatible_autoload_externally= | |
| module-root: examples/rails | |
| repository-cache: true | |
| - run: echo ${{ matrix.ruby }} > .ruby-version | |
| - run: ./do_test | |
| examples-proto: | |
| name: Examples / Proto | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| ruby: | |
| - 3.4.5 | |
| os: | |
| - ubuntu-latest | |
| - macos-latest | |
| # Fails with an error on the grpc gem: | |
| # linking shared-object grpc/grpc_c.so | |
| # D:/_bazel/external/rules_ruby++ruby+ruby/dist/msys64/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: | |
| # cannot find -lx64-ucrt-ruby340: No such file or directory | |
| # D:/_bazel/external/rules_ruby++ruby+ruby/dist/msys64/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: | |
| # have you installed the static version of the x64-ucrt-ruby340 library ? | |
| # - windows-latest | |
| defaults: | |
| run: | |
| working-directory: examples/proto | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: bazel-contrib/setup-bazel@0.19.0 | |
| with: | |
| # Move autoload_externally to .bazelrc once Bazel 6 support is dropped. | |
| bazelrc: common --announce_rc --incompatible_autoload_externally= | |
| module-root: examples/proto | |
| repository-cache: true | |
| - run: echo ${{ matrix.ruby }} > .ruby-version | |
| - run: bazel build app | |
| release: | |
| name: Release | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| needs: | |
| - ruleset | |
| - examples-deep-gem | |
| - examples-gem | |
| - examples-jekyll | |
| - examples-native_ext | |
| - examples-rails | |
| uses: bazel-contrib/.github/.github/workflows/release_ruleset.yaml@v7 | |
| with: | |
| mount_bazel_caches: false | |
| prerelease: false | |
| release_files: rules_ruby-*.tar.gz |