1. Nastavenie SSH kľúčov pre autentifikáciu
Aby ste umožnili bezpečnú autentifikáciu medzi GitLabom a našim serverom, je potrebné vygenerovať SSH kľúče. Pozrite si náš návod o SSH, ak potrebujete vysvetliť základy.
a. Generovanie páru SSH kľúčov
Ak ešte nemáte svoj pár SSH kľúčov, vygenerujte si ich na vašom lokálnom počítači pomocou nasledujúceho príkazu:
ssh-keygen -t rsa -b 4096 -C "vas_email@example.com"
Stlačte Enter
pre potvrdenie predvoleného umiestnenia súboru a zadajte prístupovú frázu, ak si želáte.
b. Pridanie súkromného a verejného SSH kľúča do GitLabu
- Súkromný kľúč: Pridajte súkromný kľúč do CI/CD premenných v GitLabe:
- Prejdite do Settings > CI / CD > Variables vo vašom GitLab projekte.
- Vytvorte novú premennú:
- Key:
SSH_PRIVATE_KEY
- Value: Vložte obsah vášho súkromného kľúča (napr.
~/.ssh/id_rsa
). - Type:
Variable
- Key:
- Verejný kľúč: Pridajte verejný kľúč do:
- Settings > Repository > Deploy Keys: Kliknite na Add New Key, skopírujte obsah súboru
~/.ssh/id_rsa.pub
a vložte ho. Zaškrtnite možnosť Write access, ak chcete povoliť zapisovanie.
- Settings > Repository > Deploy Keys: Kliknite na Add New Key, skopírujte obsah súboru
c. Pridanie verejného SSH kľúča na server a inicializácia repozitára
- Pridanie SSH kľúča na vzdialený server: Skopírujte váš verejný SSH kľúč do priestoru domény
.ssh/authorized_keys
- Inicializácia Git repozitára na serveri: Prihláste sa na server cez SSH:
ssh -p2222 vasadomena.sk@inet.sk
Potom v cieľovom adresári na serveri vykonajte klonovanie repozitára cez SSH:
Týmto sa vzdialený server zapíše medzi povolené hostiteľské kľúče a nasadzovanie bude prebiehať hladko.git clone git@gitlab.com:vas-username/vas-repozitar.git .
2. Konfigurácia .gitlab-ci.yml
pre nasadenie
Vytvorte súbor .gitlab-ci.yml
v koreňovom adresári vášho repozitára na definovanie CI/CD pipeline pre nasadenie.
stages:
- deploy
deploy:
stage: deploy
script:
- echo "Nasadzovanie PHP kódu cez SSH"
- mkdir -p ~/.ssh
- echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
- ssh vasadomena.sk@inet.sk "cd /cesta/k/nasadeniu && git pull"
3. Testovanie CI/CD pipeline
Po pridaní súboru .gitlab-ci.yml
do vášho repozitára GitLab automaticky deteguje súbor a spustí CI/CD pipeline pri každom pushnutí zmien. Skontrolujte logy pipeline, aby ste sa uistili, že nasadzovanie cez SSH prebehlo správne.
4. Bezpečnosť
- Manipulácia so súkromným kľúčom: Uistite sa, že súkromný kľúč je bezpečne uložený v CI/CD premenných GitLabu a nikdy nie je vystavený v logoch alebo v repozitári.
- StrictHostKeyChecking: Vypnutie overovania hostiteľského kľúča je často bezpečné v kontrolovanom prostredí (CI/CD), ale v produkcii zabezpečte správne overovanie hostiteľských kľúčov.
Tento postup vám umožní automatizovať nasadzovanie PHP aplikácií z GitLabu na váš server pomocou CI/CD pipeline.