Files
GitLab CI/CD 63c6a83e88
Quote Bot CI/CD Pipeline / check (push) Waiting to run
Quote Bot CI/CD Pipeline / Security Scan (push) Waiting to run
Quote Bot CI/CD Pipeline / Build and push to Docker Hub (push) Blocked by required conditions
Quote Bot CI/CD Pipeline / Deploy to VPS via Ansible (push) Blocked by required conditions
Showcase update - f20be312
2026-09-13 10:32:45 +00:00

97 lines
2.7 KiB
YAML

name: Quote Bot CI/CD Pipeline
on:
push:
branches:
- main
jobs:
check-syntax:
name: check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Syntax Check
run: |
pip install pyflakes
pyflakes src/
security-scan:
name: Security Scan
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run OWASP Noir
id: noir
uses: owasp-noir/noir@v1.1.0
with:
base_path: 'src'
- name: Display results
run: echo '${{ steps.noir.outputs.endpoints }}' | jq .
- name: Run Bandit (Python SAST)
run: |
pip install bandit
bandit -r src/
build-and-push:
name: Build and push to Docker Hub
needs: [security-scan, check-syntax]
runs-on: ubuntu-latest
steps:
- name: Скачиваем код бота
uses: actions/checkout@v4
- name: Логинимся в Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_LOGIN }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: Сборка и пуш Docker образа
uses: docker/build-push-action@v6
with:
context: .
push: true
tags: leor156/quote-bot:latest
#terraform infrastructure-check and infrastructure-deployment:
#name: check infrastructure
#needs: [build-and-push]
#runs-on: ubuntu-latest
#steps:
#- uses: actions/checkout@v4
#- name: Terraform init
#run: terraform init
#- name: Terraform plan
#run: terraform plan
#- name: Terraform apply
#run: terraform apply -auto-approve
deploy:
name: Deploy to VPS via Ansible
needs: build-and-push
runs-on: ubuntu-latest
steps:
- name: Скачиваем код репозитория (чтобы получить файл deploy.yml)
uses: actions/checkout@v4
- name: Запускаем Ansible плейбук
uses: dawidd6/action-ansible-playbook@v2
with:
playbook: auto-deployment/A_deploy.yml
key: ${{ secrets.SERVER_SSH_KEY }}
options: |
-i ${{ secrets.SERVER_HOST }},
-u ${{ secrets.SERVER_USER }}
--extra-vars "TOKEN=${{ secrets.TG_TOKEN_QUOTE }} ADMIN_IDS=${{ secrets.ADMIN_ID_TG }}"
- name: Notifier
uses: ethyaan/tgate-action@v1.0.0
if: always()
with:
token: ${{ secrets.TG_TOKEN_ALERT }}
to: ${{ secrets.ADMIN_ID_TG }}
thread_id: ${{ secrets.threadid }}
disable_web_page_preview: false
disable_notification: false