prplos/.gitlab/docker.yml
Petr Štetiar 5811f6f7b2
ci: docker: fix stuck jobs by using different hosted runner
Seems like the current `gce` runners got deprecated so lets fix it by
using `saas-linux-small-amd64` runners.

Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-07-31 15:18:58 +00:00

117 lines
5.0 KiB
YAML

.docker in docker:
tags:
- saas-linux-small-amd64
image: docker:26
services:
- docker:26-dind
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule"'
when: never
- if: '$TFTP_IMAGE_DOWNLOAD_URL'
when: never
- if: '$CI_COMMIT_BRANCH == $CI_DESIGNATED_BRANCH'
- when: manual
allow_failure: true
variables:
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: "/certs"
.build Docker image:
stage: docker
extends: .docker in docker
script:
- export IMAGE_NAME="$(echo $CI_JOB_NAME | sed 's/build Docker image \(.*\)/\1/')"
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
- docker build -t "$IMAGE_NAME" $DOCKER_BUILD_EXTRA_ARGS $DOCKER_DOCKERFILE_PATH
- docker tag "$IMAGE_NAME" "$CI_REGISTRY_IMAGE/$CI_DESIGNATED_BRANCH_SLUG/$IMAGE_NAME:$CI_COMMIT_REF_SLUG"
- docker push "$CI_REGISTRY_IMAGE/$CI_DESIGNATED_BRANCH_SLUG/$IMAGE_NAME:$CI_COMMIT_REF_SLUG"
.test Docker SDK image:
stage: docker SDK and IB test
extends: .docker in docker
script:
- export IMAGE_NAME="$(echo $CI_JOB_NAME | sed 's/test Docker image \(.*\)/\1/')"
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
- docker pull "$CI_REGISTRY_IMAGE/$CI_DESIGNATED_BRANCH_SLUG/$IMAGE_NAME:$CI_COMMIT_REF_SLUG"
- >
docker run "$CI_REGISTRY_IMAGE/$CI_DESIGNATED_BRANCH_SLUG/$IMAGE_NAME:$CI_COMMIT_REF_SLUG" sh -c "
cd /home/builder &&
make defconfig &&
./scripts/feeds update base &&
./scripts/feeds install urngd &&
sync && sleep 1 &&
make -j $(nproc) package/urngd/compile V=s &&
sync && sleep 1 &&
find ./bin/packages -name urngd*.ipk | grep ^./bin/packages/.*urngd
"
.test Docker IB image:
stage: docker SDK and IB test
extends: .docker in docker
script:
- export IMAGE_NAME="$(echo $CI_JOB_NAME | sed 's/test Docker image \(.*\)/\1/')"
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
- docker pull "$CI_REGISTRY_IMAGE/$CI_DESIGNATED_BRANCH_SLUG/$IMAGE_NAME:$CI_COMMIT_REF_SLUG"
- >
docker run "$CI_REGISTRY_IMAGE/$CI_DESIGNATED_BRANCH_SLUG/$IMAGE_NAME:$CI_COMMIT_REF_SLUG" sh -c "
cd /home/builder &&
make image PROFILE=\"$CI_IB_PROFILE\" PACKAGES=\"$CI_IB_PACKAGES\"
"
.deploy Docker image:
extends: .docker in docker
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule"'
when: never
- if: '$CI_COMMIT_BRANCH == $CI_DESIGNATED_BRANCH'
script:
- export IMAGE_NAME="$(echo $CI_JOB_NAME | sed 's/deploy Docker image \(.*\)/\1/')"
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
- docker pull "$CI_REGISTRY_IMAGE/$CI_DESIGNATED_BRANCH_SLUG/$IMAGE_NAME:$CI_COMMIT_REF_SLUG"
- docker tag "$CI_REGISTRY_IMAGE/$CI_DESIGNATED_BRANCH_SLUG/$IMAGE_NAME:$CI_COMMIT_REF_SLUG" "$CI_REGISTRY_IMAGE/$CI_DESIGNATED_BRANCH_SLUG/$IMAGE_NAME:latest"
- docker push "$CI_REGISTRY_IMAGE/$CI_DESIGNATED_BRANCH_SLUG/$IMAGE_NAME:latest"
.build LCM container:
stage: docker IB LCM container
extends: .docker in docker
script:
- export IMAGE_NAME="$(echo $CI_JOB_NAME | sed 's/build \(.*\)/\1/')"
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
- apk add bash
- bash .gitlab/docker/ib/lcm/scripts/build-push-lcm-containers.sh
.test LCM container:
stage: docker IB LCM container
extends: .docker in docker
script:
- export IMAGE_NAME="$(echo $CI_JOB_NAME | sed 's/test \(.*\)/\1/')"
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
- >
set -xe ;
for version in 1 2; do
image_name="${IMAGE_NAME}-v$version"
docker pull "$CI_REGISTRY_IMAGE/$CI_DESIGNATED_BRANCH_SLUG/$image_name:$CI_COMMIT_REF_SLUG"
docker run "$CI_REGISTRY_IMAGE/$CI_DESIGNATED_BRANCH_SLUG/$image_name:$CI_COMMIT_REF_SLUG" cat /etc/container-version | grep $version
done
.deploy LCM container:
stage: docker IB LCM container
extends: .docker in docker
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule"'
when: never
- if: '$CI_COMMIT_BRANCH == $CI_DESIGNATED_BRANCH'
script:
- export IMAGE_NAME="$(echo $CI_JOB_NAME | sed 's/deploy \(.*\)/\1/')"
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
- >
for version in v1 v2; do
image_name="${IMAGE_NAME}-$version"
docker pull "$CI_REGISTRY_IMAGE/$CI_DESIGNATED_BRANCH_SLUG/$image_name:$CI_COMMIT_REF_SLUG"
docker tag "$CI_REGISTRY_IMAGE/$CI_DESIGNATED_BRANCH_SLUG/$image_name:$CI_COMMIT_REF_SLUG" "$CI_REGISTRY_IMAGE/$CI_DESIGNATED_BRANCH_SLUG/$image_name:latest"
docker push "$CI_REGISTRY_IMAGE/$CI_DESIGNATED_BRANCH_SLUG/$image_name:latest"
docker tag "$CI_REGISTRY_IMAGE/$CI_DESIGNATED_BRANCH_SLUG/$image_name:$CI_COMMIT_REF_SLUG" "$CI_REGISTRY_IMAGE/$CI_DESIGNATED_BRANCH_SLUG/${IMAGE_NAME}:$version"
docker push "$CI_REGISTRY_IMAGE/$CI_DESIGNATED_BRANCH_SLUG/${IMAGE_NAME}:$version"
done