haproxy/.gitlab-ci.yml

248 lines
8.2 KiB
YAML
Raw Normal View History

2022-06-05 10:01:53 +05:30
stages:
2022-06-06 10:24:43 +05:30
- dependencies
2022-06-06 12:44:11 +05:30
- build
- publish
2022-06-14 05:41:59 +05:30
variables: &default-variables
TZ: "UTC"
GIT_DEPTH: "1"
2022-06-14 05:41:59 +05:30
.haproxy_stable: &haproxy-stable
HAPROXY_VERSION: 2.6.0
HAPROXY_GITREF: v2.6.0
.haproxy_dev: &haproxy-dev
HAPROXY_VERSION: 2.7-dev
# https://git.haproxy.org/?p=haproxy.git;a=commit;h=040955fb39f8df183adda6fa19761a1ede36f624
HAPROXY_GITREF: 040955fb39f8df183adda6fa19761a1ede36f624
2022-06-06 10:24:43 +05:30
.build-job: &build-job
image: registry.gitlab.com/mangadex-pub/debuilder/buster:main
needs: [ ]
before_script:
- apt -qq update
- apt install -y --no-install-recommends -qq build-essential ca-certificates cmake curl git libreadline-dev libsystemd-dev tar
2022-06-06 10:24:43 +05:30
lua:
<<: *build-job
stage: dependencies
2022-06-06 10:48:58 +05:30
script: make -C deps/lua
artifacts:
expire_in: 7 days
paths: [ "deps/lua/lua-dist.tar.gz" ]
2022-06-05 10:01:53 +05:30
2022-06-06 10:24:43 +05:30
pcre2:
<<: *build-job
stage: dependencies
2022-06-06 10:48:58 +05:30
script: make -C deps/pcre2
2022-06-06 10:24:43 +05:30
artifacts:
expire_in: 7 days
paths: [ "deps/pcre2/pcre2-dist.tar.gz" ]
2022-06-05 10:01:53 +05:30
2022-06-06 10:24:43 +05:30
quictls:
<<: *build-job
stage: dependencies
2022-06-14 05:41:59 +05:30
script:
- make -C deps/quictls
- |
set -eu
PKG_VER="$(cat deps/quictls/Makefile | head -n1 | cut -d'=' -f2 | tr -d ' ')"
2022-06-14 05:55:29 +05:30
QUICTLS_VER="$PKG_VER"
2022-06-14 05:41:59 +05:30
if [ "$CI_COMMIT_REF_NAME" != "$CI_DEFAULT_BRANCH" ]; then
export PKG_VER="branch-$CI_COMMIT_REF_SLUG"
echo "Git reference $CI_COMMIT_REF_NAME is not the default branch. Setting version to $PKG_VER"
fi
curl -fsSL \
-H"JOB-TOKEN: $CI_JOB_TOKEN" \
--upload-file "deps/quictls/quictls-dist.tar.gz" \
2022-06-14 05:55:29 +05:30
"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/quictls/$PKG_VER/quictls-$QUICTLS_VER.tar.gz"
2022-06-06 10:24:43 +05:30
artifacts:
expire_in: 7 days
paths: [ "deps/quictls/quictls-dist.tar.gz" ]
2022-06-05 10:01:53 +05:30
2022-06-14 05:41:59 +05:30
.haproxy-build: &haproxy-build
2022-06-06 10:24:43 +05:30
<<: *build-job
2022-06-06 12:44:11 +05:30
stage: build
script:
- apt install -y --no-install-recommends -qq bzip2 git
- mkdir deps/lua/dist && tar -C deps/lua/dist -xf deps/lua/lua-dist.tar.gz
- mkdir deps/pcre2/dist && tar -C deps/pcre2/dist -xf deps/pcre2/pcre2-dist.tar.gz
- mkdir deps/quictls/dist && tar -C deps/quictls/dist -xf deps/quictls/quictls-dist.tar.gz
2022-06-14 05:41:59 +05:30
- make -C haproxy HAPROXY_VERSION=$HAPROXY_VERSION HAPROXY_GITREF=$HAPROXY_GITREF
- |
set -eu
PKG_VER=$HAPROXY_VERSION
if [ "$CI_COMMIT_REF_NAME" != "$CI_DEFAULT_BRANCH" ]; then
2022-06-14 05:55:29 +05:30
export PKG_VER="branch-$CI_COMMIT_REF_SLUG-$HAPROXY_VERSION-$HAPROXY_GITREF"
2022-06-14 05:41:59 +05:30
echo "Git reference $CI_COMMIT_REF_NAME is not the default branch. Setting version to $PKG_VER"
fi
curl -fsSL \
-H"JOB-TOKEN: $CI_JOB_TOKEN" \
--upload-file "haproxy/haproxy-dist.tar.gz" \
2022-06-14 05:55:29 +05:30
"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/haproxy/$PKG_VER/haproxy-$HAPROXY_VERSION.tar.gz"
2022-06-06 10:24:43 +05:30
needs:
- job: lua
artifacts: true
- job: pcre2
artifacts: true
- job: quictls
artifacts: true
artifacts:
expire_in: 7 days
paths: [ "haproxy/dist", "haproxy/haproxy-dist.tar.gz" ]
2022-06-06 12:44:11 +05:30
2022-06-14 05:41:59 +05:30
haproxy:stable:
<<: *haproxy-build
variables:
<<: *default-variables
<<: *haproxy-stable
haproxy:dev:
<<: *haproxy-build
variables:
<<: *default-variables
<<: *haproxy-dev
.docker: &docker
2022-06-06 12:44:11 +05:30
stage: publish
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [ "" ]
before_script:
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"gitlab-ci-token\",\"password\":\"$CI_JOB_TOKEN\"}}}" > /kaniko/.docker/config.json
script: |
set -eu
2022-06-06 12:54:06 +05:30
export DEBIAN_CODENAME="bullseye"
2022-06-06 12:44:11 +05:30
export JOB_TIMESTAMP="$(date -D '%Y-%m-%dT%H:%M:%S%Z' -d "$CI_JOB_STARTED_AT" +'%Y%m%d-%H%M')"
2022-06-14 05:41:59 +05:30
# A.B.C -> A.B, otherwise preserve original; so 2.7-dev -> 2.7-dev
if echo "$HAPROXY_VERSION" | grep -E '([0-9]\.){2}[0-9]'; then
export HAPROXY_SHORTVER="$(echo "$HAPROXY_VERSION" | cut -d'.' -f1-2)"
else
export HAPROXY_SHORTVER=$HAPROXY_VERSION
fi
2022-06-06 12:44:11 +05:30
echo "Building image with"
echo " -> haproxy version: $HAPROXY_VERSION ($HAPROXY_SHORTVER)"
2022-06-06 12:44:11 +05:30
echo " -> debian codename: $DEBIAN_CODENAME"
echo " -> git commit hash: $CI_COMMIT_SHORT_SHA"
echo " -> build timestamp: $JOB_TIMESTAMP"
2022-06-14 05:55:29 +05:30
export IMAGE_TAG_UNIQUE="$CI_COMMIT_SHORT_SHA-$JOB_TIMESTAMP-$HAPROXY_SHORTVER-$HAPROXY_GITREF"
export IMAGE_TAG_ROLLING_COMMIT="git-$CI_COMMIT_SHORT_SHA-$HAPROXY_VERSION"
export IMAGE_TAG_ROLLING_GITREF="$CI_COMMIT_REF_SLUG-$HAPROXY_VERSION"
2022-06-06 12:44:11 +05:30
export IMAGE_TAG_VERSIONS="$HAPROXY_VERSION-$DEBIAN_CODENAME"
export IMAGE_TAG_SHORTVER="$HAPROXY_SHORTVER-$DEBIAN_CODENAME"
2022-06-06 12:44:11 +05:30
if [ "$CI_COMMIT_REF_NAME" != "$CI_DEFAULT_BRANCH" ]; then
export IMAGE_TAG_VERSIONS="branch-$CI_COMMIT_REF_SLUG-$IMAGE_TAG_VERSIONS"
export IMAGE_TAG_SHORTVER="branch-$CI_COMMIT_REF_SLUG-$IMAGE_TAG_SHORTVER"
echo "Git reference $CI_COMMIT_REF_NAME is not the default branch. Rewriting git rolling tag as $IMAGE_TAG_VERSIONS / $IMAGE_TAG_SHORTVER"
2022-06-06 12:44:11 +05:30
fi
echo "***"
echo "Will build and push image as:"
echo "- $CI_REGISTRY_IMAGE:$IMAGE_TAG_UNIQUE"
echo "- $CI_REGISTRY_IMAGE:$IMAGE_TAG_ROLLING_COMMIT"
echo "- $CI_REGISTRY_IMAGE:$IMAGE_TAG_ROLLING_GITREF"
echo "- $CI_REGISTRY_IMAGE:$IMAGE_TAG_VERSIONS"
echo "- $CI_REGISTRY_IMAGE:$IMAGE_TAG_SHORTVER"
2022-06-06 12:44:11 +05:30
echo "***"
(
set -x;
/kaniko/executor \
--context . \
--dockerfile Dockerfile \
--build-arg "CANONICAL_VERSION=$IMAGE_TAG_UNIQUE" \
--destination "$CI_REGISTRY_IMAGE:$IMAGE_TAG_UNIQUE" \
--destination "$CI_REGISTRY_IMAGE:$IMAGE_TAG_ROLLING_COMMIT" \
--destination "$CI_REGISTRY_IMAGE:$IMAGE_TAG_ROLLING_GITREF" \
--destination "$CI_REGISTRY_IMAGE:$IMAGE_TAG_VERSIONS" \
--destination "$CI_REGISTRY_IMAGE:$IMAGE_TAG_SHORTVER" \
2022-06-06 12:44:11 +05:30
--single-snapshot
)
2022-06-14 05:41:59 +05:30
docker:stable:
<<: *docker
variables:
<<: *default-variables
<<: *haproxy-stable
2022-06-06 12:44:11 +05:30
needs:
- job: quictls
artifacts: true
2022-06-14 05:41:59 +05:30
- job: "haproxy:stable"
2022-06-06 12:44:11 +05:30
artifacts: true
2022-06-14 05:41:59 +05:30
docker:dev:
<<: *docker
variables:
<<: *default-variables
<<: *haproxy-dev
needs:
- job: quictls
artifacts: true
2022-06-14 05:41:59 +05:30
- job: "haproxy:dev"
artifacts: true
2022-06-07 08:36:13 +05:30
2022-06-14 06:06:44 +05:30
.debian: &debian
2022-06-07 11:44:34 +05:30
<<: *build-job
stage: build
script:
- apt install -y --no-install-recommends -qq bzip2 devscripts debhelper pkg-config
2022-06-07 11:44:34 +05:30
- mkdir deps/lua/dist && tar -C deps/lua/dist -xf deps/lua/lua-dist.tar.gz
- mkdir deps/pcre2/dist && tar -C deps/pcre2/dist -xf deps/pcre2/pcre2-dist.tar.gz
- mkdir deps/quictls/dist && tar -C deps/quictls/dist -xf deps/quictls/quictls-dist.tar.gz
2022-06-14 05:41:59 +05:30
- export BUILD_MESSAGE="$CI_COMMIT_MESSAGE"
- make -C haproxy dist-deb HAPROXY_VERSION=$HAPROXY_VERSION HAPROXY_GITREF=$HAPROXY_GITREF
2022-06-07 16:55:39 +05:30
- |
set -euo pipefail
PACKAGE_NAME="haproxy-debian"
2022-06-07 16:55:39 +05:30
DEB_VERSION="$(cat haproxy/*.dsc | grep -E '^Version:' | cut -d' ' -f2-)"
if [ "$CI_COMMIT_REF_NAME" != "$CI_DEFAULT_BRANCH" ]; then
export PACKAGE_NAME="haproxy-debian-branches"
export DEB_VERSION="branch-$CI_COMMIT_REF_SLUG"
echo "Git reference $CI_COMMIT_REF_NAME is not the default branch. Setting coordinates to $PACKAGE_NAME/$DEB_VERSION"
fi
GITLAB_IS_LAME_DEB_VERSION=$(echo "${DEB_VERSION}" | tr '~' '-')
echo "Publishing Debian package version ${DEB_VERSION} to haproxy-debian@${GITLAB_IS_LAME_DEB_VERSION}"
2022-06-07 16:55:39 +05:30
for artifact in haproxy/haproxy*.deb; do
artifact_filename=$(basename "${artifact}")
gitlab_is_lame_artifact_filename=$(echo "${artifact_filename}" | tr '~' '-' | tr '+' '-')
echo "Uploading to haproxy-debian@${DEB_VERSION}... ${artifact_filename} -> ${gitlab_is_lame_artifact_filename}"
2022-06-07 16:55:39 +05:30
curl -fsSL -H"JOB-TOKEN: $CI_JOB_TOKEN" \
--upload-file "${artifact}" \
"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${PACKAGE_NAME}/${GITLAB_IS_LAME_DEB_VERSION}/${gitlab_is_lame_artifact_filename}"
2022-06-07 16:55:39 +05:30
echo "OK"
done
2022-06-07 11:44:34 +05:30
needs:
- job: lua
artifacts: true
- job: pcre2
artifacts: true
- job: quictls
artifacts: true
2022-06-07 16:55:39 +05:30
artifacts:
expire_in: 7 days
paths: [ "haproxy/haproxy*" ]
2022-06-14 05:41:59 +05:30
debian:stable:
<<: *debian
variables:
<<: *default-variables
<<: *haproxy-stable
debian:dev:
<<: *debian
variables:
<<: *default-variables
<<: *haproxy-dev