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.
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.
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
| 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 |