web-dev-qa-db-fra.com

Gitlab CI - Déployer via SSH sur un serveur distant

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).
12
Rodrigo Moreno

ssh-copy-id demande un mot de passe. Vous pouvez utiliser sshpass -e et définissez la variable d'environnement SSHPASS dans Gitlab.

3
user1973167

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
1
Yaşar Şentürk