Skip to content

Commit

Permalink
Upgrade all docker images to rcd 1.5.0 (#364)
Browse files Browse the repository at this point in the history
  • Loading branch information
ianks authored Apr 20, 2024
1 parent 6e46234 commit 1201e85
Show file tree
Hide file tree
Showing 16 changed files with 163 additions and 231 deletions.
71 changes: 56 additions & 15 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,6 @@ name: Build and push docker images
on:
workflow_dispatch:
push:
tags:
- "v*"
branches:
- "main"

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
Expand All @@ -33,7 +29,6 @@ jobs:
- ruby_target: arm64-darwin
- ruby_target: x64-mingw32
- ruby_target: x64-mingw-ucrt
# - ruby_target: x86-mingw32
# - ruby_target: x86-linux
steps:
- uses: actions/checkout@v4
Expand Down Expand Up @@ -100,19 +95,65 @@ jobs:
cache-to: ${{ secrets.DOCKER_HUB_USERNAME }}/${{ matrix.platform.ruby_target }}:cache-${{ steps.vars.outputs.rb-sys-version }}

- name: Run tests
shell: bash
run: |
echo "::group::Install deps"
rb_sys_dock_cache_dir="$HOME/.cache/rb-sys-dock"
sudo chmod 777 tmp/oxi-test
cd tmp/oxi-test
gem install rb_sys
cargo update -p rb-sys
cargo update -p rb-sys-build
cargo update -p rb-sys-env
export RB_SYS_DOCK_UID=$(id -u)
export RB_SYS_DOCK_GID=$(id -g)
export RCD_IMAGE=${{ secrets.DOCKER_HUB_USERNAME }}/${{ matrix.platform.ruby_target }}:sha-${{ github.sha }}
rb-sys-dock --platform ${{ matrix.platform.ruby_target }} --build --version "sha-$GITHUB_SHA"
sed -i "s|gem 'rb_sys', '.*'|gem 'rb_sys', path: '$rb_sys_gem_path/gem'|" Gemfile
mkdir .cargo
echo "[patch.crates-io]" >> .cargo/config.toml
for package in rb-sys rb-sys-build rb-sys-env; do
echo "$package = { git = 'https://github.com/oxidize-rb/rb-sys', rev = '$GITHUB_SHA' }" >> .cargo/config.toml
cargo update -p "$package"
done
mkdir -p "$rb_sys_dock_cache_dir"
export RB_SYS_DOCK_UID="$(id -u)"
export RB_SYS_DOCK_GID="$(id -g)"
export RB_SYS_DOCK_CACHE_DIR="$rb_sys_dock_cache_dir"
bundle install --jobs 4 --retry 3
echo "::endgroup::"
echo "::group::Cross build oxi-test gem (sha-$GITHUB_SHA)"
bundle exec rb-sys-dock --platform ${{ matrix.platform.ruby_target }} --build --tag "sha-$GITHUB_SHA" --verbose
echo "::endgroup::"
if [ -f pkg/oxi-test-0.1.0-${{ matrix.platform.ruby_target }}.gem ]; then
echo "::group::Unpack oxi-test gem for testing"
gem unpack pkg/oxi-test-0.1.0-${{ matrix.platform.ruby_target }}.gem --target=tmp
tree tmp/oxi-test-0.1.0-${{ matrix.platform.ruby_target }}
echo "::endgroup::"
echo "✅ oxi-test gem built successfully"
else
echo "::group::Debug directory"
tree .
echo "::endgroup::"
echo "❌ oxi-test gem build failed"
exit 1
fi
- name: Analyze image bloat
run: |
image="${{ secrets.DOCKER_HUB_USERNAME }}/${{ matrix.platform.ruby_target }}:sha-$GITHUB_SHA"
lowest_efficiency="0.95"
highest_user_wasted_percent="0.05"
case "${{ matrix.platform.ruby_target }}" in
x86_64-linux)
lowest_efficiency="0.82"
highest_user_wasted_percent="0.27"
;;
esac
echo "Running dive on $image with max wasted percent of $lowest_efficiency"
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive "$image" \
--ci \
--lowestEfficiency "$lowest_efficiency" \
--highestUserWastedPercent "$highest_user_wasted_percent"
- name: Docker push
uses: docker/build-push-action@v5
Expand Down
26 changes: 8 additions & 18 deletions docker/Dockerfile.aarch64-linux
Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,11 @@ ENV RUBY_TARGET="aarch64-linux" \
CMAKE_aarch64_unknown_linux_gnu="/opt/cmake/bin/cmake" \
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER="/usr/bin/aarch64-linux-gnu-gcc"

