Mam środowisko Gitlab korzystające z Gitlab CI, aby nowy projekt zeznał o skompilowanych plikach i skopiował przez rsync na serwer produkcyjny.
Maszyna, na której budowana jest ta wersja zasobów, jest obrazem dokera (węzeł 6), ale teraz muszę skopiować pliki wynikowe z tego polecenia kontenera Docker na serwer przy użyciu systemu Linux ... Moim problemem jest połączenie za pośrednictwem ssh przez rsync.
Obecnie mam następujące:
stages:
- deploy
before_script:
- npm i
- npm run build
job_deploy:
stage: deploy
script:
- ssh-keygen -t rsa -b 4096 -C '' -f ~/.ssh/deploy_rsa
- ssh-keyscan -H 8.8.8.8 >> ~/.ssh/known_hosts
- ssh-copy-id -i ~/.ssh/deploy_rsa.pub [email protected]
- rsync -avuz $CI_PROJECT_DIR/dist/ [email protected]:/var/wwww/example.com
only:
- master
W ten sposób otrzymuję:
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
ssh
deployment
gitlab
continuous-integration
Rodrigo Moreno
źródło
źródło
Odpowiedzi:
ssh-copy-id prosi o hasło. Możesz użyć
sshpass -e
i ustawić zmienną środowiskową SSHPASS w Gitlab.źródło
Nie przekazujesz klucza ssh do rsync. Powinieneś zrobić coś takiego, co wykonuje polecenie ssh, aby poprawnie zidentyfikować klucz ssh:
źródło