docker - Jenkins 管道中的单一 SSH 连接
问题描述
我创建了 Jenkinsfile 用于在生产中构建我的项目,管道如下所示:
pipeline {
agent any
stages {
stage('Pull') {
steps {
sh '''ssh ${SSH_USER}@${SERVER_ADDRESS} <<EOF
cd ${SOURCE_FOLDER}/project
git pull
git status
EOF'''
}
}
stage('Composer') {
parallel {
stage('Composer') {
steps {
sh '''ssh ${SSH_USER}@${SERVER_ADDRESS} <<EOF
docker run --rm -v ${SOURCE_FOLDER}/project:/app composer/composer:latest install
EOF'''
}
}
stage('Composer 2') {
steps {
sh '''ssh ${SSH_USER}@${SERVER_ADDRESS} <<EOF
docker run --rm -v ${SOURCE_FOLDER}/project/sub:/app
composer/composer:latest install
EOF'''
}
}
}
}
}
}
有没有办法将所有阶段都放在一个 SSH 连接中,以最大限度地减少开销和连接数?
我通过创建密钥并将公钥粘贴到生产机器上手动完成了所有 SSL 工作。
解决方案
您可以为连接创建一个函数并将 SSH_USER 和 SERVER_ADDRESS 作为输入参数传递给该函数。从所有阶段调用此函数。
推荐阅读
- javascript - 使用 AutoSizer 包装 React-Beautiful-DND + React-Window 虚拟列表时遇到的设置问题
- r - 如何制作汇总表?
- spring - Spring批处理应用程序不处理所有项目
- javascript - Mapbox弹出窗口内的按钮未执行功能
- python - curve_fit 和 scipy.odr 的比较 - 绝对 sigma
- javascript - 谷歌脚本 JSON 嵌套数组到单元格
- javascript - 如何让计数器 TWIG 忽略 Drupal 缓存?
- python - 半经验质量公式
- java - 在 Eclipse 中使用可运行的 Jar 文件时出现 FileNotFoundException 错误
- typescript - 从其他组件Angular 8调用ngOnInit方法