COPY setup/lib.sh /lib.sh

COPY setup/rubygems.sh /
RUN /rubygems.sh

COPY setup/cmake.sh /
RUN /cmake.sh

RUN bash -c "source /lib.sh && install_packages libclang-dev clang llvm-dev libc6-arm64-cross libc6-dev-arm64-cross"

COPY setup/rustup.sh /
RUN /rustup.sh

COPY setup/rubybashrc.sh /
RUN /rubybashrc.sh

COPY setup/rb-sys-dock.sh /
RUN /rb-sys-dock.sh
COPY setup/lib.sh setup/rustup.sh setup/rubygems.sh setup/cmake.sh setup/rubybashrc.sh setup/rb-sys-dock.sh /

RUN bash -c "source /lib.sh && install_packages libclang-dev clang llvm-dev libc6-arm64-cross libc6-dev-arm64-cross" && \
/rustup.sh && \
/rubygems.sh && \
/cmake.sh && \
/rubybashrc.sh && \
/rb-sys-dock.sh
26 changes: 8 additions & 18 deletions docker/Dockerfile.aarch64-linux-musl
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ghcr.io/rake-compiler/rake-compiler-dock-image:snapshot-mri-aarch64-linux-musl
FROM ghcr.io/rake-compiler/rake-compiler-dock-image:1.5.0-mri-aarch64-linux-musl

ENV RUBY_TARGET="aarch64-linux-musl" \
RUST_TARGET="aarch64-unknown-linux-musl" \
Expand All @@ -17,21 +17,11 @@ ENV RUBY_TARGET="aarch64-linux-musl" \
BINDGEN_EXTRA_CLANG_ARGS_aarch64_unknown_linux_musl="--sysroot=/usr/aarch64-linux-musl" \
CMAKE_aarch64_unknown_linux_musl="cmake"

COPY setup/lib.sh /lib.sh
COPY setup/lib.sh setup/rustup.sh setup/rubygems.sh setup/cmake.sh setup/rubybashrc.sh setup/rb-sys-dock.sh /

COPY setup/rustup.sh /
RUN /rustup.sh

COPY setup/rubygems.sh /
RUN /rubygems.sh

COPY setup/cmake.sh /
RUN /cmake.sh

RUN bash -c "source /lib.sh && install_packages libclang-12-dev llvm-12-dev"

COPY setup/rubybashrc.sh /
RUN /rubybashrc.sh

COPY setup/rb-sys-dock.sh /
RUN /rb-sys-dock.sh
RUN bash -c "source /lib.sh && install_packages libclang-12-dev llvm-12-dev" && \
/rustup.sh && \
/rubygems.sh && \
/cmake.sh && \
/rubybashrc.sh && \
/rb-sys-dock.sh
26 changes: 8 additions & 18 deletions docker/Dockerfile.arm-linux
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,11 @@ ENV RUBY_TARGET="arm-linux" \
PKG_CONFIG_PATH="/usr/lib/arm-linux-gnueabihf/pkgconfig" \
CMAKE_arm_unknown_linux_gnueabihf="/opt/cmake/bin/cmake"

COPY setup/lib.sh /lib.sh

COPY setup/rustup.sh /
RUN /rustup.sh

