Files
Kotyata/.gitlab-ci.d/app-client-docker.yml
2026-03-17 13:24:22 +03:00

90 lines
2.7 KiB
YAML

build-app-client-docker:
stage: build
needs: []
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
image:
name: gcr.io/kaniko-project/executor:v1.15.0-debug
entrypoint: [""]
script:
- >-
/kaniko/executor
--context "${CI_PROJECT_DIR}"
--dockerfile "${CI_PROJECT_DIR}/Dockerfile.client"
--target runner-nodejs
--skip-unused-stages=true
--cache=true
--cache-repo "${CI_REGISTRY_IMAGE}/frontend-app-client/cache"
--no-push
build-app-client-docker-latest:
stage: build
needs: []
rules:
- if: $CI_COMMIT_BRANCH == "main" || $CI_COMMIT_BRANCH == "ci/pay"
changes:
- apps/client/**/*
- layers/ui/**/*
- layers/shared/**/*
- if: $CI_COMMIT_BRANCH == "main" || $CI_COMMIT_BRANCH == "ci/pay"
when: manual
image:
name: gcr.io/kaniko-project/executor:v1.15.0-debug
entrypoint: [""]
script:
- >-
/kaniko/executor
--context "${CI_PROJECT_DIR}"
--dockerfile "${CI_PROJECT_DIR}/Dockerfile.client"
--target runner-nodejs
--skip-unused-stages=true
--cache=true
--cache-repo "${CI_REGISTRY_IMAGE}/frontend-app-client/cache"
--destination "${CI_REGISTRY_IMAGE}/frontend-app-client:latest"
--image-name-with-digest-file "${CI_PROJECT_DIR}/.images/frontend-app-client.txt"
artifacts:
paths:
- .images/frontend-app-client.txt
deploy-app-client-docker:
image: alpine:latest
stage: deploy
rules:
- if: $CI_COMMIT_BRANCH == "main" || $CI_COMMIT_BRANCH == "ci/pay"
needs:
- job: build-app-client-docker-latest
artifacts: true
timeout: 3m
variables:
DOCKER_RUN_COMMAND:
expand: true
value: >-
docker run
--name frontend-app
--detach
--restart unless-stopped
--network frontend
-e NITRO_SHUTDOWN=true
-e NICONSOLE_LEVEL=4
-e CONSOLA_LEVEL=4
-e NITRO_API_HOST=https://api.prgms.io/api/v1
"$(cat frontend-app-client.txt)"
before_script:
- apk add openssh-client
- eval $(ssh-agent -s)
- chmod 400 "$ID_RSA"
- ssh-add "$ID_RSA"
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- cp "$SSH_KNOWN_HOSTS" ~/.ssh/known_hosts
script:
- test -f .images/frontend-app-client.txt
- scp .images/frontend-app-client.txt ${SERVER_USER}@${SERVER_IP}:frontend-app-client.txt
- >-
ssh
"$SERVER_USER@$SERVER_IP"
"docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY"
- ssh "${SERVER_USER}@${SERVER_IP}" "docker stop frontend-app || true"
- ssh "${SERVER_USER}@${SERVER_IP}" "docker rm frontend-app || true"
- ssh "${SERVER_USER}@${SERVER_IP}" "${DOCKER_RUN_COMMAND}"