diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 5872c3a..2d6558c 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -19,34 +19,35 @@ jobs: strategy: fail-fast: false matrix: + # Ruby 3.4 requires BASERUBY 3.0 entry: - - { os: 'lunar', baseruby: '3.1', tag: 'gcc-13', extras: 'g++-13' } - - { os: 'jammy', baseruby: '3.0', tag: 'gcc-12', extras: 'g++-12' } - - { os: 'focal', baseruby: '2.7', tag: 'gcc-11', extras: 'g++-11' } - - { os: 'focal', baseruby: '2.7', tag: 'gcc-10', extras: 'g++-10' } - - { os: 'focal', baseruby: '2.7', tag: 'gcc-9', extras: 'g++-9' } - - { os: 'focal', baseruby: '2.7', tag: 'gcc-8', extras: 'g++-8' } - - { os: 'focal', baseruby: '2.7', tag: 'gcc-7', extras: 'g++-7' } + - { os: 'lunar', system_ruby: '3.1', tag: 'gcc-13', extras: 'g++-13' } + - { os: 'jammy', system_ruby: '3.0', tag: 'gcc-12', extras: 'g++-12' } + - { os: 'focal', build_ruby: '3.0', tag: 'gcc-11', extras: 'g++-11' } + - { os: 'focal', build_ruby: '3.0', tag: 'gcc-10', extras: 'g++-10' } + - { os: 'focal', build_ruby: '3.0', tag: 'gcc-9', extras: 'g++-9' } + - { os: 'focal', build_ruby: '3.0', tag: 'gcc-8', extras: 'g++-8' } + - { os: 'focal', build_ruby: '3.0', tag: 'gcc-7', extras: 'g++-7' } # The clang-14, 13 arm64 are not available. - - { os: 'jammy', baseruby: '3.0', tag: 'clang-18', extras: 'llvm-18', platforms: 'linux/amd64' } - - { os: 'jammy', baseruby: '3.0', tag: 'clang-17', extras: 'llvm-17', platforms: 'linux/amd64' } - - { os: 'jammy', baseruby: '3.0', tag: 'clang-16', extras: 'llvm-16', platforms: 'linux/amd64' } - - { os: 'focal', baseruby: '2.7', tag: 'clang-15', extras: 'llvm-15', platforms: 'linux/amd64' } - - { os: 'focal', baseruby: '2.7', tag: 'clang-14', extras: 'llvm-14', platforms: 'linux/amd64' } - - { os: 'focal', baseruby: '2.7', tag: 'clang-13', extras: 'llvm-13', platforms: 'linux/amd64' } - - { os: 'focal', baseruby: '2.7', tag: 'clang-12', extras: 'llvm-12' } - - { os: 'focal', baseruby: '2.7', tag: 'clang-11', extras: 'llvm-11' } - - { os: 'focal', baseruby: '2.7', tag: 'clang-10', extras: 'llvm-10' } - - { os: 'focal', baseruby: '2.7', tag: 'clang-9', extras: 'llvm-9' } - - { os: 'focal', baseruby: '2.7', tag: 'clang-8', extras: 'llvm-8' } - - { os: 'focal', baseruby: '2.7', tag: 'clang-7', extras: 'llvm-7' } - - { os: 'focal', baseruby: '2.7', tag: 'clang-6.0', extras: 'llvm-6.0' } + - { os: 'jammy', system_ruby: '3.0', tag: 'clang-18', extras: 'llvm-18', platforms: 'linux/amd64' } + - { os: 'jammy', system_ruby: '3.0', tag: 'clang-17', extras: 'llvm-17', platforms: 'linux/amd64' } + - { os: 'jammy', system_ruby: '3.0', tag: 'clang-16', extras: 'llvm-16', platforms: 'linux/amd64' } + - { os: 'focal', build_ruby: '3.0', tag: 'clang-15', extras: 'llvm-15', platforms: 'linux/amd64' } + - { os: 'focal', build_ruby: '3.0', tag: 'clang-14', extras: 'llvm-14', platforms: 'linux/amd64' } + - { os: 'focal', build_ruby: '3.0', tag: 'clang-13', extras: 'llvm-13', platforms: 'linux/amd64' } + - { os: 'focal', build_ruby: '3.0', tag: 'clang-12', extras: 'llvm-12' } + - { os: 'focal', build_ruby: '3.0', tag: 'clang-11', extras: 'llvm-11' } + - { os: 'focal', build_ruby: '3.0', tag: 'clang-10', extras: 'llvm-10' } + - { os: 'focal', build_ruby: '3.0', tag: 'clang-9', extras: 'llvm-9' } + - { os: 'focal', build_ruby: '3.0', tag: 'clang-8', extras: 'llvm-8' } + - { os: 'focal', build_ruby: '3.0', tag: 'clang-7', extras: 'llvm-7' } + - { os: 'focal', build_ruby: '3.0', tag: 'clang-6.0', extras: 'llvm-6.0' } - - { os: 'focal', baseruby: '2.7', tag: 'mingw-w64' } - - { os: 'focal', baseruby: '2.7', tag: 'crossbuild-essential-arm64' } - - { os: 'focal', baseruby: '2.7', tag: 'crossbuild-essential-ppc64el' } - - { os: 'focal', baseruby: '2.7', tag: 'crossbuild-essential-s390x' } + - { os: 'focal', build_ruby: '3.0', tag: 'mingw-w64' } + - { os: 'focal', build_ruby: '3.0', tag: 'crossbuild-essential-arm64' } + - { os: 'focal', build_ruby: '3.0', tag: 'crossbuild-essential-ppc64el' } + - { os: 'focal', build_ruby: '3.0', tag: 'crossbuild-essential-s390x' } name: Publish ${{ matrix.entry.tag }} runs-on: ubuntu-latest @@ -58,11 +59,24 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.ACCESS_TOKEN }} registry: ghcr.io + - name: Resolve build_ruby version + uses: ruby/setup-ruby@22fdc77bf4148f810455b226c90fb81b5cbc00a7 # v1.171.0 + with: + ruby-version: '${{ matrix.entry.build_ruby }}' + bundler: none + if: ${{ matrix.entry.build_ruby != '' }} + - name: Set build_ruby version + id: build_ruby + run: ruby -e 'puts "::set-output name=version::#{RUBY_VERSION}"' + if: ${{ matrix.entry.build_ruby != '' }} + - name: Debug + run: echo '${{ steps.build_ruby.outputs.version }}' - uses: docker/build-push-action@v4 with: build-args: | version=${{ matrix.entry.os }} - baseruby=${{ matrix.entry.baseruby }} + build_ruby=${{ steps.build_ruby.outputs.version }} + system_ruby=${{ matrix.entry.system_ruby }} packages=${{ matrix.entry.tag }} ${{ matrix.entry.extras }} cache-from: type=gha cache-to: type=gha diff --git a/Dockerfile b/Dockerfile index fbde448..058416c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,8 @@ ARG os=ubuntu ARG version= ARG variant= -ARG baseruby= +ARG build_ruby= +ARG system_ruby= ARG packages= FROM ${os}:${version}${variant} as assets @@ -46,7 +47,8 @@ RUN wget \ -y FROM ${os}:${version}${variant} as compilers -ARG baseruby +ARG build_ruby +ARG system_ruby ARG packages LABEL maintainer=shyouhei@ruby-lang.org @@ -62,9 +64,10 @@ ENV PATH=${PATH}:/rust/cargo/bin RUN set -ex \ && apt-get update \ && apt-get install ${packages} \ - libjemalloc-dev openssl libyaml-dev ruby tzdata valgrind sudo docker.io \ + libjemalloc-dev openssl libyaml-dev tzdata valgrind sudo docker.io \ libreadline-dev libcapstone-dev \ - && apt-get build-dep ruby${baseruby} + && bash -c "if [[ -n '$system_ruby' ]]; then apt-get install ruby${system_ruby}; fi" \ + && apt-get build-dep ruby${system_ruby} RUN adduser --disabled-password --gecos '' ci && adduser ci sudo