From ea95040c8b01c7c236149f6f8c06508198cac34b Mon Sep 17 00:00:00 2001 From: Gianluca Arbezzano Date: Thu, 8 Oct 2020 14:26:48 +0200 Subject: [PATCH] Build binaries as part of Docker Moving the binary compilation as part of Docker we will be able to leverage the multi architecture support Docker has to provide images that can run on different architecture such as x64_86, ARM. Signed-off-by: Gianluca Arbezzano --- .dockerignore | 1 + .github/workflows/ci.yaml | 53 +++----------------------------------- cmd/tink-cli/Dockerfile | 14 +++++----- cmd/tink-server/Dockerfile | 12 ++++++--- cmd/tink-worker/Dockerfile | 13 ++++++---- 5 files changed, 28 insertions(+), 65 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..8541464a7 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +deploy diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 045d95666..904dd6a42 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -27,23 +27,6 @@ jobs: run: go test -coverprofile=coverage.txt ./... - name: upload codecov run: bash <(curl -s https://codecov.io/bash) - - name: Build binaries - run: make - - name: Upload tink-server binary - uses: actions/upload-artifact@v2 - with: - name: tink-server - path: ./cmd/tink-server/tink-server - - name: Upload tink-cli binary - uses: actions/upload-artifact@v2 - with: - name: tink-cli - path: ./cmd/tink-cli/tink-cli - - name: Upload tink-worker binary - uses: actions/upload-artifact@v2 - with: - name: tink-worker - path: ./cmd/tink-worker/tink-worker - uses: cachix/install-nix-action@v10 with: nix_path: nixpkgs=channel:nixos-unstable @@ -60,40 +43,10 @@ jobs: echo ::set-output name=tink-worker-tags::quay.io/tinkerbell/tink-worker:latest,quay.io/tinkerbell/tink-worker:sha-${GITHUB_SHA::8} - name: Checkout code uses: actions/checkout@v2 - - name: Download tink-cli binary - uses: actions/download-artifact@v2 - with: - name: tink-cli - path: ./cmd/tink-cli - - name: Download tink-server binary - uses: actions/download-artifact@v2 - with: - name: tink-server - path: ./cmd/tink-server - - name: Download tink-worker binary - uses: actions/download-artifact@v2 - with: - name: tink-worker - path: ./cmd/tink-worker - - name: set tink-worker permission - run: chmod +x ./cmd/tink-worker/tink-worker - - name: set tink-cli permission - run: chmod +x ./cmd/tink-cli/tink-cli - - name: set tink-server permission - run: chmod +x ./cmd/tink-server/tink-server - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 - - name: Login to quay.io - uses: docker/login-action@v1 - if: ${{ startsWith(github.ref, 'refs/heads/master') }} - with: - registry: quay.io - username: ${{ secrets.QUAY_USERNAME }} - password: ${{ secrets.QUAY_PASSWORD }} - name: quay.io/tinkerbell/tink uses: docker/build-push-action@v2 with: - context: ./cmd/tink-server/ + context: . file: ./cmd/tink-server/Dockerfile cache-from: type=registry,ref=quay.io/tinkerbell/tink:latest push: ${{ startsWith(github.ref, 'refs/heads/master') }} @@ -101,7 +54,7 @@ jobs: - name: quay.io/tinkerbell/tink-cli uses: docker/build-push-action@v2 with: - context: ./cmd/tink-cli/ + context: . file: ./cmd/tink-cli/Dockerfile cache-from: type=registry,ref=quay.io/tinkerbell/tink-cli:latest push: ${{ startsWith(github.ref, 'refs/heads/master') }} @@ -109,7 +62,7 @@ jobs: - name: quay.io/tinkerbell/tink-worker uses: docker/build-push-action@v2 with: - context: ./cmd/tink-worker/ + context: . file: ./cmd/tink-worker/Dockerfile cache-from: type=registry,ref=quay.io/tinkerbell/tink-worker:latest push: ${{ startsWith(github.ref, 'refs/heads/master') }} diff --git a/cmd/tink-cli/Dockerfile b/cmd/tink-cli/Dockerfile index bf6c38ed8..fd1ba22a4 100644 --- a/cmd/tink-cli/Dockerfile +++ b/cmd/tink-cli/Dockerfile @@ -1,8 +1,10 @@ -FROM alpine:3.11 - -CMD sleep infinity +FROM golang:1.15-alpine +RUN apk add --no-cache --update --upgrade ca-certificates make git +COPY . /usr/myapp +WORKDIR /usr/myapp +RUN make cli +FROM alpine:3.11 +ENTRYPOINT ["/usr/bin/tink-cli"] RUN apk add --no-cache --update --upgrade ca-certificates - -COPY tink-cli /bin/tink -COPY sample.tmpl /tmp +COPY --from=0 /usr/myapp/cmd/tink-cli/tink-cli /usr/bin/tink-cli diff --git a/cmd/tink-server/Dockerfile b/cmd/tink-server/Dockerfile index 3a2a5939e..5ae4eee0a 100644 --- a/cmd/tink-server/Dockerfile +++ b/cmd/tink-server/Dockerfile @@ -1,10 +1,14 @@ -FROM alpine:3.11 +FROM golang:1.15-alpine +RUN apk add --no-cache --update --upgrade ca-certificates make git +COPY . /usr/myapp +WORKDIR /usr/myapp +RUN make server -ENTRYPOINT ["tink-server"] +FROM alpine:3.11 +ENTRYPOINT ["/usr/bin/tink-server"] EXPOSE 42113 EXPOSE 42114 RUN apk add --update ca-certificates && \ apk add --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing cfssl - -COPY tink-server /bin/ +COPY --from=0 /usr/myapp/cmd/tink-server/tink-server /usr/bin/tink-server diff --git a/cmd/tink-worker/Dockerfile b/cmd/tink-worker/Dockerfile index e264c2c8f..cfb200365 100644 --- a/cmd/tink-worker/Dockerfile +++ b/cmd/tink-worker/Dockerfile @@ -1,7 +1,10 @@ -FROM alpine:3.11 - -ENTRYPOINT [ "/tink-worker" ] +FROM golang:1.15-alpine +RUN apk add --no-cache --update --upgrade ca-certificates make git +COPY . /usr/myapp +WORKDIR /usr/myapp +RUN make worker +FROM alpine:3.11 +ENTRYPOINT [ "/usr/bin/tink-worker" ] RUN apk add --no-cache --update --upgrade ca-certificates - -COPY tink-worker /tink-worker +COPY --from=0 /usr/myapp/cmd/tink-worker/tink-worker /usr/bin/tink-worker