COPY setup/rubygems.sh /
RUN /rubygems.sh

COPY setup/cmake.sh /
RUN /cmake.sh

RUN bash -c "source /lib.sh && install_packages libclang-dev clang llvm-dev libc6-armhf-cross libc6-dev-armhf-cross"

COPY setup/rubybashrc.sh /
RUN /rubybashrc.sh

COPY setup/rb-sys-dock.sh /
RUN /rb-sys-dock.sh
COPY setup/lib.sh setup/rustup.sh setup/rubygems.sh setup/cmake.sh setup/rubybashrc.sh setup/rb-sys-dock.sh /

RUN bash -c "source /lib.sh && install_packages libclang-dev clang llvm-dev libc6-armhf-cross libc6-dev-armhf-cross" && \
/rustup.sh && \
/rubygems.sh && \
/cmake.sh && \
/rubybashrc.sh && \
/rb-sys-dock.sh
30 changes: 9 additions & 21 deletions docker/Dockerfile.arm64-darwin
Original file line number Diff line number Diff line change
Expand Up @@ -16,24 +16,12 @@ ENV RUBY_TARGET="arm64-darwin" \
PKG_CONFIG="aarch64-apple-darwin-pkg-config" \
CMAKE_aarch64_apple_darwin="/opt/cmake/bin/cmake"

COPY setup/lib.sh /lib.sh

COPY setup/cmake.sh /
RUN /cmake.sh

COPY setup/rustup.sh /
RUN /rustup.sh

COPY setup/rubybashrc.sh /
RUN /rubybashrc.sh

COPY setup/rb-sys-dock.sh /
RUN /rb-sys-dock.sh

COPY setup/rubygems.sh /
RUN /rubygems.sh

RUN bash -c "source /lib.sh && install_packages libclang-dev clang libc6-arm64-cross libc6-dev-arm64-cross"

COPY setup/osxcross-shebang.sh /
RUN /osxcross-shebang.sh
COPY setup/lib.sh setup/osxcross-shebang.sh setup/rustup.sh setup/rubygems.sh setup/cmake.sh setup/rubybashrc.sh setup/rb-sys-dock.sh /

RUN bash -c "source /lib.sh && install_packages libclang-dev clang libc6-arm64-cross libc6-dev-arm64-cross" && \
/rustup.sh && \
/rubygems.sh && \
/cmake.sh && \
/rubybashrc.sh && \
/rb-sys-dock.sh && \
/osxcross-shebang.sh
26 changes: 8 additions & 18 deletions docker/Dockerfile.x64-mingw-ucrt
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,11 @@ ENV RUBY_TARGET="x64-mingw-ucrt" \
PKG_CONFIG_PATH_x86_64_pc_windows_gnu="/usr/x86_64-w64-mingw32/pkgconfig" \
CMAKE_x86_64_pc_windows_gnu="/opt/cmake/bin/cmake"

COPY setup/lib.sh /lib.sh

COPY setup/rustup.sh /
RUN /rustup.sh

COPY setup/rubygems.sh /
RUN /rubygems.sh

COPY setup/cmake.sh /
RUN /cmake.sh

RUN bash -c "source /lib.sh && install_packages libclang-dev"

COPY setup/rubybashrc.sh /
RUN /rubybashrc.sh

COPY setup/rb-sys-dock.sh /
RUN /rb-sys-dock.sh
COPY setup/lib.sh setup/rustup.sh setup/rubygems.sh setup/cmake.sh setup/rubybashrc.sh setup/rb-sys-dock.sh /

RUN bash -c "source /lib.sh && install_packages libclang-dev" && \
/rustup.sh && \
/rubygems.sh && \
/cmake.sh && \
/rubybashrc.sh && \
/rb-sys-dock.sh
23 changes: 7 additions & 16 deletions docker/Dockerfile.x64-mingw32
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,12 @@ ENV RUBY_TARGET="x64-mingw32" \
PKG_CONFIG_PATH_x86_64_pc_windows_gnu="/usr/x86_64-w64-mingw32/pkgconfig" \
CMAKE_x86_64_pc_windows_gnu="/opt/cmake/bin/cmake"

