Merge branch 'ansible-role' into 'development'
refactor: move ansible lint job to linting folder See merge request nofusscomputing/projects/gitlab-ci!24
This commit is contained in:
@ -12,7 +12,7 @@ stages:
|
|||||||
- sync
|
- sync
|
||||||
|
|
||||||
include:
|
include:
|
||||||
- local: $JOB_ROOT_DIR/yaml_lint/.gitlab-ci.yml
|
- local: $JOB_ROOT_DIR/lint/yaml.gitlab-ci.yaml
|
||||||
- local: $JOB_ROOT_DIR/conventional_commits/.gitlab-ci.yml
|
- local: $JOB_ROOT_DIR/conventional_commits/.gitlab-ci.yml
|
||||||
- local: $JOB_ROOT_DIR/git_push_mirror/.gitlab-ci.yml
|
- local: $JOB_ROOT_DIR/git_push_mirror/.gitlab-ci.yml
|
||||||
- local: $JOB_ROOT_DIR/gitlab_release/.gitlab-ci.yml
|
- local: $JOB_ROOT_DIR/gitlab_release/.gitlab-ci.yml
|
||||||
@ -91,7 +91,7 @@ python Dependencies:
|
|||||||
yaml_lint Dependencies:
|
yaml_lint Dependencies:
|
||||||
extends: .gemnasium-python-dependency_scanning
|
extends: .gemnasium-python-dependency_scanning
|
||||||
variables:
|
variables:
|
||||||
PIP_REQUIREMENTS_FILE: yaml_lint/requirements.txt
|
PIP_REQUIREMENTS_FILE: lint/requirements.txt
|
||||||
|
|
||||||
|
|
||||||
PyLint:
|
PyLint:
|
||||||
@ -103,7 +103,7 @@ PyLint:
|
|||||||
gilab-ci.yml Lint (python 3.11):
|
gilab-ci.yml Lint (python 3.11):
|
||||||
variables:
|
variables:
|
||||||
YAML_LINT_PATH: ".gitlab-ci* ./**/*gitlab-ci*"
|
YAML_LINT_PATH: ".gitlab-ci* ./**/*gitlab-ci*"
|
||||||
YAML_LINT_EXTRA_ARGS: "{ extends: yaml_lint/.yamllint.yaml, ignore: [website-template/*] }"
|
YAML_LINT_EXTRA_ARGS: "{ extends: lint/.yamllint.yaml, ignore: [website-template/*] }"
|
||||||
extends:
|
extends:
|
||||||
- .yaml_lint_defaults
|
- .yaml_lint_defaults
|
||||||
image: python:3.11-slim
|
image: python:3.11-slim
|
||||||
|
@ -1,38 +0,0 @@
|
|||||||
|
|
||||||
.ansible_linter_defaults:
|
|
||||||
stage: validation
|
|
||||||
before_script:
|
|
||||||
- if [ "0$JOB_ROOT_DIR" == "0" ]; then ROOT_DIR=gitlab-ci; else ROOT_DIR=$JOB_ROOT_DIR ; fi
|
|
||||||
- echo "[DEBUG] ROOT_DIR[$ROOT_DIR]"
|
|
||||||
- mkdir -p "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME"
|
|
||||||
- mkdir -p "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/tests"
|
|
||||||
- export PYTHON_VERSION=`python -c 'import sys; version=sys.version_info[:3]; print("{0}.{1}.{2}".format(*version))'`
|
|
||||||
- apt update
|
|
||||||
- apt install --no-install-recommends -y git
|
|
||||||
- python3 -m venv env
|
|
||||||
- . env/bin/activate
|
|
||||||
- pip install --upgrade pip
|
|
||||||
- pip install -r $ROOT_DIR/ansible/requirements.txt
|
|
||||||
- mkdir $PYTHON_VERSION
|
|
||||||
script:
|
|
||||||
- ansible-lint -p --nocolor --parseable-severity "$ANSIBLE_LINT_PATH" > "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/$PYTHON_VERSION-ansible-lint.log" 1>&1 || ANSIBLE_LINT=$?
|
|
||||||
- cat "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/$PYTHON_VERSION-ansible-lint.log" | ansible-lint-to-junit-xml > "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/tests/$PYTHON_VERSION-ansible-lint.junit.xml"
|
|
||||||
- ls -la $PYTHON_VERSION
|
|
||||||
- if [ $ANSIBLE_LINT > 0 ]; then echo "ansible lint failed with $ANSIBLE_LINT"; exit $ANSIBLE_LINT; fi
|
|
||||||
after_script:
|
|
||||||
- echo deactivate
|
|
||||||
artifacts:
|
|
||||||
expire_in: 3 days
|
|
||||||
when: always
|
|
||||||
paths:
|
|
||||||
- "artifacts/*"
|
|
||||||
reports:
|
|
||||||
junit:
|
|
||||||
- "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/tests/*.junit.xml"
|
|
||||||
rules:
|
|
||||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
|
||||||
when: never
|
|
||||||
- if: '$CI_COMMIT_BRANCH'
|
|
||||||
when: always
|
|
||||||
- when: never
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
|||||||
# Changelog
|
|
||||||
|
|
||||||
2023-05-13 15:35:28 +0930 [408e4ea](https://gitlab.com/nofusscomputing/projects/gitlab-ci/-/commit/408e4eab9e1f61004f1e38af6d1531747b7da99b) - refactor: move docs as part of restructure
|
|
||||||
2022-01-25 00:08:05 +0000 [ce1cc01](https://gitlab.com/nofusscomputing/projects/gitlab-ci/-/commit/ce1cc017e26ff7f6cee586cc7d98e4d292275672) - build(version): bump version 0.6.0 → 0.6.1rc0
|
|
||||||
2022-01-24 06:33:24 +0000 [46cc1fb](https://gitlab.com/nofusscomputing/projects/gitlab-ci/-/commit/46cc1fbb6a878e485af39e679b5184a9912c2e7f) - build(version): bump version 0.5.0 → 0.6.0
|
|
||||||
2022-01-24 13:37:23 +0930 [4e1da5e](https://gitlab.com/nofusscomputing/projects/gitlab-ci/-/commit/4e1da5e87281284e021791a4b600a1bff53b8431) - ci(dependency_scanning): python 3.7 not available for dependecy scanning.
|
|
||||||
2022-01-23 07:14:32 +0000 [6668c2f](https://gitlab.com/nofusscomputing/projects/gitlab-ci/-/commit/6668c2fb8d7545b4f9052ad3065e58f00d11be62) - refactor: test specifying must equal.
|
|
||||||
2022-01-23 06:12:35 +0000 [0df60b1](https://gitlab.com/nofusscomputing/projects/gitlab-ci/-/commit/0df60b12dbfff983ca3a671b90ab1be126597e52) - fix(ansible): remove duplicate lines that last code review didn't remove.
|
|
||||||
2022-01-23 05:57:43 +0000 [484d987](https://gitlab.com/nofusscomputing/projects/gitlab-ci/-/commit/484d98792a27c9d967331e9d3cd1afdca435bdd6) - fix(ansible): fix typo in job pip file
|
|
||||||
2022-01-23 05:46:31 +0000 [e1894ec](https://gitlab.com/nofusscomputing/projects/gitlab-ci/-/commit/e1894ec0c4fe7504901682f008c2ff0db7e351fe) - fix(dependency_scanning): upgraded versions from vulnerability scan.
|
|
||||||
2022-01-16 00:09:42 +0000 [1ef6c41](https://gitlab.com/nofusscomputing/projects/gitlab-ci/-/commit/1ef6c41818c40183f8019ea5cde48b4278e4d694) - build(version): bump version 0.4.0 → 0.5.0
|
|
||||||
2022-01-15 03:53:53 +0000 [5c9000a](https://gitlab.com/nofusscomputing/projects/gitlab-ci/-/commit/5c9000a74859504ed64bbefa1fd193f80a2b69c2) - build(version): bump version 0.3.1 → 0.4.0
|
|
||||||
2022-01-11 07:03:09 +0000 [7751fd9](https://gitlab.com/nofusscomputing/projects/gitlab-ci/-/commit/7751fd9494f610fff0ea16bd303bfe62d0034eec) - build(version): bump version 0.3.0 → 0.3.1
|
|
||||||
2021-08-12 03:32:36 +0000 [389bc08](https://gitlab.com/nofusscomputing/projects/gitlab-ci/-/commit/389bc08d7686153fb374aa83d440c35c9b4eac90) - build(version): bump version 0.3.0rc1 → 0.3.0
|
|
||||||
2021-08-11 13:47:34 +0930 [def31ef](https://gitlab.com/nofusscomputing/projects/gitlab-ci/-/commit/def31ef562c0002713401652657d59320548ee85) - style(yaml_lint): fixed yaml lint errors
|
|
||||||
2021-08-04 03:23:08 +0000 [eb5cc8a](https://gitlab.com/nofusscomputing/projects/gitlab-ci/-/commit/eb5cc8a0e2885a9ed16a8d1a81611aec4d5a4d31) - build(version): bump version 0.3.0rc0 → 0.3.0rc1
|
|
||||||
2021-08-04 03:13:54 +0000 [09dcb65](https://gitlab.com/nofusscomputing/projects/gitlab-ci/-/commit/09dcb65b090f59e9f8a6bea5eba4bb98bddbad3d) - build(version): bump version 0.2.1 → 0.3.0rc0
|
|
||||||
2021-08-04 02:49:45 +0000 [4453b43](https://gitlab.com/nofusscomputing/projects/gitlab-ci/-/commit/4453b433c8966a334f02af592a6ce8092f2ac9de) - build(version): bump version 0.2.0 → 0.2.1
|
|
||||||
2021-08-04 02:24:12 +0000 [856f2e1](https://gitlab.com/nofusscomputing/projects/gitlab-ci/-/commit/856f2e1770d0bda823996122ee70916dc0fe455b) - build(version): bump version 0.1.0 → 0.2.0
|
|
||||||
2021-08-04 01:33:47 +0000 [6d34977](https://gitlab.com/nofusscomputing/projects/gitlab-ci/-/commit/6d349774269bcd7c6e406cfe72c78b99f246df7b) - build(version): bump version 0.0.1 → 0.1.0
|
|
||||||
2021-08-03 15:23:19 +0930 [2a3266f](https://gitlab.com/nofusscomputing/projects/gitlab-ci/-/commit/2a3266fb537e22dddf47708d0af101945027128f) - fix(ansible): Ensure the default ci directory is populated
|
|
||||||
2021-08-03 15:08:37 +0930 [2413dae](https://gitlab.com/nofusscomputing/projects/gitlab-ci/-/commit/2413daefb1e7e5a9e7a3cbb2d8cff2214f4a98ae) - feat(ansible): Added ansible validation job for linting
|
|
@ -1,17 +0,0 @@
|
|||||||
# Dependency scanning only has Python 3.6 available.
|
|
||||||
|
|
||||||
# Python 3.7
|
|
||||||
# Pillow==9.0.0
|
|
||||||
# numpy==1.22.0
|
|
||||||
|
|
||||||
# Python 3.6
|
|
||||||
pipenv==2022.1.8
|
|
||||||
wheel
|
|
||||||
ansible
|
|
||||||
setuptools_rust
|
|
||||||
Rust
|
|
||||||
ansible-lint
|
|
||||||
yamllint
|
|
||||||
lxml
|
|
||||||
ansible-lint-junit
|
|
||||||
ansible-lint-to-junit-xml
|
|
@ -53,8 +53,12 @@
|
|||||||
- if: "$CI_COMMIT_AUTHOR =='nfc_bot <helpdesk@nofusscomputing.com>'"
|
- if: "$CI_COMMIT_AUTHOR =='nfc_bot <helpdesk@nofusscomputing.com>'"
|
||||||
when: never
|
when: never
|
||||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||||
|
exists:
|
||||||
|
- .cz.yaml
|
||||||
when: always
|
when: always
|
||||||
- if: '$CI_COMMIT_BRANCH'
|
- if: '$CI_COMMIT_BRANCH'
|
||||||
|
exists:
|
||||||
|
- .cz.yaml
|
||||||
when: always
|
when: always
|
||||||
- when: never
|
- when: never
|
||||||
|
|
||||||
|
108
docker/build.gitlab-ci.yaml
Normal file
108
docker/build.gitlab-ci.yaml
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
variables:
|
||||||
|
# Available platforms: linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/arm64, linux/riscv64, linux/ppc64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
|
||||||
|
# DOCKER_IMAGE_BUILD_TARGET_PLATFORMS: "linux/amd64,linux/arm64,linux/arm/v7"
|
||||||
|
DOCKER_IMAGE_BUILD_NAME: $CI_PROJECT_NAME
|
||||||
|
DOCKER_IMAGE_BUILD_REGISTRY: $CI_REGISTRY_IMAGE
|
||||||
|
DOCKER_IMAGE_BUILD_TAG: $CI_COMMIT_SHA
|
||||||
|
|
||||||
|
# DOCKER_IMAGE_PUBLISH_NAME: $CI_PROJECT_NAME
|
||||||
|
# DOCKER_IMAGE_PUBLISH_REGISTRY: docker.io/nofusscomputing
|
||||||
|
# DOCKER_IMAGE_PUBLISH_URL: https://hub.docker.com/r/nofusscomputing/$DOCKER_IMAGE_PUBLISH_NAME
|
||||||
|
# JOB_STOP_CONVENTIONAL_COMMITS: 'any_value'
|
||||||
|
# JOB_STOP_GIT_PUSH_MIRROR: 'any_value'
|
||||||
|
# GIT_SYNC_URL: "https://$GITHUB_USERNAME_ROBOT:$GITHUB_TOKEN_ROBOT@github.com/NoFussComputing/config.git" # Must be defined for job to run
|
||||||
|
# JOB_STOP_GITLAB_RELEASE: 'any value'
|
||||||
|
|
||||||
|
|
||||||
|
.build_docker_container:
|
||||||
|
stage: build
|
||||||
|
image: nofusscomputing/docker-buildx-qemu:dev
|
||||||
|
services:
|
||||||
|
- name: docker:23-dind
|
||||||
|
entrypoint: ["env", "-u", "DOCKER_HOST"]
|
||||||
|
command: ["dockerd-entrypoint.sh"]
|
||||||
|
variables:
|
||||||
|
DOCKER_HOST: tcp://docker:2375/
|
||||||
|
DOCKER_DRIVER: overlay2
|
||||||
|
DOCKER_DOCKERFILE: dockerfile
|
||||||
|
# See https://github.com/docker-library/docker/pull/166
|
||||||
|
DOCKER_TLS_CERTDIR: ""
|
||||||
|
before_script:
|
||||||
|
- if [ "0$JOB_ROOT_DIR" == "0" ]; then ROOT_DIR=gitlab-ci; else ROOT_DIR=$JOB_ROOT_DIR ; fi
|
||||||
|
- echo "[DEBUG] ROOT_DIR[$ROOT_DIR]"
|
||||||
|
- docker info
|
||||||
|
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
|
||||||
|
#- pip3 install -r gitlab-ci/gitlab_release/requirements.txt
|
||||||
|
- pip3 install setuptools wheel
|
||||||
|
- pip install -r $ROOT_DIR/conventional_commits/requirements.txt
|
||||||
|
- pip3 install gitlab-ci/gitlab_release/python-module/cz_nfc/.
|
||||||
|
# see: https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/1861
|
||||||
|
# on why this `docker run` is required. without it multiarch support doesnt work.
|
||||||
|
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
|
||||||
|
- update-binfmts --display
|
||||||
|
- update-binfmts --enable # Important: Ensures execution of other binary formats is enabled in the kernel
|
||||||
|
- docker buildx create --driver=docker-container --driver-opt image=moby/buildkit:v0.11.6 --use
|
||||||
|
- docker buildx inspect --bootstrap
|
||||||
|
|
||||||
|
|
||||||
|
# --label org.opencontainers.image.url="$CI_PROJECT_URL/-/releases/$(cz -n cz_nfc version --project)" \
|
||||||
|
# --label org.opencontainers.image.version="$(cz -n cz_nfc version --project)" \
|
||||||
|
script:
|
||||||
|
- update-binfmts --display
|
||||||
|
- |
|
||||||
|
|
||||||
|
if [ "0$DOCKER_IMAGE_BUILD_TARGET_PLATFORMS" != "0" ]; then
|
||||||
|
|
||||||
|
echo "[DEBUG] building multiarch/specified arch image";
|
||||||
|
|
||||||
|
docker buildx build --platform=$DOCKER_IMAGE_BUILD_TARGET_PLATFORMS . \
|
||||||
|
--label org.opencontainers.image.created="$(date '+%Y-%m-%d %H:%M:%S%:z')" \
|
||||||
|
--label org.opencontainers.image.documentation="$CI_PROJECT_URL" \
|
||||||
|
--label org.opencontainers.image.source="$CI_PROJECT_URL" \
|
||||||
|
--label org.opencontainers.image.revision="$CI_COMMIT_SHA" \
|
||||||
|
--push \
|
||||||
|
--build-arg CI_JOB_TOKEN=$CI_JOB_TOKEN --build-arg CI_PROJECT_ID=$CI_PROJECT_ID --build-arg CI_API_V4_URL=$CI_API_V4_URL \
|
||||||
|
--file $DOCKER_DOCKERFILE \
|
||||||
|
--tag $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG;
|
||||||
|
|
||||||
|
docker buildx imagetools inspect $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG;
|
||||||
|
|
||||||
|
# during docker multi platform build there are >=3 additional unknown images added to gitlab container registry. cleanup
|
||||||
|
|
||||||
|
DOCKER_MULTI_ARCH_IMAGES=$(docker buildx imagetools inspect "$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG" --format "{{ range .Manifest.Manifests }}{{ if ne (print .Platform) \"&{unknown unknown [] }\" }}$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG@{{ println .Digest }}{{end}} {{end}}");
|
||||||
|
|
||||||
|
docker buildx imagetools create $DOCKER_MULTI_ARCH_IMAGES --tag $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG;
|
||||||
|
|
||||||
|
docker buildx imagetools inspect $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG;
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
echo "[DEBUG] building image";
|
||||||
|
|
||||||
|
docker build . \
|
||||||
|
--label org.opencontainers.image.created="$(date '+%Y-%m-%d %H:%M:%S%:z')" \
|
||||||
|
--label org.opencontainers.image.documentation="$CI_PROJECT_URL" \
|
||||||
|
--label org.opencontainers.image.source="$CI_PROJECT_URL" \
|
||||||
|
--label org.opencontainers.image.url="$CI_PROJECT_URL/-/releases/$(cz -n cz_nfc version --project)" \
|
||||||
|
--label org.opencontainers.image.version="$(cz -n cz_nfc version --project)" \
|
||||||
|
--label org.opencontainers.image.revision="$CI_COMMIT_SHA" \
|
||||||
|
--build-arg CI_JOB_TOKEN=$CI_JOB_TOKEN --build-arg CI_PROJECT_ID=$CI_PROJECT_ID --build-arg CI_API_V4_URL=$CI_API_V4_URL \
|
||||||
|
--file $DOCKER_DOCKERFILE \
|
||||||
|
--tag $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG;
|
||||||
|
|
||||||
|
docker push $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG;
|
||||||
|
|
||||||
|
fi
|
||||||
|
rules:
|
||||||
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||||
|
when: never
|
||||||
|
- if: $CI_COMMIT_TAG
|
||||||
|
when: on_success
|
||||||
|
- if: '$CI_COMMIT_BRANCH == "development"'
|
||||||
|
when: on_success
|
||||||
|
- if: '$CI_COMMIT_BRANCH != "master"'
|
||||||
|
when: always
|
||||||
|
- when: never
|
||||||
|
|
107
docker/publish.gitlab-ci.yaml
Normal file
107
docker/publish.gitlab-ci.yaml
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
---
|
||||||
|
# variables:
|
||||||
|
# # Available platforms: linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/arm64, linux/riscv64, linux/ppc64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
|
||||||
|
# # DOCKER_IMAGE_BUILD_TARGET_PLATFORMS: "linux/amd64,linux/arm64,linux/arm/v7"
|
||||||
|
# DOCKER_IMAGE_BUILD_NAME: $CI_PROJECT_NAME
|
||||||
|
# DOCKER_IMAGE_BUILD_REGISTRY: $CI_REGISTRY_IMAGE
|
||||||
|
# DOCKER_IMAGE_BUILD_TAG: $CI_COMMIT_SHA
|
||||||
|
|
||||||
|
|
||||||
|
.publish-docker-hub:
|
||||||
|
stage: publish
|
||||||
|
image: docker:23-dind
|
||||||
|
services:
|
||||||
|
- docker:23-dind
|
||||||
|
before_script:
|
||||||
|
- |
|
||||||
|
|
||||||
|
docker login $CI_REGISTRY -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD;
|
||||||
|
|
||||||
|
if [ "0$DOCKER_IMAGE_BUILD_TARGET_PLATFORMS" != "0" ]; then
|
||||||
|
|
||||||
|
for i in ${DOCKER_IMAGE_BUILD_TARGET_PLATFORMS//,/ }
|
||||||
|
do
|
||||||
|
|
||||||
|
docker buildx imagetools inspect $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG;
|
||||||
|
|
||||||
|
#DOCKER_MULTI_ARCH_IMAGES=$(docker buildx imagetools inspect "$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG" --format "{{ range .Manifest.Manifests }}{{ if ne (print .Platform) \"&{unknown unknown [] }\" }}$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG@{{ println .Digest }}{{end}} {{end}}")
|
||||||
|
DOCKER_MULTI_ARCH_IMAGES=$(docker buildx imagetools inspect "$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG" --format "{{ range .Manifest.Manifests }}$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG@{{ println .Digest }} {{end}}")
|
||||||
|
|
||||||
|
|
||||||
|
echo "[DEBUG] DOCKER_MULTI_ARCH_IMAGES=$DOCKER_MULTI_ARCH_IMAGES";
|
||||||
|
|
||||||
|
done;
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
docker pull $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG;
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
#docker logout $CI_REGISTRY; # commented out to test if for private repo remaining logged in works to allow pulling image
|
||||||
|
|
||||||
|
script:
|
||||||
|
- docker login docker.io -u $NFC_DOCKERHUB_USERNAME -p $NFC_DOCKERHUB_TOKEN
|
||||||
|
- docker image ls
|
||||||
|
- |
|
||||||
|
DOCKER_HUB_TAG=dev
|
||||||
|
|
||||||
|
if [ "0$CI_COMMIT_TAG" != "0" ]; then
|
||||||
|
|
||||||
|
DOCKER_HUB_TAG=latest
|
||||||
|
|
||||||
|
if [ "0$CI_COMMIT_TAG" == *"rc"* ]; then
|
||||||
|
|
||||||
|
DOCKER_HUB_TAG=dev
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "[DEBUG] DOCKER_IMAGE_PUBLISH_NAME=$DOCKER_IMAGE_PUBLISH_NAME";
|
||||||
|
echo "[DEBUG] DOCKER_HUB_TAG=$DOCKER_HUB_TAG";
|
||||||
|
|
||||||
|
if [ "0$DOCKER_IMAGE_BUILD_TARGET_PLATFORMS" != "0" ]; then
|
||||||
|
|
||||||
|
echo "[DEBUG] DOCKER_MULTI_ARCH_IMAGES=$DOCKER_MULTI_ARCH_IMAGES";
|
||||||
|
|
||||||
|
docker buildx imagetools create $DOCKER_MULTI_ARCH_IMAGES --tag $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$DOCKER_HUB_TAG;
|
||||||
|
|
||||||
|
if [ "0$CI_COMMIT_TAG" != "0" ]; then
|
||||||
|
|
||||||
|
docker buildx imagetools create $DOCKER_MULTI_ARCH_IMAGES --tag $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$CI_COMMIT_TAG;
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
docker image tag $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$DOCKER_HUB_TAG;
|
||||||
|
|
||||||
|
docker push $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$DOCKER_HUB_TAG;
|
||||||
|
|
||||||
|
if [ "0$CI_COMMIT_TAG" != "0" ]; then
|
||||||
|
|
||||||
|
docker image tag $DOCKER_IMAGE_BUILD_NAME/$DOCKER_IMAGE_BUILD_REGISTRY:$DOCKER_IMAGE_BUILD_TAG $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$CI_COMMIT_TAG;
|
||||||
|
|
||||||
|
docker push $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$CI_COMMIT_TAG;
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
- docker logout docker.io
|
||||||
|
needs: [ "Docker Container" ]
|
||||||
|
environment:
|
||||||
|
name: DockerHub
|
||||||
|
url: $DOCKER_IMAGE_PUBLISH_URL
|
||||||
|
rules:
|
||||||
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||||
|
when: never
|
||||||
|
- if: $CI_COMMIT_TAG
|
||||||
|
when: on_success
|
||||||
|
- if: '$CI_COMMIT_BRANCH == "development"'
|
||||||
|
when: on_success
|
||||||
|
- if: '$CI_COMMIT_BRANCH != "master"'
|
||||||
|
allow_failure: true
|
||||||
|
when: manual
|
||||||
|
- when: never
|
@ -101,6 +101,8 @@ commit footer refs:
|
|||||||
- if: '$CI_COMMIT_BRANCH == "development" || $CI_COMMIT_BRANCH == "master"'
|
- if: '$CI_COMMIT_BRANCH == "development" || $CI_COMMIT_BRANCH == "master"'
|
||||||
when: never
|
when: never
|
||||||
- if: '$CI_COMMIT_BRANCH && $CHANGELOG_FOOTER_REFERENCES != "False"'
|
- if: '$CI_COMMIT_BRANCH && $CHANGELOG_FOOTER_REFERENCES != "False"'
|
||||||
|
exists:
|
||||||
|
- .cz.yaml
|
||||||
when: always
|
when: always
|
||||||
- when: never
|
- when: never
|
||||||
|
|
||||||
|
47
lint/ansible.gitlab-ci.yaml
Normal file
47
lint/ansible.gitlab-ci.yaml
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
|
||||||
|
.ansible_linter_defaults:
|
||||||
|
stage: validation
|
||||||
|
variables:
|
||||||
|
ANSIBLE_LINT_PATH: defaults/ handlers/ meta/ tasks/ templates/
|
||||||
|
before_script:
|
||||||
|
- if [ "0$JOB_ROOT_DIR" == "0" ]; then ROOT_DIR=gitlab-ci; else ROOT_DIR=$JOB_ROOT_DIR ; fi
|
||||||
|
- echo "[DEBUG] ROOT_DIR[$ROOT_DIR]"
|
||||||
|
- mkdir -p "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME"
|
||||||
|
- mkdir -p "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/tests"
|
||||||
|
- export PYTHON_VERSION=`python -c 'import sys; version=sys.version_info[:3]; print("{0}.{1}.{2}".format(*version))'`
|
||||||
|
- apt update
|
||||||
|
- apt install --no-install-recommends -y git
|
||||||
|
- python3 -m venv env
|
||||||
|
- . env/bin/activate
|
||||||
|
- pip install --upgrade pip
|
||||||
|
- pip install -r $ROOT_DIR/lint/requirements.txt
|
||||||
|
- mkdir $PYTHON_VERSION
|
||||||
|
script:
|
||||||
|
- ansible-lint -q --nocolor --parseable $ANSIBLE_LINT_PATH > "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/$PYTHON_VERSION-ansible-lint.log" 1>&1 || ANSIBLE_LINT=$?
|
||||||
|
- cat "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/$PYTHON_VERSION-ansible-lint.log" | ansible-lint-to-junit-xml > "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/tests/$PYTHON_VERSION-ansible-lint.junit.xml" 1>&1 || ANSIBLE_LINT_JUNIT=$?
|
||||||
|
- ls -la $PYTHON_VERSION
|
||||||
|
- if [ $ANSIBLE_LINT_JUNIT > 0 ]; then echo "Error ANSIBLE_LINT_JUNIT failed with $ANSIBLE_LINT_JUNIT"; fi
|
||||||
|
- if [ $ANSIBLE_LINT -ge 3 ]; then echo "ansible lint failed with $ANSIBLE_LINT"; exit $ANSIBLE_LINT; fi # don't fail the job?? 1=failed test, 2=failed command i.e. switch/flag
|
||||||
|
after_script:
|
||||||
|
- echo deactivate
|
||||||
|
artifacts:
|
||||||
|
expire_in: 3 days
|
||||||
|
when: always
|
||||||
|
paths:
|
||||||
|
- "artifacts/*"
|
||||||
|
reports:
|
||||||
|
junit:
|
||||||
|
- "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/tests/*.junit.xml"
|
||||||
|
rules:
|
||||||
|
- if: '$JOB_STOP_ANSIBLE_LINT'
|
||||||
|
when: never
|
||||||
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||||
|
when: never
|
||||||
|
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||||
|
when: always
|
||||||
|
- if: '$CI_COMMIT_TAG'
|
||||||
|
when: always
|
||||||
|
- if: '$CI_COMMIT_BRANCH'
|
||||||
|
when: always
|
||||||
|
- when: never
|
||||||
|
|
11
lint/requirements.txt
Normal file
11
lint/requirements.txt
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
pipenv==2022.1.8
|
||||||
|
wheel
|
||||||
|
ansible
|
||||||
|
setuptools_rust
|
||||||
|
Rust
|
||||||
|
ansible-lint==6.15.0
|
||||||
|
yamllint==1.31.0
|
||||||
|
lxml
|
||||||
|
ansible-lint-junit==0.17.7
|
||||||
|
ansible-lint-to-junit-xml==0.1.0
|
@ -2,7 +2,7 @@
|
|||||||
.yaml_lint_defaults:
|
.yaml_lint_defaults:
|
||||||
variables:
|
variables:
|
||||||
YAML_LINT_PATH: "."
|
YAML_LINT_PATH: "."
|
||||||
YAML_LINT_EXTRA_ARGS: "{ extends: $ROOT_DIR/yaml_lint/.yamllint.yaml, ignore: [gitlab-ci/*] }"
|
YAML_LINT_EXTRA_ARGS: "{ extends: $ROOT_DIR/lint/.yamllint.yaml, ignore: [gitlab-ci/*] }"
|
||||||
stage: validation
|
stage: validation
|
||||||
before_script:
|
before_script:
|
||||||
- if [ "0$JOB_ROOT_DIR" == "0" ]; then ROOT_DIR=gitlab-ci; else ROOT_DIR=$JOB_ROOT_DIR ; fi
|
- if [ "0$JOB_ROOT_DIR" == "0" ]; then ROOT_DIR=gitlab-ci; else ROOT_DIR=$JOB_ROOT_DIR ; fi
|
||||||
@ -15,7 +15,7 @@
|
|||||||
- python3 -m venv env
|
- python3 -m venv env
|
||||||
- . env/bin/activate
|
- . env/bin/activate
|
||||||
- pip install --upgrade pip
|
- pip install --upgrade pip
|
||||||
- pip install -r $ROOT_DIR/yaml_lint/requirements.txt
|
- pip install -r $ROOT_DIR/lint/requirements.txt
|
||||||
- mkdir $PYTHON_VERSION
|
- mkdir $PYTHON_VERSION
|
||||||
script:
|
script:
|
||||||
- echo "[DEBUG] YAML_LINT_PATH[$YAML_LINT_PATH]"
|
- echo "[DEBUG] YAML_LINT_PATH[$YAML_LINT_PATH]"
|
27
template/ansible-role.gitlab-ci.yaml
Normal file
27
template/ansible-role.gitlab-ci.yaml
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# This gitlab-ci file is used for creating docker images.
|
||||||
|
# by including this file, the jobs will be autocreated.
|
||||||
|
|
||||||
|
include:
|
||||||
|
- local: $JOB_ROOT_DIR/.gitlab-ci_common.yaml
|
||||||
|
- local: $JOB_ROOT_DIR/lint/ansible.gitlab-ci.yaml
|
||||||
|
- local: $JOB_ROOT_DIR/conventional_commits/.gitlab-ci.yml
|
||||||
|
- local: $JOB_ROOT_DIR/git_push_mirror/.gitlab-ci.yml
|
||||||
|
- local: $JOB_ROOT_DIR/gitlab_release/.gitlab-ci.yml
|
||||||
|
|
||||||
|
|
||||||
|
Ansible Lint (python 3.11):
|
||||||
|
variables:
|
||||||
|
ANSIBLE_LINT_PATH: defaults/ handlers/ meta/ tasks/ templates/
|
||||||
|
extends:
|
||||||
|
- .ansible_linter_defaults
|
||||||
|
image: python:3.11-slim
|
||||||
|
|
||||||
|
|
||||||
|
Gitlab Release:
|
||||||
|
extends:
|
||||||
|
- .gitlab_release
|
||||||
|
|
||||||
|
|
||||||
|
Github (Push --mirror):
|
||||||
|
extends:
|
||||||
|
- .git_push_mirror
|
44
template/docker-image.gitlab-ci.yaml
Normal file
44
template/docker-image.gitlab-ci.yaml
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
# This gitlab-ci file is used for creating docker images.
|
||||||
|
# by including this file, the jobs will be autocreated.
|
||||||
|
|
||||||
|
include:
|
||||||
|
- local: $JOB_ROOT_DIR/.gitlab-ci_common.yaml
|
||||||
|
- local: $JOB_ROOT_DIR/conventional_commits/.gitlab-ci.yml
|
||||||
|
- local: $JOB_ROOT_DIR/docker/build.gitlab-ci.yaml
|
||||||
|
- local: $JOB_ROOT_DIR/docker/publish.gitlab-ci.yaml
|
||||||
|
- local: $JOB_ROOT_DIR/git_push_mirror/.gitlab-ci.yml
|
||||||
|
- local: $JOB_ROOT_DIR/gitlab_release/.gitlab-ci.yml
|
||||||
|
|
||||||
|
|
||||||
|
variables:
|
||||||
|
# Available platforms: linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/arm64, linux/riscv64, linux/ppc64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
|
||||||
|
# DOCKER_IMAGE_BUILD_TARGET_PLATFORMS: "linux/amd64,linux/arm64,linux/arm/v7"
|
||||||
|
DOCKER_IMAGE_BUILD_NAME: $CI_PROJECT_NAME
|
||||||
|
DOCKER_IMAGE_BUILD_REGISTRY: $CI_REGISTRY_IMAGE
|
||||||
|
DOCKER_IMAGE_BUILD_TAG: $CI_COMMIT_SHA
|
||||||
|
|
||||||
|
# DOCKER_IMAGE_PUBLISH_NAME: $CI_PROJECT_NAME
|
||||||
|
# DOCKER_IMAGE_PUBLISH_REGISTRY: docker.io/nofusscomputing
|
||||||
|
# DOCKER_IMAGE_PUBLISH_URL: https://hub.docker.com/r/nofusscomputing/$DOCKER_IMAGE_PUBLISH_NAME
|
||||||
|
# JOB_STOP_CONVENTIONAL_COMMITS: 'any_value'
|
||||||
|
# JOB_STOP_GIT_PUSH_MIRROR: 'any_value'
|
||||||
|
# GIT_SYNC_URL: "https://$GITHUB_USERNAME_ROBOT:$GITHUB_TOKEN_ROBOT@github.com/NoFussComputing/config.git" # Must be defined for job to run
|
||||||
|
# JOB_STOP_GITLAB_RELEASE: 'any value'
|
||||||
|
|
||||||
|
|
||||||
|
Docker Container:
|
||||||
|
extends: .build_docker_container
|
||||||
|
|
||||||
|
|
||||||
|
Docker Hub:
|
||||||
|
extends: .publish-docker-hub
|
||||||
|
|
||||||
|
|
||||||
|
Gitlab Release:
|
||||||
|
extends:
|
||||||
|
- .gitlab_release
|
||||||
|
|
||||||
|
|
||||||
|
Github (Push --mirror):
|
||||||
|
extends:
|
||||||
|
- .git_push_mirror
|
@ -1,224 +0,0 @@
|
|||||||
# This gitlab-ci file is used for creating docker images.
|
|
||||||
# by including this file, the jobs will be autocreated.
|
|
||||||
|
|
||||||
include:
|
|
||||||
- local: $JOB_ROOT_DIR/.gitlab-ci_common.yaml
|
|
||||||
- local: $JOB_ROOT_DIR/conventional_commits/.gitlab-ci.yml
|
|
||||||
- local: $JOB_ROOT_DIR/git_push_mirror/.gitlab-ci.yml
|
|
||||||
- local: $JOB_ROOT_DIR/gitlab_release/.gitlab-ci.yml
|
|
||||||
|
|
||||||
|
|
||||||
variables:
|
|
||||||
# Available platforms: linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/arm64, linux/riscv64, linux/ppc64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
|
|
||||||
# DOCKER_IMAGE_BUILD_TARGET_PLATFORMS: "linux/amd64,linux/arm64,linux/arm/v7"
|
|
||||||
DOCKER_IMAGE_BUILD_NAME: $CI_PROJECT_NAME
|
|
||||||
DOCKER_IMAGE_BUILD_REGISTRY: $CI_REGISTRY_IMAGE
|
|
||||||
DOCKER_IMAGE_BUILD_TAG: $CI_COMMIT_SHA
|
|
||||||
|
|
||||||
# DOCKER_IMAGE_PUBLISH_NAME: $CI_PROJECT_NAME
|
|
||||||
# DOCKER_IMAGE_PUBLISH_REGISTRY: docker.io/nofusscomputing
|
|
||||||
# DOCKER_IMAGE_PUBLISH_URL: https://hub.docker.com/r/nofusscomputing/$DOCKER_IMAGE_PUBLISH_NAME
|
|
||||||
# JOB_STOP_CONVENTIONAL_COMMITS: 'any_value'
|
|
||||||
# JOB_STOP_GIT_PUSH_MIRROR: 'any_value'
|
|
||||||
# GIT_SYNC_URL: "https://$GITHUB_USERNAME_ROBOT:$GITHUB_TOKEN_ROBOT@github.com/NoFussComputing/config.git" # Must be defined for job to run
|
|
||||||
# JOB_STOP_GITLAB_RELEASE: 'any value'
|
|
||||||
|
|
||||||
|
|
||||||
.build_docker_container:
|
|
||||||
stage: build
|
|
||||||
image: nofusscomputing/docker-buildx-qemu:dev
|
|
||||||
services:
|
|
||||||
- name: docker:23-dind
|
|
||||||
entrypoint: ["env", "-u", "DOCKER_HOST"]
|
|
||||||
command: ["dockerd-entrypoint.sh"]
|
|
||||||
variables:
|
|
||||||
DOCKER_HOST: tcp://docker:2375/
|
|
||||||
DOCKER_DRIVER: overlay2
|
|
||||||
# See https://github.com/docker-library/docker/pull/166
|
|
||||||
DOCKER_TLS_CERTDIR: ""
|
|
||||||
before_script:
|
|
||||||
- if [ "0$JOB_ROOT_DIR" == "0" ]; then ROOT_DIR=gitlab-ci; else ROOT_DIR=$JOB_ROOT_DIR ; fi
|
|
||||||
- echo "[DEBUG] ROOT_DIR[$ROOT_DIR]"
|
|
||||||
- docker info
|
|
||||||
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
|
|
||||||
#- pip3 install -r gitlab-ci/gitlab_release/requirements.txt
|
|
||||||
- pip3 install setuptools wheel
|
|
||||||
- pip install -r $ROOT_DIR/conventional_commits/requirements.txt
|
|
||||||
- pip3 install gitlab-ci/gitlab_release/python-module/cz_nfc/.
|
|
||||||
- update-binfmts --enable # Important: Ensures execution of other binary formats is enabled in the kernel
|
|
||||||
- docker buildx create --driver=docker-container --driver-opt image=moby/buildkit:v0.11.6 --use
|
|
||||||
- docker buildx inspect --bootstrap
|
|
||||||
|
|
||||||
|
|
||||||
# --label org.opencontainers.image.url="$CI_PROJECT_URL/-/releases/$(cz -n cz_nfc version --project)" \
|
|
||||||
# --label org.opencontainers.image.version="$(cz -n cz_nfc version --project)" \
|
|
||||||
script: |
|
|
||||||
|
|
||||||
if [ "0$DOCKER_IMAGE_BUILD_TARGET_PLATFORMS" != "0" ]; then
|
|
||||||
|
|
||||||
echo "[DEBUG] building multiarch/specified arch image";
|
|
||||||
|
|
||||||
docker buildx build --platform=$DOCKER_IMAGE_BUILD_TARGET_PLATFORMS . \
|
|
||||||
--label org.opencontainers.image.created="$(date '+%Y-%m-%d %H:%M:%S%:z')" \
|
|
||||||
--label org.opencontainers.image.documentation="$CI_PROJECT_URL" \
|
|
||||||
--label org.opencontainers.image.source="$CI_PROJECT_URL" \
|
|
||||||
--label org.opencontainers.image.revision="$CI_COMMIT_SHA" \
|
|
||||||
--no-cache \
|
|
||||||
--push \
|
|
||||||
--tag $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG;
|
|
||||||
|
|
||||||
docker buildx imagetools inspect $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG;
|
|
||||||
|
|
||||||
# during docker multi platform build there are >=3 additional unknown images added to gitlab container registry. cleanup
|
|
||||||
|
|
||||||
DOCKER_MULTI_ARCH_IMAGES=$(docker buildx imagetools inspect "$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG" --format "{{ range .Manifest.Manifests }}{{ if ne (print .Platform) \"&{unknown unknown [] }\" }}$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG@{{ println .Digest }}{{end}} {{end}}");
|
|
||||||
|
|
||||||
docker buildx imagetools create $DOCKER_MULTI_ARCH_IMAGES --tag $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG;
|
|
||||||
|
|
||||||
docker buildx imagetools inspect $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG;
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
echo "[DEBUG] building image";
|
|
||||||
|
|
||||||
docker build . \
|
|
||||||
--label org.opencontainers.image.created="$(date '+%Y-%m-%d %H:%M:%S%:z')" \
|
|
||||||
--label org.opencontainers.image.documentation="$CI_PROJECT_URL" \
|
|
||||||
--label org.opencontainers.image.source="$CI_PROJECT_URL" \
|
|
||||||
--label org.opencontainers.image.url="$CI_PROJECT_URL/-/releases/$(cz -n cz_nfc version --project)" \
|
|
||||||
--label org.opencontainers.image.version="$(cz -n cz_nfc version --project)" \
|
|
||||||
--label org.opencontainers.image.revision="$CI_COMMIT_SHA" \
|
|
||||||
--no-cache \
|
|
||||||
--tag $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG;
|
|
||||||
|
|
||||||
docker push $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG;
|
|
||||||
|
|
||||||
fi
|
|
||||||
rules:
|
|
||||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
||||||
when: never
|
|
||||||
- if: $CI_COMMIT_TAG
|
|
||||||
when: on_success
|
|
||||||
- if: '$CI_COMMIT_BRANCH == "development"'
|
|
||||||
when: on_success
|
|
||||||
- if: '$CI_COMMIT_BRANCH != "master"'
|
|
||||||
when: always
|
|
||||||
- when: never
|
|
||||||
|
|
||||||
|
|
||||||
.publish-docker-hub:
|
|
||||||
stage: publish
|
|
||||||
image: docker:23-dind
|
|
||||||
services:
|
|
||||||
- docker:23-dind
|
|
||||||
before_script:
|
|
||||||
- |
|
|
||||||
|
|
||||||
docker login $CI_REGISTRY -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD;
|
|
||||||
|
|
||||||
if [ "0$DOCKER_IMAGE_BUILD_TARGET_PLATFORMS" != "0" ]; then
|
|
||||||
|
|
||||||
for i in ${DOCKER_IMAGE_BUILD_TARGET_PLATFORMS//,/ }
|
|
||||||
do
|
|
||||||
|
|
||||||
docker buildx imagetools inspect $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG;
|
|
||||||
|
|
||||||
#DOCKER_MULTI_ARCH_IMAGES=$(docker buildx imagetools inspect "$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG" --format "{{ range .Manifest.Manifests }}{{ if ne (print .Platform) \"&{unknown unknown [] }\" }}$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG@{{ println .Digest }}{{end}} {{end}}")
|
|
||||||
DOCKER_MULTI_ARCH_IMAGES=$(docker buildx imagetools inspect "$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG" --format "{{ range .Manifest.Manifests }}$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG@{{ println .Digest }} {{end}}")
|
|
||||||
|
|
||||||
|
|
||||||
echo "[DEBUG] DOCKER_MULTI_ARCH_IMAGES=$DOCKER_MULTI_ARCH_IMAGES";
|
|
||||||
|
|
||||||
done;
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
docker pull $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG;
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
#docker logout $CI_REGISTRY; # commented out to test if for private repo remaining logged in works to allow pulling image
|
|
||||||
|
|
||||||
script:
|
|
||||||
- docker login docker.io -u $NFC_DOCKERHUB_USERNAME -p $NFC_DOCKERHUB_TOKEN
|
|
||||||
- docker image ls
|
|
||||||
- |
|
|
||||||
DOCKER_HUB_TAG=dev
|
|
||||||
|
|
||||||
if [ "0$CI_COMMIT_TAG" != "0" ]; then
|
|
||||||
|
|
||||||
DOCKER_HUB_TAG=latest
|
|
||||||
|
|
||||||
if [ "0$CI_COMMIT_TAG" == *"rc"* ]; then
|
|
||||||
|
|
||||||
DOCKER_HUB_TAG=dev
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "[DEBUG] DOCKER_IMAGE_PUBLISH_NAME=$DOCKER_IMAGE_PUBLISH_NAME";
|
|
||||||
echo "[DEBUG] DOCKER_HUB_TAG=$DOCKER_HUB_TAG";
|
|
||||||
|
|
||||||
if [ "0$DOCKER_IMAGE_BUILD_TARGET_PLATFORMS" != "0" ]; then
|
|
||||||
|
|
||||||
echo "[DEBUG] DOCKER_MULTI_ARCH_IMAGES=$DOCKER_MULTI_ARCH_IMAGES";
|
|
||||||
|
|
||||||
docker buildx imagetools create $DOCKER_MULTI_ARCH_IMAGES --tag $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$DOCKER_HUB_TAG;
|
|
||||||
|
|
||||||
if [ "0$CI_COMMIT_TAG" != "0" ]; then
|
|
||||||
|
|
||||||
docker buildx imagetools create $DOCKER_MULTI_ARCH_IMAGES --tag $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$CI_COMMIT_TAG;
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
docker image tag $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$DOCKER_HUB_TAG;
|
|
||||||
|
|
||||||
docker push $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_HUB_TAG;
|
|
||||||
|
|
||||||
if [ "0$CI_COMMIT_TAG" != "0" ]; then
|
|
||||||
|
|
||||||
docker image tag $DOCKER_IMAGE_BUILD_NAME/$DOCKER_IMAGE_BUILD_REGISTRY:$DOCKER_IMAGE_BUILD_TAG $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$CI_COMMIT_TAG;
|
|
||||||
|
|
||||||
docker push $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$CI_COMMIT_TAG;
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
- docker logout docker.io
|
|
||||||
needs: [ "Docker Container" ]
|
|
||||||
environment:
|
|
||||||
name: DockerHub
|
|
||||||
url: $DOCKER_IMAGE_PUBLISH_URL
|
|
||||||
rules:
|
|
||||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
||||||
when: never
|
|
||||||
- if: $CI_COMMIT_TAG
|
|
||||||
when: on_success
|
|
||||||
- if: '$CI_COMMIT_BRANCH == "development"'
|
|
||||||
when: on_success
|
|
||||||
- if: '$CI_COMMIT_BRANCH != "master"'
|
|
||||||
allow_failure: true
|
|
||||||
when: manual
|
|
||||||
- when: never
|
|
||||||
|
|
||||||
|
|
||||||
Docker Container:
|
|
||||||
extends: .build_docker_container
|
|
||||||
|
|
||||||
|
|
||||||
Docker Hub:
|
|
||||||
extends: .publish-docker-hub
|
|
||||||
|
|
||||||
|
|
||||||
Gitlab Release:
|
|
||||||
extends:
|
|
||||||
- .gitlab_release
|
|
||||||
|
|
||||||
|
|
||||||
Github (Push --mirror):
|
|
||||||
extends:
|
|
||||||
- .git_push_mirror
|
|
@ -1,2 +0,0 @@
|
|||||||
yamllint
|
|
||||||
ansible-lint-to-junit-xml
|
|
Reference in New Issue
Block a user