Automatyzacja DEPLOY – GITHUB
name: Deploy to Production
on:
push:
branches:
- main
workflow_dispatch: # pozwala na manualne uruchomienie
jobs: # Definicja wszystkich zadań (jobs) w workflow
deploy: # Nazwa joba – możesz ją dowolnie zmienić
runs-on: ubuntu-latest # GitHub Actions uruchomi joba na maszynie Ubuntu
steps: # Lista kroków wykonywanych w ramach joba
- name: Checkout repo # Nazwa kroku – tylko opis
uses: actions/checkout@v4 # Akcja GitHubowa, która pobiera kod repo do runnera
- name: Deploy over SSH # Drugi krok – wdrożenie na serwer
uses: appleboy/ssh-action@v1.0.3 # Akcja umożliwiająca wykonanie komend przez SSH
with: # Parametry przekazywane do akcji
host: ${{ secrets.PROD_HOST }} # Adres serwera produkcyjnego (z GitHub Secrets)
username: ${{ secrets.PROD_USER }} # Użytkownik SSH (z Secrets)
key: ${{ secrets.PROD_SSH_KEY }} # Prywatny klucz SSH (z Secrets)
script: | # Blok komend, które zostaną wykonane na serwerze
cd /var/www/esp_gunicorn # Przejście do katalogu aplikacji
git pull # Pobranie najnowszych zmian z repozytorium
sudo systemctl restart esp_gunicorn.service # Restart usługi Gunicorna
🧭 Jak to przygotować krok po kroku
1. Wygeneruj klucz SSH na swoim komputerze
bash
ssh-keygen -t ed25519 -C "github-actions"
Powstają dwa pliki:
- id_ed25519 → to wklejasz jako
PROD_SSH_KEY - id_ed25519.pub → to dodajesz na serwerze
2. Dodaj publiczny klucz na serwerze
Na serwerze:
bash
mkdir -p ~/.ssh
echo "TWÓJ_PUBLICZNY_KLUCZ" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
3. Dodaj sekrety w GitHub → Settings → Secrets → Actions
| Secret | Wartość |
|---|---|
PROD_HOST | IP lub domena serwera |
PROD_USER | użytkownik SSH |
PROD_SSH_KEY | zawartość pliku id_ed25519 |
🔐 Gdzie są sekrety GitHub Actions (2025 UI)
- Wejdź na swoje repozytorium na GitHubie (np.
github.com/TwojUser/esp_gunicorn) - W górnym menu repo kliknij: Settings (to jest zakładka repozytorium, nie ustawienia konta)
- W lewym bocznym menu przewiń do sekcji: Security
- Rozwiń ją i wybierz: Secrets and variables
- Teraz zobaczysz dwie opcje:
- Actions ← to jest ta właściwa
- Codespaces (ignorujemy)
- Kliknij: Actions
- Pojawi się przycisk: New repository secret
I tutaj dodajesz:
PROD_HOSTPROD_USERPROD_SSH_KEY
Przykładowy skrypt:
on:
push:
branches:
- main
workflow_dispatch: # pozwala na manualne uruchomienie
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Sprawdzenie nowosci w repozytorium
uses: actions/checkout@v4
- name: Przesłanie za pomocą SSH
uses: appleboy/ssh-action@v1.0.3
with:
host: host.adres.pl
username: ${{ secrets.PROD_USER }}
key: ${{ secrets.PROD_SSH_KEY }}
port: 5829
script: |
cd /var/www/apps/twoja_aplikacja
git pull
# sudo systemctl restart twoja_aplikacja.service