improve deployment process
This commit is contained in:
29
Jenkinsfile
vendored
29
Jenkinsfile
vendored
@@ -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}
|
||||
"""
|
||||
}
|
||||
|
||||
@@ -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
5
id.env
@@ -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
|
||||
@@ -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."
|
||||
|
||||
Reference in New Issue
Block a user