适用于CI / CD的Gitlab ssh配置

时间:2018-06-19 16:15:59

标签: node.js continuous-integration gitlab cd

我在使用Gitlab的ssh配置CI / CD时遇到问题

image: trion/ng-cli-karma

cache:
  paths:
    - node_modules/

deploy_production:
  stage: deploy
  environment: Production
  only:
    - master
  script:
    - rm ./package-lock.json
    - npm install
    - cd dist/
    - ls
    - apt-get update -qq && apt-get install -y -qq sshpass
    - sshpass -V
    - export SSHPASS=XXXX
    - sshpass -e scp -o stricthostkeychecking=no -r . root@IP_SERVER:/DIR:PATH

在git push上...

Warning: Permanently added 'IP_SERVER' (ECDSA) to the list of known hosts.

Permission denied (publickey).

lost connection

ERROR: Job failed: exit code 1

我已经读过,尚不支持gitlab的ssh CI / CD?有没有人提出建议或例子?

2 个答案:

答案 0 :(得分:0)

看起来像GitLab确实允许在GitLab和CI / CD中使用SSH密钥。您可以在这里找到该信息:

SSH Keys with GitLab

在那里,您将看到他们在关键字“ before-script”下使用SSH信息,但是我敢肯定这种事情是可延展的!

答案 1 :(得分:0)

好像您没有传递私钥或未将gitlab ssh密钥添加到服务器中的已知主机列表。

尝试如下添加前脚本并进行检查。 (将yum命令更改为相应地易于获取)

before_script:
 - yum --enablerepo=epel -y install sshpass
 - yum install -y openssh openssh-client
 - eval $(ssh-agent -s)
 - ssh-add <(echo "$SSH_PRIVATE_KEY")
 - mkdir -p ~/.ssh
 - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'

script:
 - export SSHPASS= XXXX
 - sshpass -e scp -o stricthostkeychecking=no -r . $USER@$HOST:$PATH