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