Automatizovaný deploy Django aplikácie cez GitHub Actions
Automatizovaný deploy Django aplikácie cez GitHub Actions
Pomocou GitHub Actions môžeme automaticky nasadiť aplikáciu na VPS po každom pushnutí do vetvy main
.
Krok 1 – Vygeneruj SSH kľúč na VPS
Prihlás sa na VPS linux host ako používateľ django_project
a vygeneruj SSH kľúč bez hesla:
ssh-keygen -t rsa -b 4096 -C "github_deploy_key"
Tento kľúč sa uloží napríklad do /home/django_project/.ssh/id_rsa
. Skopíruj obsah id_rsa.pub
do súboru authorized_keys
:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
! chmod 600 nastaví spávne systémové opravnenia
Krok 2 – Nahraj súkromný kľúč na GitHub ako Secret
V GitHub repozitári prejdi na: Settings → Secrets → Actions → New repository secret a pridaj:
- Názov:
VPS_SSH_KEY
- Hodnota: celý obsah súkromného kľúča
id_rsa
Pridaj aj IP adresu VPS ako premennú:
- Názov:
VPS_HOST
- Hodnota:
django-test.pekny.online
Pridaj aj IP username ako premennú:
- Názov:
VPS_USER
- Hodnota:
django_project

Krok 3 – Vytvor súbor workflow v GITHUB repozitári
V projekte vytvor súbor .github/workflows/deploy.yml
s obsahom:
name: Deploy to VPS
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout python project Peter Pekny fun page
uses: actions/checkout@v4
- name: Nasadenie na VPS
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.VPS_HOST }}
username: ${{ secrets.VPS_USER }}
key: ${{ secrets.VPS_SSH_KEY }}
script: |
echo "$(date) : Deployment Start" >> /tmp/python-deployment.log
cd ~
cd django_project >> /tmp/python-deployment.log
git pull origin main >> /tmp/python-deployment.log
source ../venv/bin/activate >> /tmp/python-deployment.log
pip install -r requirements.txt >> /tmp/python-deployment.log
python3 manage.py migrate >> /tmp/python-deployment.log
mv /home/django_project/django_project/staticfiles/ /tmp/staticfiles/ >> /tmp/python-deployment.log
python3 manage.py collectstatic --noinput >> /tmp/python-deployment.log
sudo /bin/systemctl restart gunicorn.service >> /tmp/python-deployment.log
sudo /bin/systemctl status nginx.service >> /tmp/python-deployment.log
echo "$(date) : Deployment finish" >> /tmp/python-deployment.log
echo "$(date) : Deployment executed" >> /tmp/python-deployment-log.log

Krok 4 – Otestuj
Urob akúkoľvek zmenu v kóde, commitni ju a pushni do vetvy main
. V sekcii Actions v GitHub repozitári uvidíš prebiehajúci Deploy job.

Krok 5 – Skontroluj log súbor na VPS, ako prebeho deploy
less /tmp/python-deployment.log
v súbore sa zapisuje priebeh skriptu s github action
Záver
Týmto spôsobom máš automatizované nasadenie tvojej Django aplikácie pomocou GitHub Actions. Už nemusíš ručne SSH-kovať na server pri každej zmene.
Komentáre ku článku
Zatiaľ žiadne komentáre.