当前位置: 首页 > 知识库问答 >
问题:

在Jenkins多分支管道中指定GitHub项目URL

司徒俊良
2023-03-14

我试图在Jenkins的多分支管道中指定GithubProjectProperty。我试图在选项块中设置一个条目来控制这个值,但没有成功。

管道语法片段生成器建议:

properties([
    $class: 'GithubProjectProperty',
    displayName: '',
    projectUrlStr: 'https://myServer/myOrg/myRepo'
])

以下各项似乎都不起作用:

1)尝试将属性直接放在选项块中

options {
        // Set the URL for the GitHub project option
        properties([
            $class: 'GithubProjectProperty',
            displayName: '',
            projectUrlStr: 'https://myServer/myOrg/myRepo'
        ])
}

错误:“属性”部分已从0.8版起重命名。请改用“选项”

2)删除properties关键字,但将选项保留在选项块中

options {
        // Set the URL for the GitHub project option
        [
            $class: 'GithubProjectProperty',
            displayName: '',
            projectUrlStr: 'https://myServer/myOrg/myRepo'
        ]
}

错误:无法将选项定义为映射

3)将GitHubProjectProperty视为可以实例化(如office365ConnectorWebhooks)

options {
        // Set the URL for the GitHub project option
        GithubProjectProperty('https://myServer/myOrg/myRepo')
}

错误:选项类型“GithubProjectProperty”无效。有效选项类型:[authorizationMatrix、buildDiscarder、catchError、checkoutToSubdirectory、disableConcurrentBuilds、disableResume、durabilityHint、newContainerPerStage、office365ConnectorWebhooks、overrideIndexTriggers、parallelsAlwaysFailFast、PreserveStaches、quietPeriod、RateLimitBuils、retry、脚本、skipDefaultCheckout、skipStagesAfterUnstable、超时、WaitTill、warnError、withContext、withCredentialsthEnv,ws]

4)将GitHubProjectProperty视为可以实例化但在脚本块内(因为根据尝试#3,脚本应该是有效的)

options {
    script {
        // Set the URL for the GitHub project option
        GithubProjectProperty('https://myServer/myOrg/myRepo')
    }
}

错误:选项定义不能有块

office-365 连接器插件是 Jenkinsfile 的选项块中支持的工作插件。我将它的代码与GitHub上的github插件源代码进行了比较,并注意到以下行:

@Extension
public static final class DescriptorImpl extends JobPropertyDescriptor {

该代码缺少 office365ConnectorWebhooks 在其代码中提供的@Symbol指令

@Extension
@Symbol("office365ConnectorWebhooks")
public final class WebhookJobPropertyDescriptor extends JobPropertyDescriptor {

是否有一些特殊的语法可用于将 GitHub URL 添加到多分支管道,或者该插件是否只是不支持通过 Jenkinsfile 对其进行管理?

共有2个答案

郜联
2023-03-14

我遇到了同样的问题,并能够通过以下方式解决:

options{
    githubProjectProperty(displayName: '', projectUrlStr: 'your_project_url')
}
宗政和韵
2023-03-14

使用 Jenkinsfile 在管道中指定选项的功能需要符号。Jenkins github插件中有一个建议的修复程序,它添加了必要的Sybol指令,但从1.30.0版本开始,它目前不是插件的一部分。

参见:https://issues.jenkins-ci.org/browse/JENKINS-62339

开发人员可以通过更新以下文件来构建自己的更新插件:src/main/java/com/coravi/hudson/plugins/github/GithubProjectProperty.java在以下来源中:https://github.com/jenkinsci/github-plugin

添加符号:

    import org.jenkinsci.Symbol;
...
    @Extension
    @Symbol("githubProjectProperty")
    public static final class DescriptorImpl extends JobPropertyDescriptor {
...

此外,确保代码为newInstance指定了正确的函数签名:

   @Override
   public JobProperty<?> newInstance(@Nonnull StaplerRequest req, JSONObject formData)
           throws Descriptor.FormException {

更新的插件可以由Jenkins管理员安装,使用插件管理器中的高级选项从中央插件存储库外部上传. hpi文件

 类似资料:
  • 问题内容: 目前,我们使用Jenkins作业DSL在每个Git分支上生成许多Jenkins作业。多分支管道插件似乎是一种有趣的方式,可以使用Jenkinsfiles获得一流的作业生成支持,并减少我们维护的Job DSL数量。 例如,我们有 libwidget-server 和 widget-server 开发分支项目。当libwidget- server构建完成时,将触发widget-server

  • 使用Jenkins进行多平台多分支构建。 我有多个多分支管道项目(每个平台一个,因为每个平台需要显着不同的构建步骤)。我有一个具有多个分支的代码存储库(这就是为什么多分支管道项目有意义)。 我希望每个多分支管道项目引用不同的Jenkinsfile,而不是所有人都试图使用文件名为“Jenkinsfile”的文件,该文件位于存储库的根目录中。 这个已解决的错误表明我应该能够做到这一点,但我找不到任何概

  • 对于一个新项目,我想使用Jenkins CI的新管道功能。我们的Git存储库中有几个分支,应该以同样的方式进行测试。它还应该自动跟踪和处理新的分支。因此,我创建了一个多分支管道作业。但它的配置有两个问题: 1) 为了被Jenkins标记为有效,分行需要一个“Jenkinsfile”。如果这不存在,詹金斯将忽略该分支。有没有办法标记与模式匹配的所有分支,而不需要在其中包含此文件? 2) 每个分支都应

  • 我正在努力使用Jenkins 2.1多分支管道,在这里,我从同一个git存储库构建了多个工件。一些工件是独立的,应该根据它们各自目录中的更改触发构建。有些是依赖的,应该由先前的步骤/构建触发。 存储库有一个控制整个管道的文件。Jenkins多分支管道作业会在所有更改时触发(无其他行为)。 我不知道如何在目录dirA发生变化时触发工件A的构建。 git回购协议中的Jenkins文件file:///r

  • 我已经使用Blue ocean multibranch管道和Jenkins文件配置了Jenkins,以便在repo中出现新的pull请求时触发构建。 在这个管道中,我有两个并行运行的阶段,因为它们是独立的测试。我想要实现的是在Github的pull请求页面上显示两个检查结果,每个阶段一个。 起初我想用两个不同的Jenkins文件创建两个管道,但多分支插件似乎不支持这一点。 实现这一目标的正确解决方

  • 问题内容: 标题大多是这样说的。如何从远程git存储库触发Jenkins多分支管道项目构建? “ Trigger远程构建”构建触发器选项似乎不起作用,因为没有保存您设置的令牌。 问题答案: 目前(Jenkins 2.22),“触发触发器远程构建”构建触发选项在多分支管道作业配置中可见,但不起作用(如果您检查并指定了令牌,则无论如何保存后都会重置)。根据这个,这是故意的触发器不能确定,但一个错误,它