我正在使用 config.xml 文件作为模板动态创建 jenkins 作业。基本上我想要实现的是,当有人推送到存储库时,这将触发 jenkins 中的工作。然后,这项工作应该拉取一个 docker 镜像,创建一个容器并克隆它所连接到的存储库。这个想法是为了避免将任何恶意代码下载到我们的服务器。相反,它将被下载到 docker 容器内,在容器内运行一个可执行文件,然后容器将被删除。
问题是,每当有人推送到 git 存储库时,jenkins 作业会自动克隆存储库。有没有办法保持对 repo 的钩子但阻止它克隆?
我们没有使用 jenkins 文件,因为它必须在存储库中,任何人都可以修改它,这就是我们从 config.xml 模板创建 jenkins 作业的原因。
我读到 jenkinsfile 中存在选项 skipdefaultcheckout 以停止克隆 repo?是否可以在 config.xml 中进行设置?这是解决我想要做的事情的正确选择吗?
假设: Jenkins上已经安装了相关的docker插件。
安装ssh-agent插件以传递ssh credentials到 docker 容器,以便在 docker 内克隆存储库。
可以使用的 docker 容器内用于仓库签出的示例 groovy 代码片段。
withDockerContainer(args: '-u root', image: "${image}") {
sshagent(['jenkins-credentials']) {
sh "mkdir ~/.ssh/ && echo -e 'Host *\n StrictHostKeyChecking no' > ~/.ssh/config && cat ~/.ssh/config && ssh-add -l"
git changelog: false, credentialsId: '<ID>', poll: false, url: "<REPO URL>"
sh 'echo "repo cloned inside container !!!"'
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
234 次 |
| 最近记录: |