improve deployment process

This commit is contained in:
2025-10-23 11:06:52 +02:00
parent 5edd9dedb6
commit 3012e5b994
4 changed files with 66 additions and 23 deletions

29
Jenkinsfile vendored
View File

@@ -15,18 +15,7 @@ pipeline {
}
}
stage('Build image') {
steps {
sh """
docker build \
--file kirby/Dockerfile \
--tag ${IMAGE_REF} \
kirby
"""
}
}
stage('Push image') {
stage('Build & Push image') {
steps {
withCredentials([usernamePassword(
credentialsId: 'gitea-container-registry',
@@ -34,9 +23,23 @@ pipeline {
passwordVariable: 'REGISTRY_PASSWORD'
)]) {
sh """
if ! docker buildx inspect jenkins-builder >/dev/null 2>&1; then
docker buildx create --name jenkins-builder --use
else
docker buildx use jenkins-builder
fi
docker buildx inspect --bootstrap
echo "${REGISTRY_PASSWORD}" | docker login ${REGISTRY_HOST} \
--username "${REGISTRY_USER}" --password-stdin
docker push ${IMAGE_REF}
docker buildx build \
--platform linux/amd64 \
--file Dockerfile \
--tag ${IMAGE_REF} \
--push \
.
docker logout ${REGISTRY_HOST}
"""
}

View File

@@ -3,8 +3,36 @@
set -euo pipefail
USER_ID="${USERID:-}"
GROUP_ID="${GROUPID:-}"
if [[ -n "${GROUP_ID}" ]]; then
CURRENT_GID="$(getent group kirbygroup | cut -d: -f3 || true)"
if [[ "${GROUP_ID}" != "${CURRENT_GID}" ]]; then
groupmod --gid "${GROUP_ID}" kirbygroup
fi
fi
if [[ -n "${USER_ID}" && "${USER_ID}" != "$(id -u www-data)" ]]; then
usermod --uid "${USER_ID}" www-data
fi
if [[ -n "${GROUP_ID}" ]]; then
usermod --gid "${GROUP_ID}" www-data
fi
WRITABLE_DIRS=(
"/var/www/html/content"
"/var/www/html/media"
"/var/www/html/site/accounts"
"/var/www/html/site/cache"
"/var/www/html/site/logs"
"/var/www/html/storage"
)
for dir in "${WRITABLE_DIRS[@]}"; do
mkdir -p "${dir}"
chown -R www-data:kirbygroup "${dir}"
chmod -R g+rwX "${dir}"
done
exec "$@"

5
id.env
View File

@@ -1,2 +1,3 @@
# Match the container's www-data user to your local user ID
USERID=1111
# Match the container's www-data user/group to your local IDs
USERID=1004
GROUPID=1003

View File

@@ -21,20 +21,23 @@ if ! command -v docker >/dev/null 2>&1; then
exit 1
fi
if ! docker buildx version >/dev/null 2>&1; then
echo "Docker Buildx is required but not available. Please install/enable it in Docker Desktop or via the CLI plugin." >&2
exit 1
fi
read -rp "Image tag [${DEFAULT_TAG}]: " INPUT_TAG
IMAGE_TAG="${INPUT_TAG:-$DEFAULT_TAG}"
IMAGE_REF="${REGISTRY_HOST}/${IMAGE_NAME}:${IMAGE_TAG}"
DEFAULT_PLATFORMS="linux/amd64"
read -rp "Target platforms [${DEFAULT_PLATFORMS}]: " INPUT_PLATFORMS
TARGET_PLATFORMS="${INPUT_PLATFORMS:-$DEFAULT_PLATFORMS}"
read -rp "Registry username: " REGISTRY_USER
read -rsp "Registry password or token: " REGISTRY_PASSWORD
echo
echo "Building image ${IMAGE_REF} ..."
docker build \
--file "${DOCKERFILE_PATH}" \
--tag "${IMAGE_REF}" \
"${DOCKER_CONTEXT}"
echo "Logging into ${REGISTRY_HOST} ..."
echo "${REGISTRY_PASSWORD}" | docker login "${REGISTRY_HOST}" \
--username "${REGISTRY_USER}" \
@@ -45,7 +48,15 @@ cleanup() {
}
trap cleanup EXIT
echo "Pushing ${IMAGE_REF} ..."
docker push "${IMAGE_REF}"
echo "Bootstrapping buildx builder ..."
docker buildx inspect --bootstrap >/dev/null
echo "Building and pushing ${IMAGE_REF} for ${TARGET_PLATFORMS} ..."
docker buildx build \
--platform "${TARGET_PLATFORMS}" \
--file "${DOCKERFILE_PATH}" \
--tag "${IMAGE_REF}" \
--push \
"${DOCKER_CONTEXT}"
echo "Image pushed successfully."