diff --git a/.ci/image/Dockerfile.msvc b/.ci/image/Dockerfile similarity index 85% rename from .ci/image/Dockerfile.msvc rename to .ci/image/Dockerfile index 864dc73..4e3433b 100644 --- a/.ci/image/Dockerfile.msvc +++ b/.ci/image/Dockerfile @@ -26,10 +26,38 @@ RUN set -eux; \ --accept-license \ splat \ --output /xwin; \ - rm -rf \ - /root/.xwin-cache; + # Even though this build step only exists temporary, to copy the + # final data out of, it still generates a cache entry on the Docker host. + # And to keep that to a minimum, we still delete the stuff we don't need. + rm -rf /root/.xwin-cache; -FROM dtmt-ci-base-linux as final +FROM rust:slim-bullseye as linux + +RUN set -eux; \ + apt-get update; \ + apt-get install --no-install-recommends -y \ + build-essential \ + curl \ + git \ + gpg \ + jq \ + libatk1.0-dev \ + libclang-13-dev \ + libglib2.0-dev \ + libgtk-3-dev \ + libpango1.0-dev \ + libssl-dev \ + libzstd-dev \ + pkg-config; \ + apt-get remove -y --auto-remove; \ + rm -rf /var/lib/apt/lists/*; \ + rustup default nightly + +WORKDIR /src/dtmt + +COPY lib/oodle/*.so lib/oodle/*.a /src/ + +FROM linux as msvc ENV KEYRINGS /usr/local/share/keyrings diff --git a/.ci/image/Dockerfile.linux b/.ci/image/Dockerfile.linux deleted file mode 100644 index 5cbaf5d..0000000 --- a/.ci/image/Dockerfile.linux +++ /dev/null @@ -1,25 +0,0 @@ -FROM rust:slim-bullseye - -RUN set -eux; \ - apt-get update; \ - apt-get install --no-install-recommends -y \ - build-essential \ - curl \ - git \ - gpg \ - jq \ - libatk1.0-dev \ - libclang-13-dev \ - libglib2.0-dev \ - libgtk-3-dev \ - libpango1.0-dev \ - libssl-dev \ - libzstd-dev \ - pkg-config; \ - apt-get remove -y --auto-remove; \ - rm -rf /var/lib/apt/lists/*; \ - rustup default nightly - -WORKDIR /src/dtmt - -COPY lib/oodle/*.so lib/oodle/*.a /src/ diff --git a/Justfile b/Justfile index 967619b..f9b37bc 100644 --- a/Justfile +++ b/Justfile @@ -16,16 +16,15 @@ build-image-msvc: build-image-linux: docker build -f .ci/Dockerfile.linux . -ci-image: ci-image-msvc ci-image-linux - -ci-image-msvc: - docker build -t dtmt-ci-base-msvc -f .ci/image/Dockerfile.msvc . +ci-image: + # The MSVC image depends on the Linux image. So by building that first, + # we actually build both, and cache them, so that "building" the + # Linux image afterwards merely needs to pull the cache. + docker build --target msvc -t dtmt-ci-base-msvc -f .ci/image/Dockerfile . + docker build --target linux -t dtmt-ci-base-linux -f .ci/image/Dockerfile . docker tag dtmt-ci-base-msvc registry.sclu1034.dev/dtmt-ci-base-msvc - docker push registry.sclu1034.dev/dtmt-ci-base-msvc - -ci-image-linux: - docker build -t dtmt-ci-base-linux -f .ci/image/Dockerfile.linux . docker tag dtmt-ci-base-linux registry.sclu1034.dev/dtmt-ci-base-linux + docker push registry.sclu1034.dev/dtmt-ci-base-msvc docker push registry.sclu1034.dev/dtmt-ci-base-linux set-base-pipeline: