75 lines
2.4 KiB
YAML
75 lines
2.4 KiB
YAML
---
|
|
|
|
default:
|
|
image: quay.io/buildah/stable:v1.28.0
|
|
tags:
|
|
- docker
|
|
- linux
|
|
|
|
# Since jobs are using 'rules' it's possible for duplicate pipelines to run
|
|
# (one for push to mr-branch, another for mr. Avoid this:
|
|
workflow:
|
|
rules:
|
|
- if: $CI_PIPELINE_SOURCE == "schedule"
|
|
- if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS && $CI_PIPELINE_SOURCE == "push"
|
|
when: never
|
|
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
|
- if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
|
|
when: never
|
|
- if: $CI_COMMIT_TAG == $CI
|
|
|
|
envars:
|
|
stage: test
|
|
script: |
|
|
echo "Select CI env. vars.:";
|
|
printenv | egrep '^CI_' | sort
|
|
|
|
commit_check:
|
|
stage: test
|
|
rules:
|
|
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
|
variables:
|
|
BADRX: '^(squash!)|(fixup!)'
|
|
script: |
|
|
dnf install -y git
|
|
shortlogtmp=$(mktemp -p '' commit_check_tmp_XXXX)
|
|
git log --oneline --no-show-signature "${CI_MERGE_REQUEST_DIFF_BASE_SHA}..HEAD" > "$shortlogtmp"
|
|
if egrep -q "$BADRX" "$shortlogtmp"; then
|
|
egrep "$BADRX" "$shortlogtmp"
|
|
die "Found the above commits matching '$BADRX'"
|
|
fi
|
|
|
|
build:
|
|
stage: deploy
|
|
rules:
|
|
- if: $CI_COMMIT_TAG
|
|
- if: $CI_COMMIT_BRANCH == "main"
|
|
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
|
variables:
|
|
BUILDAH_FORMAT: docker
|
|
BUILDAH_ISOLATION: chroot
|
|
STORAGE_DRIVER: vfs
|
|
before_script:
|
|
- echo "$CI_REGISTRY_PASSWORD" | buildah login -u "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY
|
|
script:
|
|
# N/B: There could be more than one merge-request open with this branch's HEAD
|
|
- |
|
|
IMAGE_TAG="${CI_COMMIT_BRANCH}";
|
|
if [[ -n "$CI_COMMIT_TAG" ]]; then
|
|
IMAGE_TAG="${CI_COMMIT_TAG}";
|
|
elif [[ -n "$CI_OPEN_MERGE_REQUESTS" ]]; then
|
|
IMAGE_TAG=mr$(echo "${CI_OPEN_MERGE_REQUESTS}" | cut -d, -f -1 | cut -d\! -f 2);
|
|
elif [[ "$CI_COMMIT_BRANCH" == "main" ]]; then
|
|
IMAGE_TAG="latest";
|
|
fi
|
|
echo "Building/Pushing to: ${CI_REGISTRY_IMAGE}:${IMAGE_TAG}";
|
|
- >-
|
|
buildah build \
|
|
--label "org.opencontainers.image.source=${CI_PROJECT_URL}" \
|
|
--label "org.opencontainers.image.revision=$CI_COMMIT_SHA" \
|
|
--label "org.opencontainers.image.created=$CI_JOB_STARTED_AT" \
|
|
--label "org.opencontainers.image.version=${IMAGE_TAG}" \
|
|
-t "${CI_REGISTRY_IMAGE}:${IMAGE_TAG}" "$CI_PROJECT_DIR"
|
|
- buildah images
|
|
- buildah push "${CI_REGISTRY_IMAGE}:${IMAGE_TAG}"
|