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}"