From c3e3ff09594084432fb782f1a67e19e455735159 Mon Sep 17 00:00:00 2001 From: Hornwitser Date: Sat, 13 Jul 2024 12:26:16 +0200 Subject: [PATCH] Implement builder image Add docker build to create a shared image for running CI pipelines and docker builds based on debian. --- .gitlab-ci.yml | 17 +++++++++++++++++ Dockerfile | 27 +++++++++++++++++++++++++++ Readme.md | 9 +++++++++ tag-release.sh | 11 +++++++++++ 4 files changed, 64 insertions(+) create mode 100644 .gitlab-ci.yml create mode 100644 Dockerfile create mode 100644 Readme.md create mode 100644 tag-release.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..01defa6 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,17 @@ +default: + image: docker:24.0.5 + +build: + stage: build + script: + - docker build $CI_PROJECT_DIR + --tag ${REGISTRY_IMAGE}:${CI_COMMIT_REF_SLUG} + $(echo "$CI_COMMIT_TAG" | if grep -q $(date -u '+^r%g\.%-V\.\(0\|[1-9][0-9]*\)$'); + then echo --tag ${REGISTRY_IMAGE}:latest; + fi) + +deploy: + stage: deploy + script: + - echo "$REGISTRY_PASSWORD" | docker login $CI_REGISTRY -u $REGISTRY_USER --password-stdin + - docker push --all-tags ${REGISTRY_IMAGE} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..ef142f1 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,27 @@ +FROM debian:bookworm + +RUN set -eux; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + ca-certificates \ + curl \ + git \ + ; \ + install -m 0755 -d /etc/apt/keyrings; \ + curl -sSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc; \ + chmod a+r /etc/apt/keyrings/docker.asc; \ + echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \ + https://download.docker.com/linux/debian \ + bookworm stable" \ + > /etc/apt/sources.list.d/docker.list; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + docker-ce-cli \ + docker-buildx-plugin \ + docker-compose-plugin \ + ; \ + rm -rf /var/lib/apt/lists/* + +# References: +# - docker: https://docs.docker.com/engine/install/debian/#install-from-a-package \ No newline at end of file diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..53b82a5 --- /dev/null +++ b/Readme.md @@ -0,0 +1,9 @@ +# Builder + +Common docker image used for running application builds, CI pipelines, and deployment scripts based on Debian 12. + +## Tools included + +- `docker` +- `curl` +- `git` \ No newline at end of file diff --git a/tag-release.sh b/tag-release.sh new file mode 100644 index 0000000..24575c1 --- /dev/null +++ b/tag-release.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# Finds the next available r.. identifier for the current year and week +YEAR_WEEK=$(date -u +%g.%-V) +YEAR=${YEAR_WEEK:0:2} +WEEK=${YEAR_WEEK:3} +LAST_BUMP=$(git tag --list | grep '^r'$YEAR'\.'$WEEK'\.\(0\|[1-9][0-9]*\)$' | cut -d . -f 3 | sort -nr | head -n 1) +RELEASE=r${YEAR_WEEK}.$(( ${LAST_BUMP:--1} + 1 )) + +git tag $RELEASE +echo Tagged $RELEASE