COPY setup/lib.sh /lib.sh
COPY setup/lib.sh setup/rustup.sh setup/rubygems.sh setup/cmake.sh setup/rubybashrc.sh setup/rb-sys-dock.sh /

COPY setup/rustup.sh /
RUN /rustup.sh
RUN bash -c "source /lib.sh && install_packages libclang-dev" && \
/rustup.sh && \
/rubygems.sh && \
/cmake.sh && \
/rubybashrc.sh && \
/rb-sys-dock.sh

COPY setup/rubygems.sh /
RUN /rubygems.sh

COPY setup/cmake.sh /
RUN /cmake.sh

RUN bash -c "source /lib.sh && install_packages libclang-dev"

COPY setup/rubybashrc.sh /
RUN /rubybashrc.sh

COPY setup/rb-sys-dock.sh /
RUN /rb-sys-dock.sh
33 changes: 12 additions & 21 deletions docker/Dockerfile.x86-linux
Original file line number Diff line number Diff line change
Expand Up @@ -16,29 +16,20 @@ ENV RUBY_TARGET="x86-linux" \
BINDGEN_EXTRA_CLANG_ARGS_i686_unknown_linux_gnu="--sysroot=/usr -I/usr/lib/gcc/i686-redhat-linux/4.8.2/include" \
CMAKE_i686_unknown_linux_gnu="/opt/cmake/bin/cmake"

COPY setup/lib.sh /lib.sh

RUN source /lib.sh && install_packages libedit libedit-devel g++-multilib

COPY setup/rustup.sh /
RUN /rustup.sh i686-unknown-linux-gnu $RUST_TARGET $RUSTUP_DEFAULT_TOOLCHAIN
COPY setup/lib.sh setup/rustup.sh setup/rubygems.sh setup/cmake.sh setup/rubybashrc.sh setup/rb-sys-dock.sh /

RUN set -ex; \
wget https://vault.centos.org/centos/8/AppStream/x86_64/os/Packages/clang-libs-12.0.1-4.module_el8.5.0+1025+93159d6c.i686.rpm \
https://vault.centos.org/centos/8/AppStream/x86_64/os/Packages/llvm-libs-12.0.1-2.module_el8.5.0+918+ed335b90.i686.rpm \
https://vault.centos.org/centos/8/BaseOS/x86_64/os/Packages/ncurses-libs-6.1-9.20180224.el8.i686.rpm; \
rpm -Uvh --nodeps *.rpm; \
ln -s /usr/lib/libtinfo.so.6 /usr/lib/libtinfo.so.5; \
rm *.rpm;

COPY setup/rubygems.sh /
RUN /rubygems.sh

COPY setup/cmake.sh /
RUN /cmake.sh

COPY setup/rubybashrc.sh /
RUN /rubybashrc.sh

COPY setup/rb-sys-dock.sh /
RUN /rb-sys-dock.sh
rpm -Uvh --nodeps *.rpm && \
ln -s /usr/lib/libtinfo.so.6 /usr/lib/libtinfo.so.5 && \
dnf clean all && \
bash -c "source /lib.sh && install_packages libedit libedit-devel g++-multilib" && \
/rustup.sh i686-unknown-linux-gnu $RUST_TARGET $RUSTUP_DEFAULT_TOOLCHAIN && \
/rubygems.sh && \
/cmake.sh && \
/rubybashrc.sh && \
/rb-sys-dock.sh && \
rm *.rpm && \
rm -rf /var/cache/yum;
40 changes: 17 additions & 23 deletions docker/Dockerfile.x86-mingw32
Original file line number Diff line number Diff line change
@@ -1,41 +1,35 @@
FROM ghcr.io/rake-compiler/rake-compiler-dock-image:1.5.0-mri-x86-mingw32

