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