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

SecretWartość
PROD_HOSTIP lub domena serwera
PROD_USERużytkownik SSH
PROD_SSH_KEYzawartość pliku id_ed25519

🔐 Gdzie są sekrety GitHub Actions (2025 UI)

  1. Wejdź na swoje repozytorium na GitHubie (np. github.com/TwojUser/esp_gunicorn)
  2. W górnym menu repo kliknij: Settings (to jest zakładka repozytorium, nie ustawienia konta)
  3. W lewym bocznym menu przewiń do sekcji: Security
  4. Rozwiń ją i wybierz: Secrets and variables
  5. Teraz zobaczysz dwie opcje:
    • Actions ← to jest ta właściwa
    • Codespaces (ignorujemy)
  6. Kliknij: Actions
  7. Pojawi się przycisk: New repository secret

I tutaj dodajesz:

  • PROD_HOST
  • PROD_USER
  • PROD_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