ARG LLVM_MINGW_VERSION=20231128 \
LLVM_MINGW_SHA256=2d532648bfd202bfe5edfa8b7f6c55970f65639779f34115a9a8bfa6f7d87f0b \
LLVM_MINGW_LIBCLANG_VERSION=14.0.0

ENV RUBY_TARGET="x86-mingw32" \
RUST_TARGET="i686-pc-windows-gnu" \
RUSTUP_DEFAULT_TOOLCHAIN="stable" \
PKG_CONFIG_ALLOW_CROSS="1" \
RUSTUP_HOME="/usr/local/rustup" \
CARGO_HOME="/usr/local/cargo" \
PATH="/usr/local/cargo/bin:$PATH" \
BINDGEN_EXTRA_CLANG_ARGS_i686_pc_windows_gnu="--sysroot=/usr/i686-w64-mingw32 -I/llvm-mingw/llvm-mingw-20220323-msvcrt-i686/include -I/llvm-mingw/llvm-mingw-20220323-msvcrt-i686/lib/clang/14.0.0/include" \
BINDGEN_EXTRA_CLANG_ARGS_i686_pc_windows_gnu="--sysroot=/usr/i686-w64-mingw32 -I/llvm-mingw/llvm-mingw-${LLVM_MINGW_VERSION}-msvcrt-i686/include -I/llvm-mingw/llvm-mingw-${LLVM_MINGW_VERSION}-msvcrt-i686/lib/clang/${LLVM_MINGW_LIBCLANG_VERSION}/include" \
LIBCLANG_PATH="/usr/lib/llvm-10/lib/" \
CC_i686_pc_windows_gnu="i686-w64-mingw32-gcc" \
CXX_i686_pc_windows_gnu="i686-w64-mingw32-g++" \
AR_i686_pc_windows_gnu="i686-w64-mingw32-gcc-ar" \
PKG_CONFIG_PATH_i686_pc_windows_gnu="/usr/i686-w64-mingw32/pkgconfig" \
CMAKE_i686_pc_windows_gnu="/opt/cmake/bin/cmake"

COPY setup/lib.sh /lib.sh

COPY setup/rustup.sh /
RUN /rustup.sh

COPY setup/rubygems.sh /
RUN /rubygems.sh

COPY setup/cmake.sh /
RUN /cmake.sh

RUN bash -c "source /lib.sh && install_packages libclang-dev"
COPY setup/lib.sh setup/rustup.sh setup/rubygems.sh setup/cmake.sh setup/rubybashrc.sh setup/rb-sys-dock.sh /

RUN set -ex; \
curl -Lo /llvm-mingw.zip https://github.com/mstorsjo/llvm-mingw/releases/download/20220323/llvm-mingw-20220323-msvcrt-i686.zip; \
mkdir /llvm-mingw; \
unzip /llvm-mingw.zip -d /llvm-mingw; \
rm /llvm-mingw.zip;

COPY setup/rubybashrc.sh /
RUN /rubybashrc.sh

COPY setup/rb-sys-dock.sh /
RUN /rb-sys-dock.sh
curl -Lo /llvm-mingw.zip https://github.com/mstorsjo/llvm-mingw/releases/download/${LLVM_MINGW_VERSION}/llvm-mingw-${LLVM_MINGW_VERSION}-msvcrt-i686.zip; \
echo "${LLVM_MINGW_SHA256} /llvm-mingw.zip" | sha256sum -c - && \
mkdir /llvm-mingw && \
unzip /llvm-mingw.zip -d /llvm-mingw && \
rm /llvm-mingw.zip && \
bash -c "source /lib.sh && install_packages libclang-dev" && \
/rustup.sh && \
/rubygems.sh && \
/cmake.sh && \
/rubybashrc.sh && \
/rb-sys-dock.sh
Loading

0 comments on commit 1201e85

Please sign in to comment.