| # This Docker container is used for testing on GCB. | |
| ARG GOVERSION=1 | |
| FROM golang:${GOVERSION} AS gobuilder | |
| ENV GOBIN /gobin | |
| # Install other Go tools tests depend on | |
| RUN mkdir -p /scratch/installtools | |
| ADD extension/tools/installtools/main.go /scratch/installtools/main.go | |
| RUN go run /scratch/installtools/main.go | |
| FROM node:latest | |
| # GO111MODULE=auto | |
| RUN mkdir /go | |
| COPY --from=gobuilder /gobin /go/bin | |
| COPY --from=gobuilder /usr/local/go /usr/local/go | |
| # Copy vscode-go repo from host machine to docker image. | |
| COPY . /workspace | |
| # Tests run in a Docker container as user 'node' (uid 1000), so file ownership | |
| # is changed to uid 1000 to prevent permission issues. | |
| RUN chown -R 1000:1000 /workspace | |
| # Add the default GOPATH/bin to the PATH. | |
| # Add the directories of the go tool chains to PATH. | |
| ENV PATH /go/bin:/usr/local/go/bin:${PATH} | |
| ENV DEBIAN_FRONTEND noninteractive | |
| # Force npm to prefer ipv4 - the vm we are using doesn't yet support ipv6. | |
| # TODO(hyangah): remove this when the platform works with ipv6. | |
| ENV NODE_OPTIONS --dns-result-order=ipv4first | |
| # Install xvfb jq | |
| RUN apt-get -qq update && apt-get install -qq -y libnss3 libgtk-3-dev libxss1 libasound2 xvfb libsecret-1-0 jq > /dev/null | |
| # Install gh https://stackoverflow.com/a/69477930 | |
| RUN apt update && apt install -y \ | |
| curl \ | |
| gpg | |
| RUN curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | gpg --dearmor -o /usr/share/keyrings/githubcli-archive-keyring.gpg; | |
| RUN echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | tee /etc/apt/sources.list.d/github-cli.list > /dev/null; | |
| RUN apt update && apt install -y gh; | |
| USER node | |
| WORKDIR /workspace | |
| ENTRYPOINT ["build/all.bash"] |