File: test_ruby.yml

package info (click to toggle)
protobuf 3.25.4-2
  • links: PTS
  • area: main
  • in suites:
  • size: 45,944 kB
  • sloc: cpp: 204,199; java: 87,622; ansic: 81,204; objc: 58,434; cs: 27,303; python: 22,799; php: 11,340; ruby: 8,637; pascal: 3,325; xml: 2,333; sh: 1,331; makefile: 538; lisp: 86; awk: 17
file content (187 lines) | stat: -rw-r--r-- 8,014 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
name: Ruby Tests

on:
  workflow_call:
    inputs:
      safe-checkout:
        required: true
        description: "The SHA key for the commit we want to run over"
        type: string

permissions:
  contents: read

jobs:
  linux:
    strategy:
      fail-fast: false
      matrix:
        include:
          # Test both FFI and Native implementations on the highest and lowest
          # Ruby versions for CRuby and JRuby, but only on Bazel 5.x.
          - { name: Ruby 3.0, ruby: ruby-3.0.2 }
          - { name: Ruby 3.1, ruby: ruby-3.1.0 }
          - { name: Ruby 3.2, ruby: ruby-3.2.0, ffi: NATIVE }
          - { name: Ruby 3.3, ruby: ruby-3.3.0, ffi: NATIVE }
          # TODO Re-enable these once flakes are fixed
          #- { name: Ruby 3.2, ruby: ruby-3.2.0, ffi: FFI }
          - { name: JRuby 9.4, ruby: jruby-9.4.6.0, ffi: NATIVE }
          - { name: JRuby 9.4, ruby: jruby-9.4.6.0, ffi: FFI }

    name: Linux ${{ matrix.name }}${{ matrix.ffi == 'FFI' && ' FFI' || '' }}
    runs-on: ubuntu-latest
    steps:
      - name: Checkout pending changes
        uses: protocolbuffers/protobuf-ci/checkout@v2
        with:
          ref: ${{ inputs.safe-checkout }}
      - name: Run tests
        uses: protocolbuffers/protobuf-ci/bazel-docker@v2
        with:
          image: ${{ matrix.image || format('us-docker.pkg.dev/protobuf-build/containers/test/linux/ruby:{0}-6.3.0-384d5abe83a791c6b1ce04f5d7bc0b1f84a30d38', matrix.ruby) }}
          credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }}
          bazel-cache: ruby_linux/${{ matrix.ruby }}_${{ matrix.bazel }}
          bazel: test //ruby/... //ruby/tests:ruby_version --test_env=KOKORO_RUBY_VERSION --test_env=BAZEL=true ${{ matrix.ffi == 'FFI' && '--//ruby:ffi=enabled --test_env=PROTOCOL_BUFFERS_RUBY_IMPLEMENTATION=FFI' || '' }}

  linux-32bit:
    name: Linux 32-bit
    runs-on: ubuntu-latest
    steps:
      - name: Checkout pending changes
        uses: protocolbuffers/protobuf-ci/checkout@v2
        with:
          ref: ${{ inputs.safe-checkout }}

      - name: Cross compile protoc for i386
        id: cross-compile
        uses: protocolbuffers/protobuf-ci/cross-compile-protoc@v2
        with:
          image: us-docker.pkg.dev/protobuf-build/containers/common/linux/bazel:6.3.0-91a0ac83e968068672bc6001a4d474cfd9a50f1d
          credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }}
          architecture: linux-i386

      - name: Run tests
        uses: protocolbuffers/protobuf-ci/docker@v2
        with:
          image: i386/ruby:2.7.3-buster
          credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }}
          # Pin to Ruby 2.7 compatible bundler version.
          command: >-
            /bin/bash -cex '
            gem install bundler -v 2.4.22;
            cd /workspace/ruby;
            bundle;
            PROTOC=/workspace/${{ steps.cross-compile.outputs.protoc }} rake;
            rake clobber_package gem;
            PROTOC=/workspace/${{ steps.cross-compile.outputs.protoc }} rake test'

  linux-aarch64:
    name: Linux aarch64
    runs-on: ubuntu-latest
    steps:
      - name: Checkout pending changes
        uses: protocolbuffers/protobuf-ci/checkout@v2
        with:
          ref: ${{ inputs.safe-checkout }}

      - name: Cross compile protoc for aarch64
        id: cross-compile
        uses: protocolbuffers/protobuf-ci/cross-compile-protoc@v2
        with:
          image: us-docker.pkg.dev/protobuf-build/containers/common/linux/bazel:6.3.0-91a0ac83e968068672bc6001a4d474cfd9a50f1d
          credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }}
          architecture: linux-aarch64

      - name: Run tests
        uses: protocolbuffers/protobuf-ci/docker@v2
        with:
          image: arm64v8/ruby:2.7.3-buster
          credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }}
          # Pin to Ruby 2.7 compatible bundler version.
          command: >-
            /bin/bash -cex '
            gem install bundler -v 2.4.22;
            cd /workspace/ruby;
            bundle;
            PROTOC=/workspace/${{ steps.cross-compile.outputs.protoc }} rake;
            rake clobber_package gem;
            PROTOC=/workspace/${{ steps.cross-compile.outputs.protoc }} rake test'

  macos:
    strategy:
      fail-fast: false   # Don't cancel all jobs if one fails.
      matrix:
        include:
        # Test both FFI and Native implementations on the highest and lowest
        # Ruby versions for CRuby, but only on Bazel 5.x.
        # Quote versions numbers otherwise 3.0 will render as 3
        - { version: "2.7", ffi: NATIVE }
        # TODO Re-enable these once flakes are fixed
        #- { version: "2.7", ffi: FFI }
        - { version: "3.0" }
        - { version: "3.1" }
        - { version: "3.2", ffi: NATIVE }
        # TODO Re-enable these once flakes are fixed
        #- { version: "3.2", ffi: FFI }

    name: MacOS Ruby ${{ matrix.version }}${{ matrix.ffi == 'FFI' && ' FFI' || '' }}
    runs-on: macos-12
    steps:
      - name: Checkout pending changes
        uses: protocolbuffers/protobuf-ci/checkout@v2
        with:
          ref: ${{ inputs.safe-checkout }}

      - name: Pin Ruby version
        uses: ruby/setup-ruby@ee26e27437bde475b19a6bf8cb73c9fa658876a2 # v1.134.0
        with:
          ruby-version: ${{ matrix.version }}

      - name: Validate version
        run: ruby --version | grep ${{ matrix.version }} || (echo "Invalid Ruby version - $(ruby --version)" && exit 1)

      - name: Run tests
        uses: protocolbuffers/protobuf-ci/bazel@v2
        with:
          credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }}
          bazel-cache: ruby_macos/${{ matrix.version }}
          bazel: test //ruby/... --test_env=KOKORO_RUBY_VERSION=${{ matrix.version }} --test_env=BAZEL=true ${{ matrix.ffi == 'FFI' && '--//ruby:ffi=enabled --test_env=PROTOCOL_BUFFERS_RUBY_IMPLEMENTATION=FFI' || '' }}

  test_ruby_gems:
    strategy:
      fail-fast: false
      matrix:
        include:
          # Test both FFI and Native implementations on the highest and lowest
          # Ruby versions for CRuby and JRuby, but only on Bazel 5.x.
          - { name: Ruby 2.7, ruby: ruby-2.7.0, ffi: NATIVE }
          - { name: Ruby 2.7, ruby: ruby-2.7.0, ffi: FFI }
          - { name: Ruby 3.0, ruby: ruby-3.0.2}
          - { name: Ruby 3.1, ruby: ruby-3.1.0}
          - { name: Ruby 3.2, ruby: ruby-3.2.0, ffi: NATIVE }
          - { name: Ruby 3.2, ruby: ruby-3.2.0, ffi: FFI }
          - { name: JRuby 9.4, ruby: jruby-9.4.3.0, ffi: NATIVE }
          - { name: JRuby 9.4, ruby: jruby-9.4.3.0, ffi: FFI }
    name: Install ${{ matrix.name }}${{ matrix.ffi == 'FFI' && ' FFI' || '' }}
    runs-on: ubuntu-latest
    steps:
      - name: Checkout pending changes
        uses: protocolbuffers/protobuf-ci/checkout@v2
        with:
          ref: ${{ inputs.safe-checkout }}
      - name: Run tests
        uses: protocolbuffers/protobuf-ci/bazel-docker@v2
        with:
          image: us-docker.pkg.dev/protobuf-build/containers/test/linux/ruby:${{ matrix.ruby }}-6.3.0-66964dc8b07b6d1fc73a5cc14e59e84c1c534cea
          credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }}
          bazel-cache: ruby_install/${{ matrix.ruby }}_${{ matrix.bazel }}
          bash: >
            bazel --version;
            ruby --version;
            ./regenerate_stale_files.sh $BAZEL_FLAGS;
            bazel build //ruby:release //:protoc ${{ matrix.ffi == 'FFI' && '--//ruby:ffi=enabled' || '' }} $BAZEL_FLAGS;
            gem install bazel-bin/ruby/google-protobuf-*;
            bazel-bin/protoc --proto_path=src --proto_path=ruby/tests --proto_path=ruby --ruby_out=ruby tests/test_import_proto2.proto;
            bazel-bin/protoc --proto_path=src --proto_path=ruby/tests --proto_path=ruby --ruby_out=ruby tests/basic_test.proto;
            ${{ matrix.ffi == 'FFI' && 'PROTOCOL_BUFFERS_RUBY_IMPLEMENTATION=FFI' || '' }} ruby ruby/tests/basic.rb;
            ${{ matrix.ffi == 'FFI' && 'PROTOCOL_BUFFERS_RUBY_IMPLEMENTATION=FFI' || '' }} ruby ruby/tests/implementation.rb