From b37991362071736c0849438fc47be655cfd91f23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A8=D0=B0=D1=80=D0=BE=D0=BD=D0=BE=D0=B2=20=D0=95=D0=B3?= =?UTF-8?q?=D0=BE=D1=80=20=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B5=D0=B2?= =?UTF-8?q?=D0=B8=D1=87?= <easharonov@edu.hse.ru> Date: Sat, 22 Mar 2025 09:20:24 +0000 Subject: [PATCH] Update .gitlab-ci.yml file --- .gitlab-ci.yml | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 962c606..42802c9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,10 +3,15 @@ stages: - deploy variables: - IMAGE_NAME: $CI_REGISTRY_IMAGE + # Адрес реестра, куда пушим образы. + REGISTRY_URL: registry.miem.hse.ru + # Полное имя образа: <registry>/<namespace>/<repository> + IMAGE_NAME: $REGISTRY_URL/edadil/ms/model + # Неймспейс Kubernetes, куда деплоится приложение. KUBE_NAMESPACE: productassistant before_script: + # Загружаем kubeconfig из переменной CI/CD - echo "$KUBECONFIG_DATA" > kubeconfig - export KUBECONFIG=$CI_PROJECT_DIR/kubeconfig @@ -15,23 +20,31 @@ build: image: docker:latest services: - docker:dind + tags: + - docker script: + # Аутентификация в Docker реестре с использованием переменных, заданных в CI/CD + - docker login -u "$REGISTRY_USER" -p "$REGISTRY_PASSWORD" $REGISTRY_URL + # Сборка образа: указываем путь к Dockerfile (здесь предполагается, что Dockerfile лежит в каталоге deployment) - docker build -t $IMAGE_NAME:$CI_COMMIT_SHORT_SHA -f deployment/Dockerfile . + # Пушим образ в реестр - docker push $IMAGE_NAME:$CI_COMMIT_SHORT_SHA only: - master - tags: - - docker # <-- добавляем тег deploy: stage: deploy image: lachlanevenson/k8s-kubectl:latest tags: - - docker # <-- добавляем тот же тег, если нужно + - docker script: + # Устанавливаем новый тег образа - export IMAGE_TAG=$CI_COMMIT_SHORT_SHA + # Подставляем новый тег в манифест (предполагается, что в app-deployment.yaml есть placeholder, например, ${IMAGE_TAG}) - envsubst < deployment/k8s/app-deployment.yaml > deployment/k8s/app-deployment-temp.yaml + # Создаем неймспейс, если его еще нет - kubectl apply -f deployment/k8s/namespace.yaml --validate=false + # Применяем манифест обновления для приложения в указанном неймспейсе - kubectl --namespace=$KUBE_NAMESPACE apply -f deployment/k8s/app-deployment-temp.yaml --validate=false only: - master -- GitLab