使用 Jenkins 构建应用程序时通过 ssh 连接
Connecting via ssh when building app with Jenkins
请告诉我。
我正在使用 Jenkins 构建一个 运行 在 docker 容器中的项目,但我 运行 遇到了问题。
执行这段代码时:
stage('deploy front') {
when { equals expected: 'do', actual: buildFront }
agent {docker{image 'ebiwd/alpine-ssh'}}
steps{
sh 'chmod 400 .iac/privatekey'
sh "ssh -i .iac/privatekey ci_user@134.209.181.163"
}
}
我收到一个错误:
+ ssh -i .iac/privatekey ci_user@134.209.181.163
Pseudo-terminal will not be allocated because stdin is not a terminal.
Warning: Permanently added '134.209.181.163' (ECDSA) to the list of
known hosts.
bind: No such file or directory
unix_listener: cannot bind to path:
/root/.ssh/sockets/ci_user@134.209.181.163-22.uzumQ42Zb6Tcr2E9
此外,如果您在容器中用手执行以下脚本,则一切正常
ssh -i .iac/privatekey ci_user@134.209.181.163
Jenkins 容器以 docker-compose.yaml
开始
version: '3.1'
services:
jenkins:
image: jenkins/jenkins:2.277.1-lts
container_name: jenkins
hostname: jenkins
restart: always
user: root
privileged: true
ports:
- 172.17.0.1:8070:8080
- 50000:50000
volumes:
- /opt/docker/jenkins/home:/var/jenkins_home
- /etc/timezone:/etc/timezone
- /usr/bin/docker:/usr/bin/docker
- /etc/localtime:/etc/localtime
- /var/run/docker.sock:/var/run/docker.sock
可能是什么问题?
问题出在这个地方:
agent {docker{image 'ebiwd/alpine-ssh'}}
当我将其更改为以前的版本时,例如:
agent {docker{image 'ebiwd/alpine-ssh:3.13'}}
一切开始工作
我的 Gitlab 管道中有同样的错误:
bind: No such file or directory
unix_listener: cannot bind to path: /root/.ssh/sockets/aap_adm@wp-np2-26.ebi.ac.uk-22.LIXMnQy4cW5klzgB
lost connection
我认为错误与 this changeset 有关。
特别是,ssh 配置文件需要路径“~/.ssh/sockets”。由于我们没有使用脚本 /usr/local/bin/add-ssh-key(为该图像创建的自定义脚本),因此缺少此路径。
我在图像项目中打开了一个问题:Error using the image in CI/CD pipelines #10。
请告诉我。
我正在使用 Jenkins 构建一个 运行 在 docker 容器中的项目,但我 运行 遇到了问题。
执行这段代码时:
stage('deploy front') {
when { equals expected: 'do', actual: buildFront }
agent {docker{image 'ebiwd/alpine-ssh'}}
steps{
sh 'chmod 400 .iac/privatekey'
sh "ssh -i .iac/privatekey ci_user@134.209.181.163"
}
}
我收到一个错误:
+ ssh -i .iac/privatekey ci_user@134.209.181.163
Pseudo-terminal will not be allocated because stdin is not a terminal.
Warning: Permanently added '134.209.181.163' (ECDSA) to the list of known hosts.
bind: No such file or directory
unix_listener: cannot bind to path: /root/.ssh/sockets/ci_user@134.209.181.163-22.uzumQ42Zb6Tcr2E9
此外,如果您在容器中用手执行以下脚本,则一切正常
ssh -i .iac/privatekey ci_user@134.209.181.163
Jenkins 容器以 docker-compose.yaml
开始version: '3.1'
services:
jenkins:
image: jenkins/jenkins:2.277.1-lts
container_name: jenkins
hostname: jenkins
restart: always
user: root
privileged: true
ports:
- 172.17.0.1:8070:8080
- 50000:50000
volumes:
- /opt/docker/jenkins/home:/var/jenkins_home
- /etc/timezone:/etc/timezone
- /usr/bin/docker:/usr/bin/docker
- /etc/localtime:/etc/localtime
- /var/run/docker.sock:/var/run/docker.sock
可能是什么问题?
问题出在这个地方:
agent {docker{image 'ebiwd/alpine-ssh'}}
当我将其更改为以前的版本时,例如:
agent {docker{image 'ebiwd/alpine-ssh:3.13'}}
一切开始工作
我的 Gitlab 管道中有同样的错误:
bind: No such file or directory
unix_listener: cannot bind to path: /root/.ssh/sockets/aap_adm@wp-np2-26.ebi.ac.uk-22.LIXMnQy4cW5klzgB
lost connection
我认为错误与 this changeset 有关。
特别是,ssh 配置文件需要路径“~/.ssh/sockets”。由于我们没有使用脚本 /usr/local/bin/add-ssh-key(为该图像创建的自定义脚本),因此缺少此路径。
我在图像项目中打开了一个问题:Error using the image in CI/CD pipelines #10。