Skip to content

Commit 5e65fe0

Browse files
committed
CI: Add build jobs
1 parent ff183f2 commit 5e65fe0

3 files changed

Lines changed: 118 additions & 0 deletions

File tree

.gitlab-ci.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
variables:
2+
DOCKER_HOST: tcp://docker:2375
3+
DOCKER_TLS_CERTDIR: ""
4+
DOCKER_BUILDKIT: 1
5+
CI_DISPOSABLE_ENVIRONMENT: "true"
6+
REGION: "europe-west2"
7+
GAR: "${REGION}-docker.pkg.dev/green-backend/green-backend-${REGION}"
8+
BACKEND_IMAGE: "${GAR}/simplicity-lending-backend"
9+
WEB_IMAGE: "${GAR}/simplicity-lending-web"
10+
11+
stages:
12+
- build
13+
14+
default:
15+
image: glregistry.blockstream.io/blockstream/p/gcloud-docker:502.0.0-27.3
16+
services:
17+
- name: docker:27-dind
18+
command: ["dockerd", "--host=tcp://0.0.0.0:2375", "--mtu=1450"]
19+
alias: docker
20+
tags:
21+
- cloud
22+
retry:
23+
max: 2
24+
when:
25+
- runner_system_failure
26+
- unknown_failure
27+
- stuck_or_timeout_failure
28+
29+
## disables MR-triggered pipelines and allows only branch-triggered pipelines
30+
workflow:
31+
rules:
32+
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
33+
when: never
34+
- when: always
35+
36+
include:
37+
- gitlab/**.yaml

gitlab/build.yaml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
build_backend:
2+
extends:
3+
- .auth_gcp
4+
- .build_docker
5+
needs:
6+
- job: create_timestamp
7+
artifacts: true
8+
variables:
9+
ARCH: amd64
10+
IMAGE: ${BACKEND_IMAGE}
11+
DOCKERFILE: deployment/Dockerfile.backend
12+
13+
build_web:
14+
extends:
15+
- .auth_gcp
16+
- .build_docker
17+
needs:
18+
- job: create_timestamp
19+
artifacts: true
20+
variables:
21+
ARCH: amd64
22+
IMAGE: ${WEB_IMAGE}
23+
DOCKERFILE: deployment/Dockerfile.web

gitlab/functions.yaml

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# Timestamp to be shared by all deploy jobs in the pipeline
2+
create_timestamp:
3+
stage: .pre
4+
variables:
5+
GIT_STRATEGY: none
6+
script:
7+
- export TIMESTAMP=$(date +%Y%m%d%H%M%S)
8+
- echo "TIMESTAMP=${TIMESTAMP}" >> timestamp.env
9+
- echo "Generated timestamp ${TIMESTAMP}"
10+
artifacts:
11+
reports:
12+
dotenv: timestamp.env
13+
14+
.auth_gcp:
15+
variables:
16+
PROJECT_NUMBER: 697214616889
17+
POOL_ID: gitlab-2f4bb583
18+
PROVIDER_ID: gitlab
19+
SERVICE_ACCOUNT_EMAIL: gitlab-cicd@green-backend.iam.gserviceaccount.com
20+
id_tokens:
21+
GITLAB_OIDC_TOKEN:
22+
aud: https://gl.blockstream.io
23+
before_script:
24+
- echo ${GITLAB_OIDC_TOKEN} > .ci_job_jwt_file
25+
- export PATH=/opt/google-cloud-sdk/bin:$PATH
26+
- gcloud iam workload-identity-pools create-cred-config "projects/${PROJECT_NUMBER}/locations/global/workloadIdentityPools/${POOL_ID}/providers/${PROVIDER_ID}"
27+
--service-account="${SERVICE_ACCOUNT_EMAIL}"
28+
--output-file=.gcp_temp_cred.json
29+
--credential-source-file=.ci_job_jwt_file
30+
- gcloud auth login --cred-file=.gcp_temp_cred.json --update-adc
31+
- gcloud auth list
32+
- gcloud auth configure-docker ${REGION}-docker.pkg.dev
33+
34+
.build_docker:
35+
stage: build
36+
when: manual
37+
script:
38+
- PLATFORM=linux/${ARCH}
39+
- TAG=${CI_COMMIT_SHORT_SHA}-${TIMESTAMP}
40+
- echo "Using timestamp ${TIMESTAMP} and tag ${TAG}"
41+
- GAR_IMAGE=${IMAGE}
42+
- GAR_IMAGE_LATEST=${GAR_IMAGE}:latest
43+
- GAR_IMAGE_TAG=${GAR_IMAGE}:${TAG}
44+
- docker buildx create
45+
--driver=docker-container
46+
--name=buildkit-builder
47+
--use
48+
--platform ${PLATFORM}
49+
- docker buildx build
50+
--platform ${PLATFORM}
51+
--cache-from ${GAR_IMAGE_LATEST}
52+
--load
53+
-f ${DOCKERFILE}
54+
-t ${GAR_IMAGE_LATEST}
55+
-t ${GAR_IMAGE_TAG} .
56+
- docker push ${GAR_IMAGE_TAG}
57+
- echo "pushed ${GAR_IMAGE_TAG}"
58+
- if [ ${CI_COMMIT_BRANCH} == ${CI_DEFAULT_BRANCH} ]; then docker push ${GAR_IMAGE_LATEST}; echo "pushed ${GAR_IMAGE_LATEST}"; fi

0 commit comments

Comments
 (0)