在一个普通的自由式项目中,我将SCM插件配置为指向我要发布的Git仓库,并启用"Poll SCM"选项,这允许我配置Stash webhook,以便在发生更改时告诉Jenkins那个回购.通过这种方式,只要将更改推送到仓库,就可以触发作业.
但是当我使用工作流而不是自由式项目时,我需要构建的代码的SCM在groovy工作流脚本中以编程方式指定,这意味着它不是在监听Stash webhook.相反,直接在工作流中配置的SCM是groovy脚本本身的SCM,它与我尝试构建/发布的代码库不同,因此我不希望触发器基于此.
node('docker_builder') {
git url: serviceRepo
releaseVersion = getVersion()
pipelineSpec = getPipelineSpec()
sh "./gradlew clean build pushDockerImage"
}
Run Code Online (Sandbox Code Playgroud)
有关如何在使用工作流插件时实现SCM轮询的任何想法?
我有一个使用管道机制的Jenkins工作.它有几个步骤.为了理解,我们假设我有3个阶段.前两个并行运行,第三个运行后.现在,根据第3阶段最后一次构建的结果,我想做不同的事情.如果第3阶段之前成功,我想要第1阶段的结果,否则采取第2阶段的结果.这有可能检查吗?我不知道如何检索一个阶段的最后结果,只为一个工作的最后状态做了类似的事情.
我正在将jenkins-workflow作业迁移到基于新模板的工作流作业.因为构建号用作构建工件版本的一部分,所以工作流产生我必须以比旧工作流更大的数字开始新工作流的构建号.不幸的是,"Next Build Number"插件不适用于工作流程管道.
有人知道这样做的好方法吗?
我需要能够在Jenkins管道构建期间创建简单的HTTP POST请求.但是我不能使用简单的curl sh脚本,因为我需要它在Windows和Linux节点上工作,如果我可以避免它,我不希望在节点上强制执行更多的工具安装.
我们正在使用的Pipeline插件中使用的Groovy库应该是完成此任务的完美选择.有一个扩展可供Groovy执行名为http-builder的简单POST ,但我不能在我的生活中解决如何在Jenkins的Groovy安装中使用它.
如果我尝试使用Grapes Grab在Pipeline脚本中使用它,我会收到错误,如此处所示.
@Grapes(
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7.1')
)
Run Code Online (Sandbox Code Playgroud)
Groovy Jenkins使用的捆绑版本可能不支持Grapes Grab.是否可以简单地下载并添加http-builder及其依赖项到Jenkins Groovy安装到节点?
我似乎无法从Jenkins Workflow Checkout步骤中提取$ GIT_COMMIT和$ BRANCH_NAME.
我希望能够将此信息发送到我的Gradle脚本,以便将其传递到外部源,如静态分析等.
目前我尝试运行这个:
checkout([$class: 'GitSCM', branches: [[name: '*/master']], userRemoteConfigs: [[credentialsId: '2b74a351-67d5-4d00-abd3-49842a984201', url: 'ssh://git@corporate.com:repo.git']]])
Run Code Online (Sandbox Code Playgroud)
我想实现以下或类似的东西:
// Specified variables that can be reused
def branch = ${BRANCH_NAME}
def commit = ${GIT_COMMIT}
Run Code Online (Sandbox Code Playgroud)
或许也可以这样做:
print "BRANCH: ${BRANCH_NAME}, COMMIT: ${GIT_COMMIT}"
// or the following
print "BRANCH: ${env.BRANCH_NAME}, COMMIT: ${env.GIT_COMMIT}"
Run Code Online (Sandbox Code Playgroud)
我确实发现以下问题似乎已得到解决,但它在版本1.15中不起作用:
https://issues.jenkins-ci.org/browse/JENKINS-30252
任何人有任何想法如何解决这个或如果有一个我找不到的变量?
groovy jenkins jenkins-plugins jenkins-workflow jenkins-pipeline
所以,我一直在使用Jenkins.我已经使用Github Pull Request Builder插件设置了许多项目,以便在有人打开拉取请求时运行测试,然后在拉取请求实际合并到主控时触发其他工作(构建,推送,部署等).
那么,有没有办法用Jenkins文件,组织文件夹或multibranch构建交易来设置它?
我目前正在尝试使用Jenkins Workflow脚本标记repo.我尝试过使用一个sh步骤,但由于没有设置凭据,这会遇到问题.
fatal: could not read Username for 'https://<repo>': Device not configured
Run Code Online (Sandbox Code Playgroud)
是否有现有步骤可用于标记回购或解决凭据问题?
使用Jenkins Workflow插件,我可以根据分支检出存储库.但是,我想基于标签检出存储库.
这是我当前检查主分支的配置
node {
git url: src, branch: 'master'
}
Run Code Online (Sandbox Code Playgroud)
现在我想实现检查标签3.6.1.我试图将分支更改为标记,但这不起作用.文档中没有关于签出标签的内容.
这目前可能吗?我在监督什么吗?
引用;
https://github.com/jenkinsci/workflow-plugin
https://github.com/jenkinsci/workflow-plugin/blob/master/scm-step/README.md
我想env在Jenkinsfile 中的对象中打印所有可用的属性(及其值).
当我做
print env
Run Code Online (Sandbox Code Playgroud)
我明白了:
org.jenkinsci.plugins.workflow.cps.EnvActionImpl@112cebc2
Run Code Online (Sandbox Code Playgroud)
所以看起来好像toString没有在那里实现,如果我不知道他们的名字怎么能访问这个对象中的属性?
如果Jenkinsfile中的构建失败,有没有办法执行清理(或回滚)?
我想通知我们的Atlassian Stash实例构建失败(通过curl在正确的URL处执行).
基本上,当构建状态设置为失败时,它将是一个后续步骤.
我应该用try {} catch ()吗?如果是这样,我应该捕获哪种异常类型?