blob: 895522b02388ecdb2419d516879497adf504ab5e [file] [log] [blame]
# Build protoc. Source: https://gist.github.com/rizo/513849f35178d19a13adcddf2d045a19.
FROM golang:1.8.3-alpine3.6 as protoc-builder
# System setup
RUN apk update && apk add git curl build-base autoconf automake libtool
# Install protoc
ENV PROTOBUF_URL https://github.com/google/protobuf/releases/download/v3.6.1/protobuf-cpp-3.6.1.tar.gz
RUN curl -L -o /tmp/protobuf.tar.gz $PROTOBUF_URL
WORKDIR /tmp/
RUN tar xvzf protobuf.tar.gz
WORKDIR /tmp/protobuf-3.6.1
RUN mkdir /export
RUN ./autogen.sh && \
./configure --prefix=/export && \
make -j 3 && \
make check && \
make install
# Export dependencies
RUN cp /usr/lib/libstdc++* /export/lib/
RUN cp /usr/lib/libgcc_s* /export/lib/
FROM docker:stable-dind
RUN apk update && \
apk add ca-certificates wget git unzip
# Install Go.
RUN cd $(mktemp -d) && \
wget https://dl.google.com/go/go1.13.4.linux-amd64.tar.gz && \
tar xvzf go1.13.4.linux-amd64.tar.gz && \
mv go /go
ENV PATH="${PATH}:/go/bin"
# Source: https://stackoverflow.com/questions/34729748/installed-go-binary-not-found-in-path-on-alpine-linux-docker
RUN mkdir /lib64 && ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2
RUN go version
# Install python and pip.
RUN apk add python python3 py-pip py3-pip py-virtualenv py3-virtualenv python2-dev python3-dev libffi-dev
RUN python --version
RUN python3 --version
RUN pip --version
RUN pip3 --version
RUN virtualenv --version
# Install protoc.
COPY --from=protoc-builder /export /usr
RUN protoc --version
# Install Go tools.
RUN go get \
github.com/golang/protobuf/protoc-gen-go \
golang.org/x/lint/golint \
golang.org/x/tools/cmd/goimports \
honnef.co/go/tools/cmd/staticcheck \
github.com/golang/protobuf/protoc-gen-go \
github.com/googleapis/gapic-generator-go/cmd/protoc-gen-go_gapic \
golang.org/x/review/git-codereview
ENV PATH="${PATH}:/root/go/bin"
# Install bash and ssh tools (needed to run regen.sh etc).
RUN apk add bash openssh openssh-client
# Source: http://debuggable.com/posts/disable-strict-host-checking-for-git-clone:49896ff3-0ac0-4263-9703-1eae4834cda3
RUN mkdir /root/.ssh && echo -e "Host github.com\n\tStrictHostKeyChecking no\n" >> /root/.ssh/config
RUN which bash
# Install tools necessary for artman.
RUN apk add alpine-sdk build-base openssl-dev
RUN which gcc
RUN pip install googleapis-artman
RUN which artman
RUN echo -e '#!/bin/bash\n\
set -ex\n\
echo "https://$GITHUB_USERNAME:$GITHUB_ACCESS_TOKEN@github.com" > ~/.git-credentials \n\
dockerd-entrypoint.sh &\n\
unset DOCKER_HOST\n\
go mod download & # download deps whilst we wait for dockerd to start \n\
sleep 15 # wait for docker to start\n\
docker ps\n\
docker pull googleapis/artman:latest & # download latest artman whilst we wait for genbot to start \n\
go run cloud.google.com/go/internal/gapicgen/cmd/genbot \
--githubAccessToken=$GITHUB_ACCESS_TOKEN \
--githubUsername=$GITHUB_USERNAME \
--githubName="$GITHUB_NAME" \
--githubEmail=$GITHUB_EMAIL \
--gerritCookieName=$GERRIT_COOKIE_NAME \
--gerritCookieValue=$GERRIT_COOKIE_VALUE \n\
' >> /run.sh
RUN chmod a+x /run.sh
WORKDIR /gapicgen
CMD ["bash", "-c", "/run.sh"]