J'ai un environnement Gitlab utilisant Gitlab CI, pour un nouveau projet pour témoigner sur les fichiers compilés et les copier via rsync sur un serveur de production.
La machine où la construction de ces ressources est exécutée est une image de docker (noeud 6), mais maintenant je dois copier les fichiers résultants de la commande Docker de ce conteneur sur le serveur en utilisant linux ... Mon problème est de me connecter via ssh via rsync.
Actuellement, j'ai les éléments suivants:
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
Par cela, je reçois:
/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-copy-id demande un mot de passe. Vous pouvez utiliser sshpass -e
et définissez la variable d'environnement SSHPASS dans Gitlab.
Vous ne passez pas la clé ssh à rsync. Vous devriez faire quelque chose comme ceci qui exécute la commande ssh pour identifier correctement la clé ssh:
rsync -avuz -e 'ssh -i ~/.ssh/deploy_rsa' $CI_PROJECT_DIR/dist/ [email protected]:/var/wwww/example.com