Skip to content

Commit be630b7

Browse files
committed
Merge branch 'fix-docker-rebuild-rule' into 'master'
.gitlab: fix building docker image even when skipping ci on first commit See merge request hdl-libraries/bedrock!241
2 parents 6695d5c + 2a653d0 commit be630b7

File tree

2 files changed

+41
-6
lines changed

2 files changed

+41
-6
lines changed

.gitlab-ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ variables:
1111
CONTAINER_IMAGE: $CI_REGISTRY/bedrock_testing_base_bookworm
1212
DOCKER_HOST: tcp://docker:2375/
1313
DOCKER_DRIVER: overlay2
14+
FF_SCRIPT_SECTIONS: "true"
1415

1516
image: $CONTAINER_IMAGE:$CI_COMMIT_REF_NAME
1617

.gitlab/ci/build.gitlab-ci.yml

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,32 @@
1+
check_rebuild:
2+
image: docker:stable
3+
stage: build
4+
script: |
5+
echo "DOCKER_IMAGE_REBUILD=1" > build.env
6+
artifacts:
7+
reports:
8+
dotenv: build.env
9+
rules:
10+
- if: '$CI_COMMIT_BRANCH == "master"'
11+
- if: $CI_COMMIT_BRANCH
12+
changes:
13+
- Dockerfile*
14+
- build-tools/litex_meta.sh
15+
- .gitlab/ci/build.gitlab-ci.yml
16+
17+
check_exists:
18+
image: docker:stable
19+
stage: build
20+
script: |
21+
export DOCKER_CLI_EXPERIMENTAL=enabled
22+
docker manifest inspect \
23+
$CONTAINER_IMAGE:$CI_COMMIT_REF_NAME > /dev/null && \
24+
DOCKER_IMAGE_EXISTS=1 || DOCKER_IMAGE_EXISTS=0
25+
echo "DOCKER_IMAGE_EXISTS=${DOCKER_IMAGE_EXISTS}" > build.env
26+
artifacts:
27+
reports:
28+
dotenv: build.env
29+
130
build:
231
image: docker:stable
332
stage: build
@@ -8,7 +37,18 @@ build:
837
- echo $CONTAINER_IMAGE:$CI_COMMIT_REF_NAME
938
- echo $CONTAINER_IMAGE:$CI_COMMIT_SHORT_SHA
1039
- echo $CONTAINER_IMAGE:$CI_PROJECT_NAME-$CI_COMMIT_SHORT_SHA
40+
needs:
41+
- job: check_rebuild
42+
optional: true
43+
- job: check_exists
44+
optional: true
1145
script: |
46+
echo "DOCKER_IMAGE_REBUILD=${DOCKER_IMAGE_REBUILD}"
47+
echo "DOCKER_IMAGE_EXISTS=${DOCKER_IMAGE_EXISTS}"
48+
if [ \( -z "$DOCKER_IMAGE_REBUILD" -o "$DOCKER_IMAGE_REBUILD" == "0" \) -a \
49+
"$DOCKER_IMAGE_EXISTS" == "1" ]; then
50+
exit 0
51+
fi
1252
docker pull $CONTAINER_IMAGE:latest || true
1353
docker build --cache-from $CONTAINER_IMAGE:latest \
1454
-t $CONTAINER_IMAGE:$CI_COMMIT_REF_NAME \
@@ -19,9 +59,3 @@ build:
1959
docker push $CONTAINER_IMAGE:$CI_COMMIT_REF_NAME
2060
docker push $CONTAINER_IMAGE:$CI_PROJECT_NAME-$CI_COMMIT_SHORT_SHA
2161
docker push $CONTAINER_IMAGE:latest
22-
rules:
23-
- if: '$CI_COMMIT_BRANCH == "master"'
24-
- if: $CI_COMMIT_BRANCH
25-
changes:
26-
- Dockerfile*
27-
- .gitlab/ci/build.gitlab-ci.yml

0 commit comments

Comments
 (0)