github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/scripts/release.Dockerfile (about) 1 # An image with cross-compilation toolchains. 2 # 3 # The goal here is to both: 4 # 1) Better leverage OS-specific C headers 5 # 2) Be able to do releases from a CI job 6 7 # osxcross contains the MacOSX cross toolchain for xx 8 FROM crazymax/osxcross:11.3-debian AS osxcross 9 10 FROM golang:1.22-bullseye as musl-cross 11 WORKDIR /musl 12 # https://more.musl.cc/GCC-MAJOR-VERSION/HOST-ARCH-linux-musl/CROSS-ARCH-linux-musl-cross.tgz 13 RUN curl -sf https://more.musl.cc/11/x86_64-linux-musl/aarch64-linux-musl-cross.tgz | tar zxf - 14 RUN curl -sf https://more.musl.cc/11/x86_64-linux-musl/x86_64-linux-musl-cross.tgz | tar zxf - 15 16 FROM golang:1.22-bullseye 17 18 RUN apt-get update && \ 19 apt-get install -y -q --no-install-recommends \ 20 apt-transport-https \ 21 ca-certificates \ 22 curl \ 23 gnupg \ 24 lsb-release \ 25 gnupg-agent \ 26 software-properties-common \ 27 clang \ 28 lld \ 29 libc6-dev \ 30 libltdl-dev \ 31 zlib1g-dev \ 32 g++-aarch64-linux-gnu \ 33 gcc-aarch64-linux-gnu \ 34 g++-arm-linux-gnueabi \ 35 gcc-arm-linux-gnueabi \ 36 g++-mingw-w64 \ 37 gcc-mingw-w64 \ 38 parallel \ 39 && rm -rf /var/lib/apt/lists/* 40 41 # Install docker 42 RUN set -exu \ 43 # Add Docker's official GPG key: 44 && install -m 0755 -d /etc/apt/keyrings \ 45 && curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc \ 46 && chmod a+r /etc/apt/keyrings/docker.asc \ 47 # Add the repository to Apt sources: 48 && echo \ 49 "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \ 50 $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ 51 tee /etc/apt/sources.list.d/docker.list > /dev/null \ 52 && apt update \ 53 && apt install -y docker-ce-cli=5:25.0.3-1~debian.11~bullseye docker-buildx-plugin 54 55 ENV GORELEASER_VERSION=v1.24.0 56 RUN set -exu \ 57 && URL="https://github.com/goreleaser/goreleaser/releases/download/${GORELEASER_VERSION}/goreleaser_Linux_x86_64.tar.gz" \ 58 && echo goreleaser URL: $URL \ 59 && curl --silent --show-error --location --fail --retry 3 --output /tmp/goreleaser.tar.gz "${URL}" \ 60 && tar -C /tmp -xzf /tmp/goreleaser.tar.gz \ 61 && mv /tmp/goreleaser /usr/bin/ \ 62 && goreleaser --version 63 64 RUN mkdir -p /etc/apt/keyrings && \ 65 curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ 66 echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \ 67 curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \ 68 echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && \ 69 apt update && \ 70 apt install -y -q --no-install-recommends \ 71 nodejs \ 72 yarn \ 73 && rm -rf /var/lib/apt/lists/* 74 75 RUN git clone https://github.com/Homebrew/brew /home/linuxbrew/.linuxbrew 76 COPY --from=osxcross /osxcross /osxcross 77 COPY --from=musl-cross /musl /musl 78 79 ENV PATH=/home/linuxbrew/.linuxbrew/bin:/osxcross/bin:/musl/aarch64-linux-musl-cross/bin:/musl/x86_64-linux-musl-cross/bin:$PATH 80 ENV LD_LIBRARY_PATH=/osxcross/lib:$LD_LIBRARY_PATH 81 82 RUN mkdir -p ~/.windmill