我正在研究必须在Linux从属代理/节点上运行的Jenkins管道(Windows主机)。我想基于轮询git存储库来解决这个问题,但是由于防火墙配置,存储库只能从从节点看到。
管道使用“agent {node {label'xxx'}}”声明在正确的slave上运行。但是,所有轮询repo的尝试似乎都来自master,就像轮询日志所示。有没有办法从从节点轮询git repo?可以更改防火墙配置,但由于我们的IT安全组织,不是权宜之计。
答案 0 :(得分:0)
由于没有更好的选择立即出现,这是我的详细解决方法。此“GitPoller”作业配置为每隔10分钟运行一次。它在目标代理(可以看到git SCM服务器)上运行,并执行git checkout并检查新的更改集。如果找到任何更改集,则它将运行实际的构建作业。
pipeline {
agent {
node {
label 'xyzzy' /* run on the firewalled machine */
}
}
/* Declare the pipeline stages */
stages {
/* The "ScmFetch" stage fetches the baseline from git */
stage('ScmFetch') {
steps {
echo 'Fetching from SCM...'
/* Fetch the baseline from git */
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'blah-blah-blah']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'blah-blah-blah', url: 'url-of-git-repo']]])
script {
if (currentBuild.changeSets.size() > 0) {
echo 'Found ' + currentBuild.changeSets.size() + ' change sets'
build 'real-build-job'
}
else {
echo 'Found no change sets'
}
}
}
post {
failure {
echo 'FAILED in stage ScmFetch'
}
}
}
}
}