diff --git a/.gitea/workflows/build-arch-builder.yaml b/.gitea/workflows/build-arch-builder.yaml index 6a53df0..b252303 100644 --- a/.gitea/workflows/build-arch-builder.yaml +++ b/.gitea/workflows/build-arch-builder.yaml @@ -7,13 +7,8 @@ on: - '.gitea/workflows/build-arch-builder.yaml' jobs: "Build arch-builder docker images": - runs-on: hostinger + runs-on: woryzen steps: - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - with: - driver: docker-container - name: Login to Gitea container registry uses: docker/login-action@v3 @@ -25,64 +20,83 @@ jobs: name: Build and push arch-builder base images uses: docker/build-push-action@v6 with: + builder: multiplatform-builder context: "{{defaultContext}}:arch-builder" platforms: linux/amd64 push: true pull: true tags: | "gitea.woggioni.net/woggioni/arch-builder:base" - cache-from: type=registry,ref=gitea.woggioni.net/woggioni/arch-builder:base-buildx - cache-to: type=registry,mode=max,compression=zstd,image-manifest=true,oci-mediatypes=true,ref=gitea.woggioni.net/woggioni/arch-builder:base-buildx target: base - name: Build and push arch-builder kernel images uses: docker/build-push-action@v6 with: + builder: multiplatform-builder context: "{{defaultContext}}:arch-builder" platforms: linux/amd64 push: true pull: true tags: | "gitea.woggioni.net/woggioni/arch-builder:kernel" - cache-from: type=registry,ref=gitea.woggioni.net/woggioni/arch-builder:kernel-buildx - cache-to: type=registry,mode=max,compression=zstd,image-manifest=true,oci-mediatypes=true,ref=gitea.woggioni.net/woggioni/arch-builder:kernel-buildx target: kernel - name: Build and push arch-builder rust images uses: docker/build-push-action@v6 with: + builder: multiplatform-builder context: "{{defaultContext}}:arch-builder" platforms: linux/amd64 push: true pull: true tags: | "gitea.woggioni.net/woggioni/arch-builder:rust" - cache-from: type=registry,ref=gitea.woggioni.net/woggioni/arch-builder:rust-buildx - cache-to: type=registry,mode=max,compression=zstd,image-manifest=true,oci-mediatypes=true,ref=gitea.woggioni.net/woggioni/arch-builder:rust-buildx target: rust - name: Build and push arch-builder rust full images uses: docker/build-push-action@v6 with: + builder: multiplatform-builder context: "{{defaultContext}}:arch-builder" platforms: linux/amd64 push: true pull: true tags: | "gitea.woggioni.net/woggioni/arch-builder:rust-full" - cache-from: type=registry,ref=gitea.woggioni.net/woggioni/arch-builder:rust-full-buildx - cache-to: type=registry,mode=max,compression=zstd,image-manifest=true,oci-mediatypes=true,ref=gitea.woggioni.net/woggioni/arch-builder:rust-full-buildx target: rust-full + - + name: Build and push arch-builder rust sccache images + uses: docker/build-push-action@v6 + with: + builder: multiplatform-builder + context: "{{defaultContext}}:arch-builder" + platforms: linux/amd64 + push: true + pull: true + tags: | + "gitea.woggioni.net/woggioni/arch-builder:rust-sccache" + target: rust-sccache + - + name: Build and push arch-builder rust full sccache images + uses: docker/build-push-action@v6 + with: + builder: multiplatform-builder + context: "{{defaultContext}}:arch-builder" + platforms: linux/amd64 + push: true + pull: true + tags: | + "gitea.woggioni.net/woggioni/arch-builder:rust-full-sccache" + target: rust-full-sccache - name: Build and push arch-builder gitea_act_runner images uses: docker/build-push-action@v6 with: + builder: multiplatform-builder context: "{{defaultContext}}:arch-builder" platforms: linux/amd64 push: true pull: true tags: | "gitea.woggioni.net/woggioni/arch-builder:gitea_act_runner" - cache-from: type=registry,ref=gitea.woggioni.net/woggioni/arch-builder:gitea-buildx - cache-to: type=registry,mode=max,compression=zstd,image-manifest=true,oci-mediatypes=true,ref=gitea.woggioni.net/woggioni/arch-builder:gitea-buildx target: gitea_act_runner diff --git a/arch-builder/Dockerfile b/arch-builder/Dockerfile index 4646481..9d5e2c5 100644 --- a/arch-builder/Dockerfile +++ b/arch-builder/Dockerfile @@ -81,6 +81,34 @@ WORKDIR /home/luser FROM base AS rust RUN mkdir -p /etc/cargo COPY --chown=1000:1000 config.toml /home/luser/.cargo/config.toml +RUN --mount=type=cache,target=/var/cache/pacman pacman -S --noconfirm --needed \ + rustup \ + trunk \ + llvm \ + clang + +FROM rust AS rust-full +RUN --mount=type=cache,target=/var/cache/pacman pacman -S --noconfirm --needed \ + hidapi \ + protobuf +USER luser +WORKDIR /home/luser +RUN rustup update +RUN rustup toolchain install stable-x86_64-unknown-linux-gnu --profile minimal +RUN rustup component add rustfmt +RUN rustup target add \ + x86_64-unknown-linux-musl \ + x86_64-unknown-linux-gnu \ + armv7-unknown-linux-musleabihf \ + arm-unknown-linux-musleabi \ + aarch64-unknown-linux-musl \ + aarch64-unknown-linux-gnu \ + wasm32-unknown-unknown \ + wasm32-wasip2 + +FROM base AS rust-sccache +RUN mkdir -p /etc/cargo +COPY --chown=1000:1000 config-sccache.toml /home/luser/.cargo/config.toml COPY --chown=1000:1000 sccache_config.toml /home/luser/.config/sccache/config RUN --mount=type=cache,target=/var/cache/pacman pacman -S --noconfirm --needed \ rustup \ @@ -89,7 +117,7 @@ RUN --mount=type=cache,target=/var/cache/pacman pacman -S --noconfirm --needed \ llvm \ clang -FROM rust AS rust-full +FROM rust-sccache AS rust-full-sccache RUN --mount=type=cache,target=/var/cache/pacman pacman -S --noconfirm --needed \ hidapi \ protobuf diff --git a/arch-builder/config-sccache.toml b/arch-builder/config-sccache.toml new file mode 100644 index 0000000..dd40c7b --- /dev/null +++ b/arch-builder/config-sccache.toml @@ -0,0 +1,23 @@ +[target.aarch64-unknown-linux-musl] +linker = "/opt/x-tools/aarch64-unknown-linux-musl/bin/aarch64-unknown-linux-musl-ld" +[target.x86_64-unknown-linux-musl] +linker = "/opt/x-tools/x86_64-unknown-linux-musl/bin/x86_64-unknown-linux-musl-ld" +[target.x86_64-pc-windows-gnu] +linker = "/opt/x-tools/x86_64-w64-mingw32/bin/x86_64-w64-mingw32-gcc" +[target.armv7-unknown-linux-musleabihf] +linker = "/opt/x-tools/arm-unknown-linux-musleabihf/bin/arm-unknown-linux-musleabihf-ld" + +[registries.gitea] +global-credential-providers = ["cargo:token"] +index = "sparse+https://gitea.woggioni.net/api/packages/woggioni/cargo/" + +[net] +git-fetch-with-cli = true + +[profile.release] +opt-level = 3 +lto = true +strip = true + +[build] +rustc-wrapper = "/usr/bin/sccache" diff --git a/arch-builder/config.toml b/arch-builder/config.toml index dd40c7b..9864003 100644 --- a/arch-builder/config.toml +++ b/arch-builder/config.toml @@ -18,6 +18,3 @@ git-fetch-with-cli = true opt-level = 3 lto = true strip = true - -[build] -rustc-wrapper = "/usr/bin/sccache"