default:
tags:
- universal
stages:
- tests
- build-and-push
- deploy
- notify
tests_job1:
stage: tests
image: python:3.11-slim
variables:
PYTHONPATH: "."
before_script:
- pip install --no-cache-dir -r requirements.txt
- pip install pytest
script:
- pytest tests/
push_job:
stage: build-and-push
image:
name: gcr.io/kaniko-project/executor:v1.23.0-debug
entrypoint: [""]
before_script:
- mkdir -p /kaniko/.docker
- cp "$DOCKER_AUTH_CONFIG" /kaniko/.docker/config.json
script:
- >
/kaniko/executor
--context "${CI_PROJECT_DIR}"
--dockerfile "${CI_PROJECT_DIR}/Dockerfile"
--destination "${DOCKERHUB_USER}/quote-bot:${CI_COMMIT_SHORT_SHA}"
--destination "${DOCKERHUB_USER}/quote-bot:latest"
deploy_to_server:
stage: deploy
image: ghcr.io/ansible/creator-ee:v0.22.0
variables:
ANSIBLE_HOST_KEY_CHECKING: "False"
before_script:
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- echo "$ANSIBLE_PRIVATE_KEY" > ~/.ssh/id_ed25519
- chmod 600 ~/.ssh/id_ed25519
- ansible-galaxy collection install community.docker
script:
- cd auto-deployment/
- ansible-playbook -i inventory.ini A_deploy.yml
variables:
MSG_SUCCESS: "✅ Успех! Пайплайн проекта $CI_PROJECT_NAME завершен.\nВетка: $CI_COMMIT_REF_NAME\nКоммит: $CI_COMMIT_MESSAGE"
MSG_FAILURE: "❌ Ошибка! Пайплайн проекта $CI_PROJECT_NAME упал.\nВетка: $CI_COMMIT_REF_NAME\nСмотреть логи пайплайна"
.notify_telegram:
stage: .post
tags:
- tg
image: curlimages/curl:latest
script:
- |
curl -s -X POST "https://api.telegram.org/bot$ALERT_TG_BOT/sendMessage" \
-d chat_id="$ADMIN_ID_TG" \
-d text="$MESSAGE" \
-d parse_mode="HTML" \
-d disable_web_page_preview="true"
notify_success:
extends: .notify_telegram
variables:
MESSAGE: $MSG_SUCCESS
when: on_success
notify_failure:
extends: .notify_telegram
variables:
MESSAGE: $MSG_FAILURE
when: on_failure