Skip to content

Commit 4e1a554

Browse files
ci(circle): configure docker build on CI and PR checks
1 parent 51da4df commit 4e1a554

File tree

6 files changed

+116
-7
lines changed

6 files changed

+116
-7
lines changed

.circleci/config.yml

+107
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
version: 2.1
2+
executors:
3+
k911-docker-client:
4+
docker:
5+
- image: k911/docker-client:19.03.12-compose
6+
working_directory: ~/workdir
7+
8+
aliases:
9+
# Remote Docker config
10+
- &docker-remote-version
11+
setup_remote_docker:
12+
# https://circleci.com/docs/2.0/building-docker-images/#docker-version
13+
version: 19.03.12
14+
15+
# Filters
16+
- &pull-request-checks-job-filters
17+
filters:
18+
branches:
19+
ignore:
20+
- master
21+
22+
- &release-job-filters
23+
filters:
24+
tags:
25+
ignore: /.*/
26+
branches:
27+
only:
28+
- master
29+
30+
jobs:
31+
shellcheck:
32+
docker:
33+
- image: koalaman/shellcheck-alpine:stable
34+
steps:
35+
- checkout
36+
- run:
37+
name: Shellcheck sh scripts
38+
command: shellcheck *.sh
39+
40+
validate-commit-message:
41+
docker:
42+
- image: node:lts-alpine
43+
steps:
44+
- checkout
45+
- run:
46+
name: Install git
47+
command: apk add --no-cache git
48+
- run:
49+
name: Install commitlint
50+
command: |-
51+
npm config set unsafe-perm true
52+
npm i -g @commitlint/cli @commitlint/config-conventional
53+
- run:
54+
name: Validate commit message format
55+
command: commitlint --from=HEAD~20 -V
56+
57+
docker-bake:
58+
executor: k911-docker-client
59+
environment:
60+
REGISTRY: docker.io
61+
NAMESPACE: k911
62+
IMAGE: release-version-script
63+
SERVICES: releaser
64+
steps:
65+
- checkout
66+
- *docker-remote-version
67+
- run:
68+
name: Export required dynamic env variables
69+
command: |-
70+
TAG="master-$CIRCLE_SHA1"
71+
echo "export TAG='$TAG'" >> $BASH_ENV
72+
- run:
73+
name: Print env
74+
command: env
75+
- run:
76+
name: Print docker info
77+
command: docker info
78+
- run:
79+
name: Login to Docker Hub
80+
command: >-
81+
DOCKER_REGISTRY="$REGISTRY"
82+
DOCKER_USERNAME="$DOCKER_HUB_USERNAME"
83+
DOCKER_PASSWORD="$DOCKER_HUB_TOKEN"
84+
docker-registry-login
85+
- run:
86+
name: Enable Docker Buidx
87+
environment:
88+
DOCKER_BUILDX_CONTEXT_CREATE: "1"
89+
DOCKER_BUILDX_BUILDER_CREATE: "1"
90+
command: docker-use-buildx
91+
- run:
92+
name: Docker Buildx Bake all required images
93+
command: docker buildx bake --progress=plain $SERVICES
94+
95+
workflows:
96+
version: 2.1
97+
pull-request-checks:
98+
jobs:
99+
- validate-commit-message:
100+
<<: *pull-request-checks-job-filters
101+
- shellcheck:
102+
<<: *pull-request-checks-job-filters
103+
- docker-bake:
104+
<<: *pull-request-checks-job-filters
105+
requires:
106+
- validate-commit-message
107+
- shellcheck
File renamed without changes.
File renamed without changes.

docker-bake.hcl

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
target "releaser" {
2+
cache-from = ["type=registry,ref=k911/release-version-script-cache:releaser"]
3+
cache-to = ["type=registry,ref=k911/release-version-script-cache:releaser,mode=max"]
4+
output = ["type=registry"]
5+
}

docker-compose.yml

+4-7
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
1-
version: "3.6"
2-
3-
volumes:
4-
coverage: {}
1+
version: "3.7"
52

63
services:
74
releaser:
8-
image: "${REGISTRY:-docker.io}/${NAMESPACE:-k911}/${IMAGE:-test-release-script}-releaser:${TAG:-local}"
5+
image: "${REGISTRY:-docker.io}/${NAMESPACE:-k911}/${IMAGE:-release-version-script}:${TAG:-local}"
96
build:
10-
context: ./.circleci
7+
context: .
118
args:
129
NODE_TAG: "${NODE_VERSION:-14}-alpine${ALPINE_VERSION:-3.12}"
1310
environment:
@@ -22,4 +19,4 @@ services:
2219
volumes:
2320
- "./.git:/usr/src/app/.git:rw"
2421
- "./CHANGELOG.md:/usr/src/app/CHANGELOG.md:rw"
25-
- "./.circleci/release-version.sh:/usr/local/bin/release-version:rw"
22+
- "./release-version.sh:/usr/local/bin/release-version:rw"
File renamed without changes.

0 commit comments

Comments
 (0)