Pokud pro vývoj webu používáte GitHub repozitář, můžete pomocí příkazu git push automaticky spustit synchronizaci s FTP Vaší domény. K tomu můžete využít GitHub Action s názvem ‘FTP Deploy’. Pokud si přejete tento způsob využít je potřeba provést následující kroky. V tomto návodu zároveň využijeme FTP klient LFTP, který nabízí lepší synchronizaci.

TIP: K provedení následujících kroků je potřeba mít vytvořený FTP účet. Návod jak jej vytvořit můžete nalézt zde.
INFO: Článek je sepsán pro uživatele se základní znalosti Git a GitHub actions

1. Ve svém GitHub repozitáři vytvořte soubor main.yml ve složce .github/workflows/

2. Do souboru main.yml vložte následující šablonu (zvýrazněné hodnoty je třeba změnit)

on: push
name: Deploy website on push
jobs:
  web-deploy:
    name: Deploy
    runs-on: ubuntu-latest
    steps:
    - name: Get latest code
      uses: actions/checkout@v4

    - name: LFTP rsync check     #synchronizace na FTP skrze LFTP klient
      run:  |
        sudo apt update && apt install -y lftp
        lftp -u "${{ secrets.ftp_username }}","${{ secrets.ftp_password }}" "${{ secrets.ftp_server }}" <<EOF
        set ssl:verify-certificate no
        mirror -R --only-newer −−dereference −−continue --delete −−verbose=3 --parallel=10 --exclude .git --exclude .github --exclude .README.md ./ slozka_na_FTP
        bye
        EOF

3. Nastavte do secrets hodnoty pro přihlášení. Secrety můžete nastavit ve Vašem repozitáři → Settings → Secrets and variables → Actions → New repository secret.

TIP: Kliknutím na obrázek si ho zobrazíte ve větší velikosti.

Do pole ‘Name’ zadejte název secretu (např. ftp_username) a do ‘Secret’ hodnotu (např. přihlašovací jméno k FTP). Pro správnou funkci je potřeba vytvořit tyto tři secrets:

• ftp_username – FTP uživatel
• ftp_password – heslo k FTP
• ftp_server – adresa FTP serveru (ve tvaru ftp://ftp.vase-domena.cz)

Aktuální nastavení synchronizuje novější soubory z repozitáře na FTP a odstraní ty, které se v repozitáři již nenacházejí. Samotný proces synchronizace se dá upravovat editací souboru main.yml, konkrétně následujícího příkazu:

mirror -R --only-newer −−dereference −−continue --delete −−verbose=3 --parallel=10 --exclude .git --exclude .github --exclude .README.md ./ slozka_na_FTP

TIP: Zde je tabulka popisující jednotlivé příkazy a přepínače.

mirror -R Rekurzivní upload (z repozitáře na FTP)
–only-newer Nahrají se pouze nové soubory
–dereference Symbolické odkazy stáhne a nahraje je jako soubor
–continue Pokud bude přenos přerušen (např. z důvodu chyby), bude pokračovat pokud to bude možné
–verbose Podrobnější výstup v konzoli (vyšší číslo značí více informací)
–delete Smaže na FTP soubory, které se v repozitáři nenachází
–parallel Počet souběžných přenosů
–exclude Soubory / složky, které se nemají na FTP nahrát
 ./ Zdrojový adresář, odkud data kopírujeme

TIP: Návod na kompletní dokumentaci LFTP můžete nalézt zde.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *