Skip to content

Commit

Permalink
Merge pull request #553 from Studio-Yandex-Practicum/feature/convert_…
Browse files Browse the repository at this point in the history
…ci-cd_to_the_prod

Feature/convert ci cd to the prod
  • Loading branch information
OlegGsk authored Oct 1, 2024
2 parents 74e89cf + 9680c9c commit 0fa84aa
Show file tree
Hide file tree
Showing 14 changed files with 360 additions and 212 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ codestyle_pep8.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: CI
name: Codestyle_pep8

on: [push, pull_request]

Expand Down
51 changes: 0 additions & 51 deletions .github/workflows/build-and-push-github-packages.yaml

This file was deleted.

133 changes: 133 additions & 0 deletions .github/workflows/prod_deploy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
name: Production deploy

on:
push:
branches:
- master

env:
DEPLOY_PATH: adaptive_hockey_federation
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}

defaults:
run:
working-directory: .

jobs:
pytest:
runs-on: ubuntu-latest
name: pytest
steps:
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: 3.11

- name: Install Poetry
uses: snok/install-poetry@v1
with:
poetry-version: 1.5.0

- name: Check out the repo
uses: actions/checkout@v4

- name: Install dependencies
run: |
poetry install
- name: pytest
run: |
poetry run pytest
working-directory: adaptive_hockey_federation

build_and_push:
if: github.ref == 'refs/heads/master'
runs-on: ubuntu-latest
needs: pytest

steps:
- uses: actions/checkout@v3

- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}

- name: Build and push Docker image for Production
uses: docker/build-push-action@v5
with:
context: .
file: infra/prod/prod.Dockerfile
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}


deploy:
if: github.ref == 'refs/heads/master'
name: Deploy changes on server
needs: [pytest, build_and_push]
runs-on: ubuntu-latest
environment:
name: prod_deploy
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Delete stage & dev
run: |
rm -r infra/stage
rm -r infra/dev
- name: Copy infra via ssh
uses: appleboy/scp-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
passphrase: ${{ secrets.SSH_PASSPHRASE }}
source: "infra/"
target: "${{ env.DEPLOY_PATH }}/infra"
rm: true
strip_components: 1

- name: Execute commands on VPS
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
passphrase: ${{ secrets.SSH_PASSPHRASE }}
script: |
cd ${{ env.DEPLOY_PATH }}
touch .env
echo "${{ secrets.ENV_FILE }}" > .env
cd infra/prod/
sudo systemctl stop adaptive_hockey_federation.service
docker system prune --force
sudo cp -f /home/production/adaptive_hockey_federation/infra/prod/adaptive_hockey_federation.service /etc/systemd/system/adaptive_hockey_federation.service
sudo systemctl daemon-reload
sudo systemctl start adaptive_hockey_federation.service
sudo systemctl is-active --quiet adaptive_hockey_federation.service
until [ $? -eq 0 ]; do
echo "Waiting for adaptive_hockey_federation.service to be active..."
sleep 5
sudo systemctl is-active --quiet adaptive_hockey_federation.service
done
echo "adaptive_hockey_federation.service is active"
docker exec adaptive_hockey_federation python manage.py collectstatic --noinput
docker exec adaptive_hockey_federation python manage.py migrate
7 changes: 5 additions & 2 deletions .github/workflows/pytest.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
name: CI
name: Pytest

on: [pull_request]
on:
push:
branches:
- dev

jobs:
pytest:
Expand Down
129 changes: 0 additions & 129 deletions .github/workflows/stage_deploy.yaml

This file was deleted.

Loading

0 comments on commit 0fa84aa

Please sign in to comment.