当前位置: 首页 > 面试题库 >

如何在多个代理上对Jenkins管道使用发布步骤?

韦阳晖
2023-03-14
问题内容

当使用詹金斯管道,其中在不同的代理每个阶段的运行,这是很好的做法,以使用agent none开头:

pipeline {
  agent none
  stages {
    stage('Checkout') {
      agent { label 'master' }
      steps { script { currentBuild.result = 'SUCCESS' } }
    }
    stage('Build') {
      agent { label 'someagent' }
      steps { bat "exit 1" }
    }
  }
  post {
    always {
      step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: "test@test.com", sendToIndividuals: true])
    }
  }
}

但是,这样做会Required context class hudson.FilePath is missing在电子邮件应发送出去时导致错误消息:

[Pipeline] { (Declarative: Post Actions)
[Pipeline] step
Required context class hudson.FilePath is missing
Perhaps you forgot to surround the code with a step that provides this, such as: node
[Pipeline] error
[Pipeline] }

当我从改变agent noneagent any,它工作正常。

我如何post不使用就可以上班agent any


问题答案:

step执行邮寄的包裹在一个node步骤中:

post {
  always {
    node('awesome_node_label') {
      step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: "test@test.com", sendToIndividuals: true])
    }
  }
}


 类似资料:
  • 所以我用这个脚本创建了一个新的管道(直接粘贴到Jenkins,而不是在SCM中): 我运行了它,什么也没有发生,工作没有收到一个新的参数,即使它收到了,我也不明白为什么我可能需要这个。谁能解释一下吗? Update1:我尝试将一个带有属性步骤的虚拟管道放入我的git repo,然后配置一个多分支作业。

  • 目前,我们使用JJB编译Jenkins作业(大部分已经是管道),以便配置大约700个作业,但JJB2似乎无法很好地扩展以构建管道,我正在寻找一种方法将其从等式中删除。 我主要希望能够将所有这些管道存储在一个集中的存储库中。 请注意,在我们的用例中,将CI配置(jenkins文件)保存在每个存储库和分支中是不可能的,我们需要将所有管道保存在一个“jenkins jobs.git”repo中。

  • 我有一个Jenkins管道,我需要在其中登录到两个不同的docker存储库。我知道如何使用以下命令对一个存储库进行身份验证 但不知道如何为超过1次的回购做这件事?

  • 我正在使用Jenkins管道自动构建和部署我的Java应用程序。我还使用maven发布插件来执行maven部署到Artifactory。 问题是我的Jenkinsfile(或Jenkins管道配置): 我们在发布分支上提交版本0.1.00-SNAPSHOT Jenkins管道获取代码,并执行maven发布 Maven版本将版本更改为0.1.00 Maven发布标签GIT分支、提交和部署工件 Mav

  • 我目前设置了一个 Jenkins 多分支管道作业,该作业基于 Gitlab 服务器上托管的 Git 存储库。Jenkins 可以读取存储库中的分支,并为存储库中的每个分支创建一个作业。但是我不知道如何在Gitlab中使用webhook触发作业。 我的问题是: > < li> 如何从Gitlab服务器触发在Jenkins中创建新的分支作业?我看不到一个新分支的webhook被推。 如何触发单个分支的

  • 根据Andrew Bayer的说法,您不应该向其他人注入声明性管道。将来可能会有人支持它,但可能不会。 我目前正在尝试在管道中启动一个管道,但我想知道我需要做什么才能使它工作。jenkins网页上的文档说明,如果新作业或管道与第一个作业或管道位于同一文件夹中,则可以从直接名称或绝对路径调用它。我已经尝试了所有不同的方法,目前我正在尝试一个文件的绝对路径,我刚刚检查过它一秒钟前存在,但它说它不存在。