我在使用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?有没有人提出建议或例子?
答案 0 :(得分:0)
看起来像GitLab确实允许在GitLab和CI / CD中使用SSH密钥。您可以在这里找到该信息:
在那里,您将看到他们在关键字“ 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