Skip to content

Templates

Here you can find examples of all files you might need during the deployment process.

FROM golang:1.25 AS base
WORKDIR /opt
RUN mkdir -p -m 700 /root/.ssh
COPY known_hosts /root/.ssh/known_hosts
RUN git config --global url."git@github.com:".insteadOf "https://github.com/"
COPY go.mod .
COPY go.sum .
ARG GOPRIVATE=github.com/Volumental
ARG PROJECT_ROOT=github.com/Volumental/jason/backend
ARG GO111MODULE=on
ARG CGO_ENABLED=0
RUN --mount=type=ssh go mod download
COPY . .
RUN go test ./...
RUN go build -o jason_backend github.com/Volumental/jason/cmd/rest
FROM alpine:3.18 AS deploy_api
RUN apk add --no-cache ca-certificates
WORKDIR /opt
COPY --from=base /opt/jason_backend /opt/jason_backend
ENTRYPOINT [ "./jason_backend" ]
steps:
- id: 'fetch github secret'
name: '${_LINK_IMAGE}:${_LATEST}'
args: ["-project", "volumental-infra", "-secret", "github-robot-id-rsa", "-out", "id_rsa,known_hosts"]
- id: 'build vaka'
name: 'gcr.io/cloud-builders/docker'
env:
- 'BRANCH_OR_TAG=${BRANCH_NAME}${TAG_NAME}'
- 'DOCKER_BUILDKIT=1'
- 'DOCKER_CLI_EXPERIMENTAL=enabled'
entrypoint: 'bash'
args:
- '-c'
- |
eval $(ssh-agent); chmod 0600 id_rsa; ssh-add id_rsa \
&& docker buildx build \
--ssh default \
--tag ${_VAKA_IMAGE_REPO}:${SHORT_SHA} \
--tag ${_VAKA_IMAGE_REPO}:${BRANCH_OR_TAG//[^a-zA-Z0-9.-]/_} \
--cache-from=${_VAKA_IMAGE_REPO}:${BRANCH_OR_TAG//[^a-zA-Z0-9.-]/_} \
--cache-from=${_VAKA_IMAGE_REPO}:master \
--cache-to=type=inline,mode=max \
.
waitFor: ['fetch github secret']
- id: 'push vaka'
name: 'gcr.io/cloud-builders/docker'
entrypoint: '/bin/bash'
env:
- 'DOCKER_BUILDKIT=1'
- 'BRANCH_OR_TAG=${BRANCH_NAME}${TAG_NAME}'
args:
- -c
- |
docker push ${_VAKA_IMAGE_REPO}:${SHORT_SHA} \
&& docker push ${_VAKA_IMAGE_REPO}:${BRANCH_OR_TAG//[^a-zA-Z0-9.-]/_}
waitFor: ['pytest', 'run bandit for vaka', 'mypy', 'pylint', 'black']
options:
machineType: E2_HIGHCPU_32
logging: CLOUD_LOGGING_ONLY
timeout: 1200s
substitutions:
_LATEST: latest
_VAKA_IMAGE_REPO: "europe-north1-docker.pkg.dev/volumental-infra/images/vaka"
_FF_IMAGE_REPO: "europe-north1-docker.pkg.dev/volumental-infra/images/vaka-fleet_feet"
_LINK_IMAGE: europe-north1-docker.pkg.dev/volumental-infra/images/link
  • Building image with buildx
  • Building image with vob