Skip to content

Main Ambassadors workflow #17

Main Ambassadors workflow

Main Ambassadors workflow #17

Workflow file for this run

name: Main Ambassadors workflow
on:
workflow_dispatch:
jobs:
linter_test:
name: Test backend with linter
runs-on: ubuntu-latest
steps:
# Копирование репозитория из GitHub
- uses: actions/checkout@v4
- name: Set up Python
# Установка python
uses: actions/setup-python@v5
with:
python-version: 3.12.2
cache: 'pip'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r ./backend/requirements.lint.txt
- name: Test with flake8
run: |
cd backend/
python -m flake8 .
# pytest_test:
# runs-on: ubuntu-latest
# steps:
# # Копирование репозитория из GitHub
# - uses: actions/checkout@v4
# - name: Set up Python
# # Установка python
# uses: actions/setup-python@v5
# with:
# python-version: 3.12.2
# cache: 'pip'
# - name: Install dependencies
# run: |
# python -m pip install --upgrade pip
# pip install -r ./backend/requirements.txt
# - name: Test with pytest
# run: |
# cd backend/
# python manage.py makemigrations
# python manage.py migrate
# pytest
build_and_push_to_docker_hub:
name: Push Docker image to DockerHub
runs-on: ubuntu-latest
needs:
- linter_test
# - pytest_test
steps:
- name: Check out the repo
# Получение исходного кода из репозитория
uses: actions/checkout@v4
- name: Set up Docker Buildx
# Установка сборщика контейнеров Docker
uses: docker/setup-buildx-action@v3
- name: Login to Docker
# Авторизация на Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Push to DockerHub
# Одновременный билд и пуш образа в Docker Hub
uses: docker/build-push-action@v5
with:
context: ./backend/
push: true
tags: aleksey2299/ambassadors_backend:latest
build_gateway_and_push_to_docker_hub:
name: Push nginx Docker image to DockerHub
runs-on: ubuntu-latest
steps:
- name: Check out the repo
# Получение исходного кода из репозитория
uses: actions/checkout@v4
- name: Set up Docker Buildx
# Установка сборщика контейнеров Docker
uses: docker/setup-buildx-action@v3
- name: Login to Docker
# Авторизация на Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Push to DockerHub
# Одновременный билд и пуш образа в Docker Hub
uses: docker/build-push-action@v5
with:
context: ./nginx/
push: true
tags: aleksey2299/ambassadors_nginx:latest
deploy:
runs-on: ubuntu-latest
needs:
- build_and_push_to_docker_hub
# - build_frontend_and_push_to_docker_hub
- build_gateway_and_push_to_docker_hub
steps:
- name: Checkout repo
# Получение исходного кода из репозитория
uses: actions/checkout@v4
# Копируем docker-compose.production.yml на продакшен-сервер
- name: Copy docker-compose.yml via ssh
uses: appleboy/scp-action@master
# Передаём параметры для action appleboy/scp-action:
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USER }}
key: ${{ secrets.SSH_KEY }}
passphrase: ${{ secrets.SSH_PASSPHRASE }}
source: "docker-compose.production.yml"
target: "ambassadors"
- name: Executing remote ssh commands to deploy
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USER }}
key: ${{ secrets.SSH_KEY }}
passphrase: ${{ secrets.SSH_PASSPHRASE }}
# Параметр script передаёт в action appleboy/ssh-action команды,
# которые нужно выполнить на сервере,
# с которым установлено соединение
script: |
cd ambassadors
sudo docker compose -f docker-compose.production.yml pull
sudo docker compose -f docker-compose.production.yml down
sudo docker compose -f docker-compose.production.yml up -d