From 1077322477ed52e0dce34789727d9e08317f7ae4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Murat=20O=CC=88zkorkmaz?= Date: Fri, 17 Oct 2025 15:51:04 +0200 Subject: [PATCH] CI Test --- .gitea-ci.yml | 70 +++++++++++++++++++++++++++++++++++++++++ .gitignore | 1 + docker/.dockerignore | 61 +++++++++++++++++++++++++++++++++++ docker/.env.dist | 3 ++ docker/Dockerfile | 46 +++++++++++++++++++++++++++ docker/README.Docker.md | 17 ++++++++++ docker/build.sh | 21 +++++++++++++ docker/compose.yaml | 52 ++++++++++++++++++++++++++++++ docker/nginx.conf | 69 ++++++++++++++++++++++++++++++++++++++++ docker/push-to-gitea.sh | 68 +++++++++++++++++++++++++++++++++++++++ 10 files changed, 408 insertions(+) create mode 100644 .gitea-ci.yml create mode 100644 docker/.dockerignore create mode 100644 docker/.env.dist create mode 100644 docker/Dockerfile create mode 100644 docker/README.Docker.md create mode 100755 docker/build.sh create mode 100644 docker/compose.yaml create mode 100644 docker/nginx.conf create mode 100755 docker/push-to-gitea.sh diff --git a/.gitea-ci.yml b/.gitea-ci.yml new file mode 100644 index 0000000..33fd0c9 --- /dev/null +++ b/.gitea-ci.yml @@ -0,0 +1,70 @@ +version: "1" + +stages: + - build + - push + - deploy + +variables: + IMAGE_NAME: angular-web-app + TAG: ${CI_COMMIT_TAG:-latest} + GITEA_REGISTRY: ${CI_REGISTRY} + +build-image: + stage: build + image: docker:latest + services: + - docker:dind + before_script: + - apk add --no-cache bash + - chmod +x ./build.sh ./push-to-gitea.sh + script: + - echo "🏗️ Baue Docker-Image..." + - ./build.sh "$IMAGE_NAME" "$TAG" + artifacts: + paths: + - Dockerfile + +push-image: + stage: push + image: docker:latest + services: + - docker:dind + before_script: + - apk add --no-cache bash + - chmod +x ./push-to-gitea.sh + script: + - echo "⬆️ Push zu Gitea Registry..." + - | + export GITEA_REGISTRY="${CI_REGISTRY}" + export GITEA_USER="${CI_REGISTRY_USER}" + export GITEA_TOKEN="${CI_REGISTRY_TOKEN}" + ./push-to-gitea.sh "$IMAGE_NAME" "$TAG" + only: + - main + - tags + +deploy: + stage: deploy + image: alpine:latest + needs: + - push-image + only: + - main + - tags + script: + - echo "🚀 Deployment auf Zielserver starten..." + - apk add --no-cache openssh-client docker-cli + - echo "${DEPLOY_KEY}" > /tmp/deploy_key.pem + - chmod 600 /tmp/deploy_key.pem + - | + ssh -i /tmp/deploy_key.pem -o StrictHostKeyChecking=no ${DEPLOY_USER}@${DEPLOY_HOST} </dev/null 2>&1; then + EXISTS=true + echo "🟡 Image ${FULL_IMAGE} existiert bereits in der Registry." +else + echo "🟢 Image ${FULL_IMAGE} ist neu – wird gepusht." +fi + +# === DIGESTS VERGLEICHEN (wenn vorhanden) === +if [ "$EXISTS" = true ]; then + LOCAL_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' "${FULL_IMAGE}" 2>/dev/null | cut -d'@' -f2) + REMOTE_DIGEST=$(docker manifest inspect "${FULL_IMAGE}" 2>/dev/null | sha256sum | awk '{print $1}') + + if [ -n "$LOCAL_DIGEST" ] && [ -n "$REMOTE_DIGEST" ] && [ "$LOCAL_DIGEST" = "$REMOTE_DIGEST" ]; then + echo "✅ Lokales und entferntes Image sind identisch – Push wird übersprungen." + exit 0 + else + echo "🆕 Unterschiede festgestellt – Push wird ausgeführt." + fi +fi + +# === PUSH === +echo "⬆️ Push zum Gitea-Repository..." +docker push "${FULL_IMAGE}" + +echo "✅ Upload abgeschlossen: ${FULL_IMAGE}"