我正在基于jenkins上的管道创建此新Job。我希望我的jenkinsfile位于bitbucket仓库中:假设我的配置文件位于bitbucket.org/config.git
工作任务是干净安装项目bitbucket.org/myProject.git
如何配置管道,以便在bitbucket.org/myProject.git
中进行任何推送并遵循bitbucket.org/config.git
中定义的步骤时触发它?
我不想创建多分支管道,也不想让我的jenkins文件与要编译的项目位于同一存储库中。
我当前的配置是:
pipeline {
agent any
parameters {
string(defaultValue: '', description: 'URL', name: 'GIT_URL')
string(defaultValue: '', description: 'Credential', name: 'CREDENTIAL_ID')
}
stages {
stage ('Initialize') {
steps {
git branch: 'develop', credentialsId: "${params.CREDENTIAL_ID}", url: "${params.GIT_URL}"
}
}
stage ('Build') {
steps {
sh 'mvn clean install '
echo 'build'
}
}
}
答案 0 :(得分:0)
您可以在Jenkins中使用共享库。您的代码中仍然需要一个Jenkinsfile,但这将不包含任何逻辑。它只会引用共享库并传递git repo path之类的任何参数。
有关共享库的更多信息,请参考此链接https://jenkins.io/doc/book/pipeline/shared-libraries/。
要触发构建,可以在管道中定义一个触发器。示例:
triggers {
pollSCM('H/5 * * * *')
}
或如果不想轮询则使用webhooks。
答案 1 :(得分:0)
实际上,我设法使其正常运行。 在我的詹金斯管道中,我激活了“将更改推送到BitBucket时进行构建”。
node {
checkout([$class: 'GitSCM',
branches: [[name: 'feature/test-b']],
doGenerateSubmoduleConfigurations: false,
extensions: [[$class: 'SubmoduleOption', disableSubmodules: false,
parentCredentials: false, recursiveSubmodules: true, reference: '',
trackingSubmodules: false]], submoduleCfg: [],
userRemoteConfigs: [[credentialsId: 'admin',
url: 'http://localhost:7990/scm/bout/boutique-a.git']]])
}
当在“功能/测试-b”分支中的Boutique-a中进行更改时,我的工作被触发,这很酷。
现在我有另一个问题,在功能/ * 中进行更改时如何触发 好像我不在多分支管道中时,我无法访问env.BRANCH_NAME