| 
 | 1 | +FROM ubuntu:jammy  | 
 | 2 | + | 
 | 3 | +ADD https://raw.githubusercontent.com/gitpod-io/workspace-images/main/base/install-packages /usr/bin/install-packages  | 
 | 4 | +RUN chmod +x /usr/bin/install-packages  | 
 | 5 | + | 
 | 6 | +# Improve resilience during build (DNS timeouts, intermediate repo unavailability, broken proxy, etc.)  | 
 | 7 | +# Also, disable APT color output, and set the queue mode to 'host' to avoid issues with Docker's overlayfs.  | 
 | 8 | +# https://serverfault.com/questions/722893/debian-mirror-hash-sum-mismatch/743015#743015  | 
 | 9 | +RUN <<EOF cat >/etc/apt/apt.conf.d/99-gitpod  | 
 | 10 | +Acquire::Retries "10";  | 
 | 11 | +Acquire::https::Timeout "100";  | 
 | 12 | +Acquire::http::Pipeline-Depth "0";  | 
 | 13 | +Acquire::http::No-Cache=True;  | 
 | 14 | +Acquire::BrokenProxy=true;  | 
 | 15 | +APT::Color "0";  | 
 | 16 | +APT::Acquire::Queue-Mode "host";  | 
 | 17 | +Dpkg::Progress-Fancy "0";  | 
 | 18 | +EOF  | 
 | 19 | + | 
 | 20 | +RUN yes | unminimize \  | 
 | 21 | +    && install-packages \  | 
 | 22 | +    zip \  | 
 | 23 | +    unzip \  | 
 | 24 | +    bash-completion \  | 
 | 25 | +    build-essential \  | 
 | 26 | +    ninja-build \  | 
 | 27 | +    htop \  | 
 | 28 | +    iputils-ping \  | 
 | 29 | +    jq \  | 
 | 30 | +    less \  | 
 | 31 | +    locales \  | 
 | 32 | +    nano \  | 
 | 33 | +    ripgrep \  | 
 | 34 | +    software-properties-common \  | 
 | 35 | +    sudo \  | 
 | 36 | +    stow \  | 
 | 37 | +    time \  | 
 | 38 | +    emacs-nox \  | 
 | 39 | +    vim \  | 
 | 40 | +    multitail \  | 
 | 41 | +    lsof \  | 
 | 42 | +    ssl-cert \  | 
 | 43 | +    fish \  | 
 | 44 | +    zsh \  | 
 | 45 | +    python3-pip \  | 
 | 46 | +    shellcheck \  | 
 | 47 | +    curl \  | 
 | 48 | +    gnupg2 \  | 
 | 49 | +    isal \  | 
 | 50 | +    gperf \  | 
 | 51 | +    # Install tools for gsutil  | 
 | 52 | +    gcc \  | 
 | 53 | +    python3-pip \  | 
 | 54 | +    python-setuptools \  | 
 | 55 | +    # Install GraphViz to help debug terraform scripts  | 
 | 56 | +    graphviz \  | 
 | 57 | +    shellcheck \  | 
 | 58 | +    pigz \  | 
 | 59 | +    ### MySQL client ###  | 
 | 60 | +    mysql-client \  | 
 | 61 | +    ### Cypress deps  | 
 | 62 | +    libgtk2.0-0 \  | 
 | 63 | +    libgtk-3-0 \  | 
 | 64 | +    libgbm-dev \  | 
 | 65 | +    libnotify-dev \  | 
 | 66 | +    libgconf-2-4 \  | 
 | 67 | +    libnss3 \  | 
 | 68 | +    libxss1 \  | 
 | 69 | +    libasound2 \  | 
 | 70 | +    libxtst6 \  | 
 | 71 | +    xauth \  | 
 | 72 | +    openssh-client \  | 
 | 73 | +    && locale-gen en_US.UTF-8  | 
 | 74 | + | 
 | 75 | +ENV LANG=en_US.UTF-8  | 
 | 76 | + | 
 | 77 | +### Git ###  | 
 | 78 | +ADD https://raw.githubusercontent.com/gitpod-io/workspace-images/main/base/default.gitconfig /etc/gitconfig  | 
 | 79 | + | 
 | 80 | +RUN add-apt-repository -y ppa:git-core/ppa  | 
 | 81 | +# https://github.com/git-lfs/git-lfs/blob/main/INSTALLING.md  | 
 | 82 | +RUN export os=ubuntu; export dist=jammy; curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash && \  | 
 | 83 | +    install-packages git git-lfs && \  | 
 | 84 | +    git lfs install --system --skip-repo && \  | 
 | 85 | +    chmod 644 /etc/gitconfig  | 
 | 86 | + | 
 | 87 | +ARG TARGETPLATFORM  | 
 | 88 | +ARG TARGETARCH  | 
 | 89 | +ARG TARGETOS  | 
 | 90 | + | 
 | 91 | +# Install dependencies  | 
 | 92 | +USER root  | 
 | 93 | +ARG LEEWAY_VERSION=0.8.2  | 
 | 94 | +ENV LEEWAY_MAX_PROVENANCE_BUNDLE_SIZE=8388608  | 
 | 95 | +ENV LEEWAY_WORKSPACE_ROOT=/workspace/gitpod  | 
 | 96 | +ENV LEEWAY_REMOTE_CACHE_BUCKET=leeway-cache-dev-3ac8ef5  | 
 | 97 | +ENV LEEWAY_CACHE_DIR=/workspace/.leeway/cache  | 
 | 98 | +ENV LEEWAY_BUILD_DIR=/workspace/.leeway/build  | 
 | 99 | +RUN arch=$(uname -m); \  | 
 | 100 | +    case $arch in \  | 
 | 101 | +    x86_64) arch=x86_64 ;; \  | 
 | 102 | +    aarch64|arm64) arch=arm64 ;; \  | 
 | 103 | +    *) echo "Unsupported architecture: $arch"; exit 1 ;; \  | 
 | 104 | +    esac; \  | 
 | 105 | +    cd /tmp && \  | 
 | 106 | +    curl -OsSL https://github.com/gitpod-io/leeway/releases/download/v${LEEWAY_VERSION}/leeway_${LEEWAY_VERSION}_Linux_${arch}.tar.gz && \  | 
 | 107 | +    tar -xzf leeway_${LEEWAY_VERSION}_Linux_${arch}.tar.gz && \  | 
 | 108 | +    mv leeway /usr/local/bin/leeway && \  | 
 | 109 | +    rm leeway_${LEEWAY_VERSION}_Linux_${arch}.tar.gz  | 
 | 110 | + | 
 | 111 | + | 
 | 112 | +### cloud_sql_proxy ###  | 
 | 113 | +ARG CLOUD_SQL_PROXY=/usr/local/bin/cloud_sql_proxy  | 
 | 114 | +RUN curl -fsSL https://dl.google.com/cloudsql/cloud_sql_proxy.linux.${TARGETARCH} > $CLOUD_SQL_PROXY \  | 
 | 115 | +    && chmod +x $CLOUD_SQL_PROXY  | 
 | 116 | + | 
 | 117 | +### Helm3 ###  | 
 | 118 | +RUN mkdir -p /tmp/helm/ \  | 
 | 119 | +    && curl -fsSL https://get.helm.sh/helm-v3.8.1-linux-${TARGETARCH}.tar.gz | tar -xzvC /tmp/helm/ --strip-components=1 \  | 
 | 120 | +    && cp /tmp/helm/helm /usr/local/bin/helm \  | 
 | 121 | +    && ln -s /usr/local/bin/helm /usr/local/bin/helm3 \  | 
 | 122 | +    && rm -rf /tmp/helm/ \  | 
 | 123 | +    && helm completion bash > /usr/share/bash-completion/completions/helm  | 
 | 124 | + | 
 | 125 | +### kubectl ###  | 
 | 126 | +RUN curl -fsSL -o /usr/bin/kubectl "https://dl.k8s.io/release/v1.28.9/bin/linux/${TARGETARCH}/kubectl" && chmod +x /usr/bin/kubectl \  | 
 | 127 | +    && kubectl completion bash > /usr/share/bash-completion/completions/kubectl  | 
 | 128 | + | 
 | 129 | +RUN curl -fsSL -o /usr/bin/kubectx https://raw.githubusercontent.com/ahmetb/kubectx/master/kubectx && chmod +x /usr/bin/kubectx \  | 
 | 130 | +    && curl -fsSL -o /usr/bin/kubens  https://raw.githubusercontent.com/ahmetb/kubectx/master/kubens  && chmod +x /usr/bin/kubens  | 
 | 131 | + | 
 | 132 | +RUN curl -fsSL https://github.com/kubernetes-sigs/kubebuilder/releases/download/v2.3.2/kubebuilder_2.3.2_linux_${TARGETARCH}.tar.gz | tar -xz -C /tmp/ \  | 
 | 133 | +    && sudo mkdir -p /usr/local/kubebuilder \  | 
 | 134 | +    && sudo mv /tmp/kubebuilder_2.3.2_linux_${TARGETARCH}/* /usr/local/kubebuilder \  | 
 | 135 | +    && rm -rf /tmp/*  | 
 | 136 | + | 
 | 137 | +RUN curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/focal.gpg | sudo apt-key add -  | 
 | 138 | + | 
 | 139 | +### CertManager's cmctl  | 
 | 140 | +RUN cd /usr/bin && curl -fsSL https://github.com/cert-manager/cert-manager/releases/download/v1.13.0/cmctl-linux-amd64.tar.gz | tar xzv --no-anchored cmctl  | 
 | 141 | + | 
 | 142 | +# gokart  | 
 | 143 | +RUN cd /usr/bin && curl -fsSL https://github.com/praetorian-inc/gokart/releases/download/v0.4.0/gokart_0.4.0_linux_x86_64.tar.gz | tar xzv --no-anchored gokart  | 
 | 144 | + | 
 | 145 | +# evans (gRPC client)  | 
 | 146 | +RUN cd /usr/bin && curl -fsSL https://github.com/ktr0731/evans/releases/download/v0.10.6/evans_linux_${TARGETARCH}.tar.gz | tar xz evans  | 
 | 147 | + | 
 | 148 | +# dazzle  | 
 | 149 | +RUN cd /usr/bin && curl -fsSL https://github.com/gitpod-io/dazzle/releases/download/v0.1.12/dazzle_0.1.12_Linux_x86_64.tar.gz | tar xz  | 
 | 150 | + | 
 | 151 | +# yq - jq for YAML files  | 
 | 152 | +# Note: we rely on version 3.x.x in various places, 4.x breaks this!  | 
 | 153 | +RUN cd /usr/bin && curl -fsSL https://github.com/mikefarah/yq/releases/download/3.4.1/yq_linux_${TARGETARCH} > yq && chmod +x yq  | 
 | 154 | +# yq4 as separate binary  | 
 | 155 | +RUN cd /usr/bin && curl -fsSL https://github.com/mikefarah/yq/releases/download/v4.23.1/yq_linux_${TARGETARCH} > yq4 && chmod +x yq4  | 
 | 156 | + | 
 | 157 | +# release helper  | 
 | 158 | +RUN cd /usr/bin && curl -fsSL https://github.com/c4milo/github-release/releases/download/v1.1.0/github-release_v1.1.0_linux_${TARGETARCH}.tar.gz | tar xz  | 
 | 159 | + | 
 | 160 | +### Protobuf  | 
 | 161 | +RUN arch=$(uname -m); \  | 
 | 162 | +    case $arch in \  | 
 | 163 | +    x86_64) arch=x86_64 ;; \  | 
 | 164 | +    aarch64|arm64) arch=aarch_64 ;; \  | 
 | 165 | +    *) echo "Unsupported architecture: $arch"; exit 1 ;; \  | 
 | 166 | +    esac; \  | 
 | 167 | +    tmpdir=$(mktemp -d) \  | 
 | 168 | +    && curl -fsSL -o $tmpdir/protoc.zip https://github.com/protocolbuffers/protobuf/releases/download/v3.20.1/protoc-3.20.1-linux-${arch}.zip \  | 
 | 169 | +    && mkdir -p /usr/lib/protoc && cd /usr/lib/protoc && unzip $tmpdir/protoc.zip \  | 
 | 170 | +    && chmod -R o+r+x /usr/lib/protoc/include \  | 
 | 171 | +    && chmod -R +x /usr/lib/protoc/bin \  | 
 | 172 | +    && ln -s /usr/lib/protoc/bin/* /usr/bin \  | 
 | 173 | +    && rm -rf $tmpdir  | 
 | 174 | + | 
 | 175 | +### Toxiproxy CLI  | 
 | 176 | +RUN curl -fsSL -o /usr/bin/toxiproxy https://github.com/Shopify/toxiproxy/releases/download/v2.4.0/toxiproxy-cli-linux-${TARGETARCH} \  | 
 | 177 | +    && chmod +x /usr/bin/toxiproxy  | 
 | 178 | + | 
 | 179 | +### libseccomp > 2.5.2  | 
 | 180 | +RUN cd $(mktemp -d) \  | 
 | 181 | +    && curl -fsSL https://github.com/seccomp/libseccomp/releases/download/v2.5.4/libseccomp-2.5.4.tar.gz | tar xz \  | 
 | 182 | +    && cd libseccomp-2.5.4 && ./configure && make && make install  | 
 | 183 | + | 
 | 184 | + | 
 | 185 | + | 
 | 186 | +RUN curl -sSL "https://awscli.amazonaws.com/awscli-exe-linux-$(arch).zip" -o awscliv2.zip && \  | 
 | 187 | +    unzip -q awscliv2.zip && \  | 
 | 188 | +    ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update && \  | 
 | 189 | +    rm -rf awscliv2.zip ./aws  | 
 | 190 | + | 
 | 191 | +ENV GO_VERSION=1.22.2  | 
 | 192 | +ENV GOPATH=/root/go-packages  | 
 | 193 | +ENV GOROOT=/root/go  | 
 | 194 | +ENV PATH=$GOROOT/bin:$GOPATH/bin:$PATH  | 
 | 195 | + | 
 | 196 | +RUN mkdir -p $GOROOT && \  | 
 | 197 | +    cd /root && \  | 
 | 198 | +    curl -fsSL https://dl.google.com/go/go$GO_VERSION.${TARGETOS}-${TARGETARCH}.tar.gz | tar xzs  | 
 | 199 | +RUN go install github.com/go-delve/delve/cmd/dlv@latest  | 
 | 200 | + | 
 | 201 | +# Install codecov uploader  | 
 | 202 | +# https://about.codecov.io/blog/introducing-codecovs-new-uploader  | 
 | 203 | +RUN curl -fsSL https://uploader.codecov.io/latest/codecov-linux -o /usr/local/bin/codecov \  | 
 | 204 | +    && chmod +x /usr/local/bin/codecov  | 
 | 205 | + | 
 | 206 | + | 
 | 207 | +# gh (Github CLI) binary:  | 
 | 208 | +RUN cd /usr/bin && curl -fsSL https://github.com/cli/cli/releases/download/v2.35.0/gh_2.35.0_linux_${TARGETARCH}.tar.gz \  | 
 | 209 | +    | tar xzv --strip-components=2 gh_2.35.0_linux_${TARGETARCH}/bin/gh  | 
 | 210 | + | 
 | 211 | +# Install observability-related binaries  | 
 | 212 | +ARG PROM_VERSION="2.36.0"  | 
 | 213 | +RUN curl -LO https://github.com/prometheus/prometheus/releases/download/v${PROM_VERSION}/prometheus-${PROM_VERSION}.linux-${TARGETARCH}.tar.gz && \  | 
 | 214 | +    tar -xzvf prometheus-${PROM_VERSION}.linux-${TARGETARCH}.tar.gz && \  | 
 | 215 | +    mv prometheus-${PROM_VERSION}.linux-${TARGETARCH}/promtool /usr/local/bin/promtool && \  | 
 | 216 | +    rm -rf prometheus-${PROM_VERSION}.linux-${TARGETARCH}/ && \  | 
 | 217 | +    rm -f prometheus-${PROM_VERSION}.linux-${TARGETARCH}.tar.gz  | 
 | 218 | + | 
 | 219 | +ARG JSONNET_BUNDLER_VERSION="0.4.0"  | 
 | 220 | +RUN curl -fsSL -o jb https://github.com/jsonnet-bundler/jsonnet-bundler/releases/download/v${JSONNET_BUNDLER_VERSION}/jb-linux-${TARGETARCH} && \  | 
 | 221 | +    chmod +x jb && mv jb /usr/local/bin  | 
 | 222 | + | 
 | 223 | +ARG JSONNET_VERSION="0.17.0"  | 
 | 224 | +RUN curl -fsSLO https://github.com/google/go-jsonnet/releases/download/v${JSONNET_VERSION}/go-jsonnet_${JSONNET_VERSION}_Linux_x86_64.tar.gz && \  | 
 | 225 | +    tar -xzvf go-jsonnet_${JSONNET_VERSION}_Linux_x86_64.tar.gz && \  | 
 | 226 | +    mv jsonnet /usr/local/bin/jsonnet && \  | 
 | 227 | +    mv jsonnetfmt /usr/local/bin/jsonnetfmt && \  | 
 | 228 | +    tar -tzf go-jsonnet_${JSONNET_VERSION}_Linux_x86_64.tar.gz | xargs rm -f && \  | 
 | 229 | +    rm -f go-jsonnet_${JSONNET_VERSION}_Linux_x86_64.tar.gz  | 
 | 230 | + | 
 | 231 | +ARG GOJSONTOYAML_VERSION="0.1.0"  | 
 | 232 | +RUN curl -fsSLO https://github.com/brancz/gojsontoyaml/releases/download/v${GOJSONTOYAML_VERSION}/gojsontoyaml_${GOJSONTOYAML_VERSION}_linux_${TARGETARCH}.tar.gz && \  | 
 | 233 | +    tar -xzvf gojsontoyaml_${GOJSONTOYAML_VERSION}_linux_${TARGETARCH}.tar.gz && \  | 
 | 234 | +    mv gojsontoyaml /usr/local/bin/gojsontoyaml && \  | 
 | 235 | +    tar -tzf gojsontoyaml_${GOJSONTOYAML_VERSION}_linux_${TARGETARCH}.tar.gz | xargs rm -f && \  | 
 | 236 | +    rm -f gojsontoyaml_${GOJSONTOYAML_VERSION}_linux_${TARGETARCH}.tar.gz  | 
 | 237 | + | 
 | 238 | +# So we can parse the report.html output by leeway, and remove the output produced by this image build  | 
 | 239 | +# why? it's too verbose, exceeding the Github Actions summary limit  | 
 | 240 | +RUN go install github.com/ericchiang/ [email protected]  | 
 | 241 | + | 
 | 242 | +# Install oci-tool  | 
 | 243 | +RUN curl -fsSL https://github.com/csweichel/oci-tool/releases/download/v0.2.0/oci-tool_0.2.0_linux_${TARGETARCH}.tar.gz | tar xz -C /usr/local/bin \  | 
 | 244 | +    && chmod +x /usr/local/bin/oci-tool  | 
 | 245 | + | 
 | 246 | +# Install golangci-lint  | 
 | 247 | +RUN go install -v github.com/golangci/golangci-lint/cmd/golangci-lint@latest  | 
 | 248 | + | 
 | 249 | +ENV USE_GKE_GCLOUD_AUTH_PLUGIN=True  | 
 | 250 | + | 
 | 251 | +# create completions  | 
 | 252 | +RUN mkdir -p /root/.bashrc.d && \  | 
 | 253 | +    (echo; echo "source /etc/bash_completion"; echo) >> /root/.bashrc && \  | 
 | 254 | +    (echo; echo "for i in \$(ls -A \$HOME/.bashrc.d/); do source \$HOME/.bashrc.d/\$i; done"; echo) >> /root/.bashrc && \  | 
 | 255 | +    mkdir -p /root/.local/share/bash-completion/completions  | 
 | 256 | + | 
 | 257 | +RUN { echo && echo "PS1='\[\033[01;32m\]\u\[\033[00m\] \[\033[01;34m\]\w\[\033[00m\]\$(__git_ps1 \" (%s)\") $ '" ; } >> /root/.bashrc  | 
 | 258 | + | 
 | 259 | +## Register leeway autocompletion in bashrc  | 
 | 260 | +RUN bash -c "echo . \<\(leeway bash-completion\) >> /root/.bashrc"  | 
 | 261 | + | 
 | 262 | +### Google Cloud ###  | 
 | 263 | +# not installed via repository as then 'docker-credential-gcr' is not available  | 
 | 264 | +ARG GCS_DIR=/opt/google-cloud-sdk  | 
 | 265 | +ENV PATH=$GCS_DIR/bin:$PATH  | 
 | 266 | +RUN arch=$(uname -m); \  | 
 | 267 | +    case $arch in \  | 
 | 268 | +    x86_64) arch=x86_64 ;; \  | 
 | 269 | +    aarch64|arm64) arch=arm ;; \  | 
 | 270 | +    *) echo "Unsupported architecture: $arch"; exit 1 ;; \  | 
 | 271 | +    esac; \  | 
 | 272 | +    mkdir -p $GCS_DIR \  | 
 | 273 | +    && curl -fsSL https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-472.0.0-linux-${arch}.tar.gz \  | 
 | 274 | +    | tar -xzC /opt \  | 
 | 275 | +    && /opt/google-cloud-sdk/install.sh --quiet --usage-reporting=false --bash-completion=true \  | 
 | 276 | +    --additional-components gke-gcloud-auth-plugin docker-credential-gcr alpha beta \  | 
 | 277 | +    # needed for access to our private registries  | 
 | 278 | +    && docker-credential-gcr configure-docker  | 
 | 279 | + | 
 | 280 | +RUN sudo python3 -m pip uninstall crcmod; sudo python3 -m pip install --no-cache-dir -U crcmod pre-commit  | 
 | 281 | + | 
 | 282 | + | 
 | 283 | +ENV DB_HOST=127.0.0.1  | 
 | 284 | + | 
 | 285 | + | 
 | 286 | +# Install Terraform  | 
 | 287 | +ARG RELEASE_URL="https://releases.hashicorp.com/terraform/1.8.1/terraform_1.8.1_linux_${TARGETARCH}.zip"  | 
 | 288 | +RUN mkdir -p ~/.terraform \  | 
 | 289 | +    && cd ~/.terraform \  | 
 | 290 | +    && curl -fsSL -o terraform_linux_${TARGETARCH}.zip ${RELEASE_URL} \  | 
 | 291 | +    && unzip *.zip \  | 
 | 292 | +    && rm -f *.zip \  | 
 | 293 | +    && printf "terraform -install-autocomplete 2> /dev/null\n" >>~/.bashrc  | 
 | 294 | + | 
 | 295 | +## Java  | 
 | 296 | +ENV JAVA_VERSION=11.0.23.fx-zulu  | 
 | 297 | +RUN curl -fsSL "https://get.sdkman.io" | bash \  | 
 | 298 | +    && bash -c ". /root/.sdkman/bin/sdkman-init.sh \  | 
 | 299 | +    && sed -i 's/sdkman_selfupdate_enable=true/sdkman_selfupdate_enable=false/g' /root/.sdkman/etc/config \  | 
 | 300 | +    && sed -i 's/sdkman_selfupdate_feature=true/sdkman_selfupdate_feature=false/g' /root/.sdkman/etc/config \  | 
 | 301 | +    && sdk install java ${JAVA_VERSION} \  | 
 | 302 | +    && sdk default java ${JAVA_VERSION} \  | 
 | 303 | +    && sdk install gradle \  | 
 | 304 | +    && sdk install maven \  | 
 | 305 | +    && sdk flush archives \  | 
 | 306 | +    && sdk flush temp \  | 
 | 307 | +    && mkdir /root/.m2 \  | 
 | 308 | +    && printf '<settings>\n  <localRepository>/workspace/m2-repository/</localRepository>\n</settings>\n' > /root/.m2/settings.xml \  | 
 | 309 | +    && echo 'export SDKMAN_DIR=\"/root/.sdkman\"' >> /root/.bashrc.d/99-java \  | 
 | 310 | +    && echo '[[ -s \"/root/.sdkman/bin/sdkman-init.sh\" ]] && source \"/root/.sdkman/bin/sdkman-init.sh\"' >> /root/.bashrc.d/99-java"  | 
 | 311 | +# above, we are adding the sdkman init to .bashrc (executing sdkman-init.sh does that), because one is executed on interactive shells, the other for non-interactive shells (e.g. plugin-host)  | 
 | 312 | +ENV GRADLE_USER_HOME=/workspace/.gradle/  | 
 | 313 | + | 
 | 314 | +ENV NODE_VERSION=18.20.4  | 
 | 315 | + | 
 | 316 | +ENV PNPM_HOME=/root/.pnpm  | 
 | 317 | +ENV PATH=/root/.nvm/versions/node/v${NODE_VERSION}/bin:/root/.yarn/bin:${PNPM_HOME}:$PATH  | 
 | 318 | +ENV HOME=/root  | 
 | 319 | +RUN curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash \  | 
 | 320 | +    && bash -c ". $HOME/.nvm/nvm.sh \  | 
 | 321 | +    && nvm install v${NODE_VERSION} \  | 
 | 322 | +    && nvm alias default v${NODE_VERSION} \  | 
 | 323 | +    && npm install -g typescript yarn pnpm node-gyp"  | 
 | 324 | + | 
 | 325 | +ENV PATH=$PATH:/root/.aws-iam:/root/.terraform:/workspace/bin  | 
 | 326 | + | 
 | 327 | +### Telepresence ###  | 
 | 328 | +RUN curl -fsSL https://packagecloud.io/datawireio/telepresence/gpgkey | apt-key add - \  | 
 | 329 | +    # 'cosmic' not supported  | 
 | 330 | +    && add-apt-repository -yu "deb https://packagecloud.io/datawireio/telepresence/ubuntu/ bionic main" \  | 
 | 331 | +    # 0.95 (current at the time of this commit) is broken  | 
 | 332 | +    && install-packages \  | 
 | 333 | +    iproute2 \  | 
 | 334 | +    iptables \  | 
 | 335 | +    net-tools \  | 
 | 336 | +    socat \  | 
 | 337 | +    telepresence=0.109  | 
 | 338 | + | 
 | 339 | +# Install pre-commit hooks under /workspace during prebuilds  | 
 | 340 | +ENV PRE_COMMIT_HOME=/workspace/.pre-commit  | 
 | 341 | + | 
 | 342 | +# Setting the environment variable here so that it will be accessible to all tasks and  | 
 | 343 | +# terminal sessions in Gitpod workspaces.  | 
 | 344 | +ENV PREVIEW_ENV_DEV_SA_KEY_PATH=/root/.config/gcloud/sa.json  | 
 | 345 | +ENV GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES=1  | 
0 commit comments