Gitlab分支来源

ID:Gitlab-Branch-源

构建状态"data-canonical-src=特拉维斯"data-canonical-src=GitHub释放"data-canonical-src=git"data-canonical-src=必威国际有限公司Jenkins插件安装"data-canonical-src=

为了完全能够在GitLab仓库或项目上运行Jenki必威国际有限公司ns持续集成,你需要以下插件:

  • Gitlab API插件-封装GitLab Java API。

  • GitLab分支源码插件-包含两个包:

    • io.必威国际有限公司jenkins.plugins.gitlabserverconfig—管理服务器配置和web钩子管理。理想情况下应该驻留在另一个插件中Gitlab插件.在未来,这个包将被移动到一个新的插件。

    • Io.必威国际有限公司jenkins.plugins.gitlabbranchsource.- 为多分支管道作业(包括合并请求)和文件夹组织添加Gitlab分支源。

开始

Jenkins入门:必威国际有限公司

必威国际有限公司Jenkins是一个开源的、自托管的自动化服务器,用于持续集成和持续交付。必威体育app下载核心Jenkins及其插件的源代码是用Java编写的。必威国际有限公司有了现代Jenkins服务器的发展(见:必威国际有限公司蓝索插件),使用React等现代前端工具提供丰富的用户体验。

有关更多Jenki必威国际有限公司ns相关信息,请参阅文档

延长詹金斯必威国际有限公司

必威国际有限公司Jenkins有超过1000个插件,所以已经实现了大量的功能,这可以用来利用新的插件。必威国际有限公司Jenkins有一个扩展特性,允许插件通过扩展它们的类来使用其他插件或核心特性。要在Jenkins中定义或创建扩展,可以使用必威国际有限公司@延期注释类型。这个注释被Jenkins选中,新的扩展将被添加到必威国际有限公司延期列表对象,可以通过扩展的位置ExtensionFinder.

詹金斯运行服务器必威国际有限公司:

以下是设置自己的Jenkins服务器的几种方法:必威国际有限公司

  1. 使用Jenkin必威国际有限公司s Docker:

    一世。下载Docker Image这里

    2将终端/命令提示符窗口打开到下载目录。

    3运行命令:

    Docker Run \ -u根\ --rm \ -d \ -p 8080:8080 \ -p 50000:50000 \ -v jenki必威国际有限公司ns-data:/ var / jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ --name 必威国际有限公司jenkins \ jenkinsci / bluechean

    4浏览到http:// localhost:8080

    如果您需要有关Docker命令的更多信息,请参阅这里

  2. 使用Jenkin必威国际有限公司s Web应用存档(WAR):

    一世。下载最新稳定的Jenkins W必威国际有限公司ar文件

    2将终端/命令提示符窗口打开到下载目录。

    3运行命令:

    java jar j必威国际有限公司enkins.war

    4浏览到http:// localhost:8080必威国际有限公司 / jenkins

  3. 使用Azure Jenkin必威国际有限公司s解决方案:

    指的是蔚蓝的译文

  4. 使用Bitnami Jenkin必威国际有限公司s堆栈:

    请参阅bitnami.译文

  5. 使用必威国际有限公司Jenkins Cli.运行它以发展:

    通过:jcli插件运行

配置Jenkins实例:必威国际有限公司

  1. 解锁您的Jenkins实必威国际有限公司例:

    一世。从Jenkins控必威国际有限公司制台日志输出,复制自动生成的字母数字密码。

    2在“解锁Jenkins”页面必威国际有限公司上,将此密码粘贴到“管理员密码”字段中,然后单击继续

  2. 使用插件自定义Jenki必威国际有限公司ns。选择一个选项:

    一世。安装建议的插件-安装推荐的插件集,这是基于最常见的用例。

    2选择要安装的插件-选择最初安装哪一组插件。当您第一次访问插件选择页面时,默认情况下会选择建议的插件。

  3. 创建管理员用户:

    一世。出现“创建First Admin用户”页面时,请在“相应”字段中指定管理员用户的详细信息,然后单击“保存”和“完成”。

    2当Jenkins就必威国际有限公司绪页面出现时,单击Start using Jenkins。

    3如果需要,用您刚刚创建的用户的凭据登录到Jen必威国际有限公司kins,您就可以开始使用Jenkins了!

最低要求

  1. 必威国际有限公司Jenkins - 2.176.2 LTS或以上
  2. Gitlab - 11.0或以上

安装插件

您可以使用这些方式中的任何一种:

  1. 从Jenkins更新中心安必威国际有限公司装。转到Jenk必威国际有限公司ins> Configure> Manage Plugins>可用并搜索Gitlab分支源插件然后选择安装。

  2. 使用插件管理工具

    java -jar插件 -  management-tool.jar -p gitlab-branch-source -d<Path-to-default-必威国际有限公司jenkins-plugins-directory>-W.<path-to-必威国际有限公司jenkins-war>
  3. 来自来源:

    i.将源代码签出到您的本地机器:

    git clone https://github.com/必威国际有限公司jenkinsci/gitlab-branch-source-plugin.git cd gitlab-branch-source-plugin

    2安装插件:

    MVN清洁安装或MVN清洁安装-DSkiptests#跳过测试

    3运行插件:

    在localhost:8080或mvn h必威国际有限公司pi:run -Djetty上运行Jenkins实例。Port ={Port} #在你想要的端口号上运行

    4现在* .hpi可以在Jenkins实例上手动安装生成:必威国际有限公司

    1.选择“管理Jenkins”2.选必威国际有限公司择“管理插件”3.选择“高级”选项卡3.在“上传插件”部分中,选择“选择文件”4.选择“$ {root_dir} / target / gitlab-branch-source.hpi` 5.选择`上传`6.选择`安装而没有重启`
  4. 下载最新版本这里并手动安装。

最初设定

在Jenkins实例上安装插件后,您需要配置Gitlab Server设必威国际有限公司置。

在Jenkins上设置Gitlab服务器配置必威国际有限公司

  1. 在詹金必威国际有限公司斯,选择管理Jenki必威国际有限公司ns.

  2. 选择配置系统

  3. 向下滚动查找GitLab部分。

    gitlab-section."style=

  4. 选择添加gitlab服务器|选择GitLab服务器

  5. 现在,您现在会看到gitlab服务器配置选项

    Gitlab-Server."style=

    有4个字段需要配置:

    一世。姓名- 插件会自动为您生成唯一的服务器名称。用户可能希望配置此字段以满足您的需求,但应确保它是足够的唯一。我们建议保持它。

    2服务器URL-包含到GitLab服务器的URL。默认设置为"https://gitlab.com.".用户可以修改它以输入他们的GitLab服务器URL,例如。https://gitlab.gnome.org/http://gitlab.example.com:7990.等等。

    3证书- 包含类型Gitlab个人访问令牌的凭据条目列表。没有添加凭据时,它会显示“-None-”。用户可以通过单击“添加”按钮添加凭据。

    4mange web hook.- 如果您希望插件在Gitlab项目上设置Web挂钩以获取Push / MR / Tag / Note事件,请选中此框。

    4Mange System Hook.- 如果您希望插件在Gitlab项目上设置系统挂钩以检测是否已删除项目,请选中此框。如果提供的访问令牌,请记住插件只能在服务器上设置系统挂钩行政使用权。

    v。秘密令牌- 秘密令牌需要验证从Gitlab服务器收到的WebHook有效负载。使用高级选项生成秘密令牌或使用您自己的。如果您是旧插件用户并且未设置秘密令牌并希望秘密令牌应用于现有作业的挂钩,则可以添加秘密令牌并重新扫描工作。将应用具有新秘密令牌的现有钩子。

    VI。钩子的根网址默认情况下,这个插件创建的钩子的根URL是你的Jenkins实例URL。必威国际有限公司您可以通过添加自定义根URL来修改根URL。如果你想让Jenkins URL成为你的自定义钩必威国际有限公司子URL,请留空。一个路径被添加到钩子根URL中/ gitlab-webhook / post对于webhooks和/ gitlab-systemhook / post用于系统挂钩。

  6. 添加个人访问令牌凭据:

    这是一个手动设置。要自动生成个人访问令牌查看下一节

    i.用户需要添加aGitlab个人访问令牌输入凭据条目以安全地持续到Jenkins内的令牌。必威国际有限公司

    2生成A.个人访问令牌在您的Gitlab服务器上

    。从右上角b。选择概要文件下拉菜单中选择“设置”c。从左列d。选择“访问令牌”输入一个名称|范围设置为“api”(如果管理员也给“sudo”systemhooks所需和先生的评论引发)e。选择“创建个人访问令牌”f。复制生成的令牌

    3返回詹金斯|必威国际有限公司选择添加在凭据领域|选择必威国际有限公司

    4放种类到Gitlab个人访问令牌。

    v。输入令牌

    VI。输入唯一的IDID

    VII。输入人类可读描述。

    Gitlab-equentials."style=

    VIII。选择添加

  7. 测试连接:

    一世。选择所需的令牌证书落下。

    2选择测试连接

    3它应该返回类似于验证用户{username}的凭据

  8. 选择应用(在底部)。

  9. 现在在Jenkins上安装了GitLab服务器。必威国际有限公司

在Jenkins内创建个人访问令牌必威国际有限公司

或者,用户可以在Jenkins本身内生成GitLab个人访问令牌,并自动将GitLab个人访问令牌凭证添加到Jenkins服务器凭证中。必威国际有限公司

  1. 选择先进的在底部GitLab部分。

  2. 选择管理其他Gitlab操作

  3. 选择将登录名和密码转换为令牌

  4. 设置Gitlab Server URL.

  5. 生成令牌有2个选项:

    一世。来自凭证—选择已经持久化的用户名密码凭据或添加用户名密码凭据来持久化它。

    2来自登录和密码- 如果这是一个时间的事情,那么您可以直接输入您的凭据到文本框,用户名/密码凭据不会持久。

  6. 设置用户名/密码凭据后,选择创建令牌的凭证

  7. 令牌创建者将在Gitlab Server中为给定用户创建一个个人访问令牌,其中包含所需的范围,并且还为Jenkins服务器内部的相同凭据创建凭据。必威国际有限公司您可以返回Gitlab Server配置以选择生成的新凭据(选择“-None-”首先将出现新凭据)。出于安全原因,该令牌不会被视为纯文本而不是返回ID.它是128位长的UUID-4字符串(36个字符)。

    Gitlab-token-creator"style=

在Gitlab服务器上手动创建挂钩

在Gitlab Server上使用以下终点点用于Web挂钩和系统挂钩设置。这必威国际有限公司詹金斯Url需要是完全合格的域名(FQDN)所以不能localhost.

Webhook.

<必威国际有限公司 jenkins_url > / gitlab-webhook /职位

标签合并请求笔记事件。

systemhook.

<必威国际有限公司 jenkins_url > / gitlab-systemhook /职位

存储库更新事件。

配置为代码

在Jenkins服务器上设置Gitlab Server配置有更简单的方法。必威国际有限公司不需要在UI中搞乱。必威国际有限公司Jenkins配置为代码(jcasc)或者简单地配置为代码插件允许您通过a配置Jenkins必威国际有限公司yaml.文件。如果您是第一次使用JCasC,您可以了解更多关于JCasC的信息这里

先决条件:

安装配置为代码插件在您的Jenkins实例上必威国际有限公司。

在Jenkins安装新插件必威国际有限公司

添加配置yaml:

有多种方法可以加载JCASC yaml文件来配置Jenkins:必威国际有限公司

  • 默认搜索包含名称的文件的jcasc必威国际有限公司Jenkins.yaml.$必威国际有限公司 jenkins_root.

  • JCasC查找环境变量casc_必威国际有限公司jenkins_config其中包含配置的路径yaml.文件。

    • 包含一组配置文件的文件夹的路径。/ var必威国际有限公司 / jenkins_home / casc_configs

    • 单个文件的完整路径例如/var/必威国际有限公司jenkins_home/casc_configs/jenkins.yaml.

    • 指向Web上服务的文件的URL。https:// 必威国际有限公司 /jenkins.yaml

  • 您还可以在UI中设置配置yaml路径。去 /配置 - 代码.输入路径或URL必威国际有限公司Jenkins.yaml.并选择应用新的配置

要在Jenkins中配置Gitlab Server添加以下内容必威国际有限公司必威国际有限公司Jenkins.yaml.

证书系统DomainerCredentials.: -证书: -gitlabPersonalAccessToken范围系统ID我<3gitlab.令牌xfsqzvvtax5ycph5bq3r.Gitlab个人访问令牌不保密的gitLabServers服务器: -CredienceSid.我<3gitlab.与Gitlab个人访问令牌凭据指定的ID相同管理网上真的manageSystemHooks真的访问令牌应具有管理员访问系统挂钩姓名Gitlab-3214.serverUrlhttps://gitlab.com.Hookrooturl.secretToken

请参阅处理秘密部分在jcasc文件中以获得更好的安全性。

乔布斯设置

Gitlab分支源插件允许您创建2种作业:

  • 多刺管道工作- 用于单个项目。
  • 文件夹组织- 对于所有者内部的多个项目(用户/组/子组)。

多刺管道工作

Multibranch Pipeline作业类型使您可以为同一项目的不同分支实现不同的Jenkinsfiles。必威国际有限公司在多刺管道作业中,Jenkins自动发现,管理和执行包含a的分必威国际有限公司支/合并请求/标签的管道必威国际有限公司Jenkinsfile在源控制中。这消除了对手动管道创建和管理的需求。

创建一个多刺管道工作

  1. 选择新物品在Je必威国际有限公司nkins主页上。

  2. 输入您的作业名称,选择多刺管道|选择好的

  3. 分支来源部分,选择添加源|选择Gitlab项目

  4. 现在您需要配置工作。

    分支来源"style=

    一世。选择服务器配置在初始服务器设置中。

    2[可选]添加结账凭据(SSHPrivateKey或用户名/密码),如果有任何私人项目将由插件构建。

    3向您想要构建的项目所在的所有者添加路径。如果用户输入用户名.如果组,请输入组名称.如果小组中,输入与命名空间的子组路径

    4基于所有者提供的。所有项目都在路径中发现并添加到项目列表框。您现在可以选择要构建的项目。

    v。行为(A.K.A.SCM特征)允许不同的配置选项到您的构建。更多信息请参见SCM Trait api部分。

  5. 现在您可以继续保存工作了。

有关更多信息,请参阅这个

保存后,如果一个,在Gitlab服务器中创建了一个新的Web钩子Gitlab访问令牌在服务器配置中指定。然后,分支索引基于您选择的选项行为开始。由于索引进行了新作业,因此为每个分支开始并排队必威国际有限公司Jenkinsfile在他们的根目录中。

将作业结果通知给Gitlab Server作为构建的每个分支机构头部提交的管道状态。由于Gitlab不提供来自Forks的Serge请求的Pitlab Server,因此无法向Gitlab Server通知Forkab Server的构建。看到这个

我们有一个解决办法。必威国际有限公司如果MR作者是值得信任的所有者,Jenkins将从分叉项目构建MRs开发人员/维护者/所有者访问级别。更多信息请参见SCM Trait api部分。

由于Web挂钩现在由Gitlab Server上的Jenkins CI设置必威国际有限公司。任何推送事件或合并 - 请求事件或标签事件触发Jenkins的有关版本。必威国际有限公司

文件夹组织

文件夹组织使Jenkins能够监视整个Gitlab必威国际有限公司用户/团体/子群并自动为包含分支/合并请求/标签的项目创建新的Multibranch pipeline必威国际有限公司Jenkinsfile.在我们的插件中,这种类型的作业被调用Gitlab组

创建一个GitLab集团工作

  1. 选择新物品在Je必威国际有限公司nkins主页上。

  2. 输入您的作业名称,选择Gitlab组|选择好的

  3. 现在您需要配置工作。

    一世。选择服务器配置在初始服务器设置中。

    2[可选]添加结账凭据(SSHPRIVATEKEY或用户名/密码)才有需要构建任何私有项目。

    3添加您想要构建的项目的所有者的路径。如果用户输入用户名.如果组,请输入组名称.如果小组中,输入与命名空间的子组路径

    v。行为(a.k.a. scm特征)允许构建不同的配置选项。更多信息请参见SCM Trait api部分。

此组作业类型中的索引只需要发现一个分支必威国际有限公司Jenkinsfile因此,它只显示部分索引日志。您需要访问单个项目以查看它们的完整索引。

SCM Trait API.

以下行为适用于两者多刺管道工作文件夹组织(除非另有说明)。

默认特征:

  • 发现分支机构—发现分支。

    • 只有不归档为MRS的分支机构- 如果要发现原始合并请求,可能没有意义才能发现与合并请求和分支相同的更改。
    • 只有被归档为MRs的分支- 在从插件的旧版本升级时,存在此选项以保留旧行为。注意:如果您有此选项的实际用例,请向本文提出合并请求。
    • 所有分支机构- 忽略分支是否被提交为合并请求,然后在原始项目上发现所有分支机构。
  • 发现来自原点的合并请求- 发现由Origin分支机构进行的合并请求。

    • 合并合并请求与当前目标修订合并- 发现每个合并的请求一次,发现了对应于与目标分支的当前修订的合并结果的修订版。
    • 当前合并请求修订- 发现每个合并请求一次,并使用已发现的修订版对应于合并请求头修订版,而无需合并。
    • 当前的mr修订和mr与当前的目标修订合并—发现每个合并请求两次。第一个发现的修订对应于在每次扫描中与目标分支的当前修订合并的结果。第二个并行发现的修订与没有合并的合并请求头修订相对应。
  • 发现来自分叉的合并请求- 发现由叉式项目分支机构进行的合并请求。

    • 战略:

      • 合并合并请求与当前目标修订合并- 发现每个合并的请求一次,发现了对应于与目标分支的当前修订的合并结果的修订版。
      • 当前合并请求修订- 发现每个合并请求一次,并使用已发现的修订版对应于合并请求头修订版,而无需合并。
      • 当前的mr修订和mr与当前的目标修订合并—发现每个合并请求两次。第一个发现的修订对应于在每次扫描中与目标分支的当前修订合并的结果。第二个并行发现的修订与没有合并的合并请求头修订相对应。
    • 信任

      • 成员- 发现来自叉子项目的MRS,其作者是原产地项目的成员。
      • 值得信赖的成员-[推荐]从fork项目中发现MRs,其作者在原始项目中具有Developer/Maintainer/Owner访问级别。
      • 每个人- 发现任何人提交的叉子项目的夫人。出于安全原因,您应该永远不会使用此选项。它可用于揭示您的管道秘密环境变量。
      • 没有人-根本没有发现任何来自分叉项目的MRs。相当于完全去掉这个特征。

    如果成员或者值得信赖的成员选择,然后插件将构建来自非/不受信任的成员MRS的目标分支。

额外的特征:

可以通过选择来选择这些特征添加在里面行为部分。

  • 标签发现—发现项目中的标签。自动构建标签安装Basic-Branch-Build-Plugin

  • 发现组/子群项目- 发现组/子组内的子组项目。仅适用于Gitlab组类型为团体/子群但不是用户

  • 日志构建状态作为关于Gitlab的评论- 将日志记录构建状态作为对Gitlab的注释。构建完成后,会记录提交或合并请求的注释。您可以决定是否要记录成功构建。您还可以使用sudo用户将构建状态评论为commment。必威国际有限公司Jenkinsadmin或类似的东西。

  • 在合并请求注释上触发构建-启用通过你想要的注释体的注释来触发一个合并请求的重建(默认:必威国际有限公司詹金斯重建)。该作业只能由项目的可信成员触发,即开发人员/维护者/所有者AccessLevel(也包括从祖先组继承)。默认情况下,只有Project的受信任成员可以触发MR。您可能希望禁用此选项,因为可信成员不包含从共享组继承的成员(无法从Gitlabapi从Gitlab 13.0.0中获取它)。如果禁用,MR Comment Trigger可以由访问项目访问的任何用户完成。

  • 禁用GitLab项目化身- 禁用Gitlab项目的头像。当API没有令牌身份验证或项目时,无法获取头像。因此,您可以将此选项用作解决方法。我们将在后续发布中解决此问题。

  • 项目命名策略- 选择你是否想要项目名或者是项目路径(带有名称空间)作为每个项目的作业名称。用户通常更喜欢第一个选项,但由于遗留的原因,我们有项目路径(带有名称空间)作为默认命名方案。注意,如果已经创建了作业,并且更改了命名策略,那么将导致项目和生成日志被销毁。

  • 按名称过滤(使用正则表达式)-根据指定的正则表达式筛选要在项目中发现的项的类型。例如,只发现掌握分支,发展分支和所有合并请求添加——先生(主| |发展。*)

  • 按名称过滤(使用通配符)- 根据指定的通配符过滤要在项目中发现的项目类型。例如,只发现掌握分支,发展分支和所有合并请求添加发展硕士MR- *

  • 跳过管道状态通知- 禁用通知Gitlab服务器关于管道状态。

  • 覆盖钩子管理模式- 覆盖Web挂钩和系统挂钩的默认挂钩管理模式。目前不支持用于WebHook的凭据。

  • 结账yssh.-[不推荐]SSH签出时使用此模式。使用结账凭据代替。

环境变量

默认情况下,多分支作业有以下环境变量(由分支API插件提供):

分支- - - - - -分店名称

合并请求 -分店名称change_id.change_target.change_branch.CHANGE_FORKchange_url.change_author.CHANGE_TITLEchange_author_display_name.

标签 -分店名称TAG_NAMEtag_timestamp.tag_date.tag_unixtime.

此插件将更多的环境变量添加到构建(工作流程type only),这是作为WebHook接收的有效负载)参见https://docs.gitlab.com/ee/user/project/integrations/webhooks.html#Events.

几点注意事项:

如果Web挂钩有效载荷中的任何字段没有记录响应,则返回空字符串。添加更多变量查看package io.必威国际有限公司jenkins.plugins.gitlabbranchsource.cause.

GITLAB_OBJECT_KIND—该环境变量用于在访问环境变量之前检查事件类型。可能的值是没有一个tag_pushmerge_request.

任何与之结尾的变量从1开始的负载列表索引。

Import Eventbles可从Push事件,标记推送事件和合并请求事件中获得。

推动事件:

看到https://docs.gitlab.com/ee/user/project/integrations/webhooks.html#push-events

扩张 ❄️
GITLAB_OBJECT_KIND GITLAB_AFTER GITLAB_BEFORE GITLAB_REF GITLAB_CHECKOUT_SHA GITLAB_USER_ID GITLAB_USER_NAME GITLAB_USER_EMAIL GITLAB_PROJECT_ID GITLAB_PROJECT_ID_2 GITLAB_PROJECT_NAME GITLAB_PROJECT_DESCRIPTION GITLAB_PROJECT_WEB_URL GITLAB_PROJECT_AVATAR_URL GITLAB_PROJECT_GIT_SSH_URL GITLAB_PROJECT_GIT_HTTP_URL GITLAB_PROJECT_NAMESPACE GITLAB_PROJECT_VISIBILITY_LEVEL GITLAB_PROJECT_PATH_NAMESPACE GITLAB_PROJECT_CI_CONFIG_PATH GITLAB_PROJECT_DEFAULT_BRANCH GITLAB_PROJECT_HOMEPAGE GITLAB_PROJECT_URL GITLAB_PROJECT_SSH_URL GITLAB_PROJECT_HTTP_URL GITLAB_REPO_NAME GITLAB_REPO_URL GITLAB_REPO_DESCRIPTION GITLAB_REPO_HOMEPAGE GITLAB_REPO_GIT_SSH_URL GITLAB_REPO_GIT_HTTP_URL GITLAB_REPO_VISIBILITY_LEVEL GITLAB_COMMIT_COUNT GITLAB_COMMIT_ID_#GITLAB_COMMIT_MESSAGE_#GITLAB_COMMIT_TIMESTAMP_#GITLAB_COMMIT_URL_#GITLAB_COMMIT_AUTHOR_AVATAR_URL_#GITLAB_COMMIT_AUTHOR_CREATED_AT_#GITLAB_COMMIT_AUTHOR_EMAIL_#GITLAB_COMMIT_AUTHOR_ID_#GITLAB_COMMIT_AUTHOR_NAME_#gitlab_commit_author_state_#gitlab_commit_author_username_#gitlab_commit_author_web_url_# gitlab_commit_added_#gitlab_commit_modified_#gitlab_commit_remodied_#gitlab_request_url gitlab_request_string gitlab_request_token gitlab_refs_head

标签事件:

笔记:

必威国际有限公司詹金斯默认不自动建立标签推(看原因)。您需要安装分支构建策略插件来解决此问题。

请参阅指南:https://github.com/必威国际有限公司jenkinsci/basic-branch-build-strateies-plugin/blob/master/docs/user.adoc.

请记住,如果您使用的基本分支构建标签构建,您还需要为分支和拉拔请求(更改请求)添加策略,否则它们不会自动构建(请参阅下面的GIF)。

分支建立策略"style=

看到https://docs.gitlab.com/ee/user/project/inthations/webhooks.html#tag-events.

扩张 ☀️
GITLAB_OBJECT_KIND GITLAB_AFTER GITLAB_BEFORE GITLAB_REF GITLAB_CHECKOUT_SHA GITLAB_USER_ID GITLAB_USER_NAME GITLAB_USER_EMAIL GITLAB_PROJECT_ID GITLAB_PROJECT_ID_2 GITLAB_PROJECT_NAME GITLAB_PROJECT_DESCRIPTION GITLAB_PROJECT_WEB_URL GITLAB_PROJECT_AVATAR_URL GITLAB_PROJECT_GIT_SSH_URL GITLAB_PROJECT_GIT_HTTP_URL GITLAB_PROJECT_NAMESPACE GITLAB_PROJECT_VISIBILITY_LEVEL GITLAB_PROJECT_PATH_NAMESPACE GITLAB_PROJECT_CI_CONFIG_PATH GITLAB_PROJECT_DEFAULT_BRANCH GITLAB_PROJECT_HOMEPAGE GITLAB_PROJECT_URL GITLAB_PROJECT_SSH_URL GITLAB_PROJECT_HTTP_URL GITLAB_REPO_NAME GITLAB_REPO_URL GITLAB_REPO_DESCRIPTION GITLAB_REPO_HOMEPAGE GITLAB_REPO_GIT_SSH_URL GITLAB_REPO_GIT_HTTP_URL GITLAB_REPO_VISIBILITY_LEVEL GITLAB_COMMIT_COUNT GITLAB_REQUEST_URL GITLAB_REQUEST_STRING GITLAB_REQUEST_TOKEN GITLAB_REFS_HEAD

合并请求事件:

看到https://docs.gitlab.com/ee/user/project/integrations/webhooks.html#merge-request-events

扩张
GITLAB_OBJECT_KIND GITLAB_USER_NAME GITLAB_USER_USERNAME GITLAB_USER_AVATAR_URL GITLAB_PROJECT_ID GITLAB_PROJECT_NAME GITLAB_PROJECT_DESCRIPTION GITLAB_PROJECT_WEB_URL GITLAB_PROJECT_AVATAR_URL GITLAB_PROJECT_GIT_SSH_URL GITLAB_PROJECT_GIT_HTTP_URL GITLAB_PROJECT_NAMESPACE GITLAB_PROJECT_VISIBILITY_LEVEL GITLAB_PROJECT_PATH_NAMESPACE GITLAB_PROJECT_CI_CONFIG_PATH GITLAB_PROJECT_DEFAULT_BRANCH GITLAB_PROJECT_HOMEPAGE GITLAB_PROJECT_URL GITLAB_PROJECT_SSH_URL GITLAB_PROJECT_HTTP_URL GITLAB_REPO_NAME GITLAB_REPO_URL GITLAB_REPO_DESCRIPTION GITLAB_REPO_HOMEPAGE GITLAB_REPO_GIT_SSH_URL GITLAB_REPO_GIT_HTTP_URL GITLAB_REPO_VISIBILITY_LEVEL GITLAB_OA_ID GITLAB_OA_TARGET_BRANCH GITLAB_OA_SOURCE_BRANCH GITLAB_OA_SOURCE_PROJECT_ID GITLAB_OA_AUTHOR_ID GITLAB_OA_ASSIGNEE_ID GITLAB_OA_TITLE GITLAB_OA_CREATED_AT GITLAB_OA_UPDATED_AT GITLAB_OA_MILESTONE_ID GITLAB_OA_STATE GITLAB_OA_MERGE_STATUS GITLAB_OA_TARGET_PROJECT_ID GITLAB_OA_IID GITLAB_OA_DESCRIPTION GITLAB_OA_SOURCE_NAME GITLAB_OA_SOURCE_DESCRIPTION GITLAB_OA_SOURCE_WEB_URL GITLAB_OA_SOURCE_AVATAR_URL GITLAB_OA_SOURCE_GIT_SSH_URL GITLAB_OA_SOURCE_GIT_HTTP_URL GITLAB_OA_SOURCE_NAMESPACE GITLAB_OA_SOURCE_VISIBILITY_LEVEL GITLAB_OA_SOURCE_PATH_WITH_NAMESPACE GITLAB_OA_SOURCE_DEFAULT_BRANCH GITLAB_OA_SOURCE_HOMEPAGE GITLAB_OA_SOURCE_URL GITLAB_OA_SOURCE_SSH_URL GITLAB_OA_SOURCE_HTTP_URL GITLAB_OA_TARGET_NAME GITLAB_OA_TARGET_DESCRIPTION GITLAB_OA_TARGET_WEB_URL GITLAB_OA_TARGET_AVATAR_URL GITLAB_OA_TARGET_GIT_SSH_URL GITLAB_OA_TARGET_GIT_HTTP_URL GITLAB_OA_TARGET_NAMESPACE GITLAB_OA_TARGET_VISIBILITY_LEVEL GITLAB_OA_TARGET_PATH_WITH_NAMESPACE GITLAB_OA_TARGET_DEFAULT_BRANCH GITLAB_OA_TARGET_HOMEPAGE GITLAB_OA_TARGE_URL GITLAB_OA_TARGET_SSH_URL GITLAB_OA_TARGET_HTTP_URL GITLAB_OA_LAST_COMMIT_ID GITLAB_OA_LAST_COMMIT_MESSAGE GITLAB_OA_LAST_COMMIT_TIMESTAMP GITLAB_OA_LAST_COMMIT_URL GITLAB_OA_LAST_COMMIT_AUTHOR_NAME GITLAB_OA_LAST_COMMIT_AUTHOR_EMAIL GITLAB_OA_WIP GITLAB_OA_URL GITLAB_OA_ACTION GITLAB_OA_ASSIGNEE_NAME GITLAB_OA_ASSIGNEE_USERNAME GITLAB_OA_ASSIGNEE_AVATAR_URL GITLAB_LABELS_COUNT GITLAB_LABEL_ID_#GITLAB_LABEL_TITLE_#GITLAB_LABEL_COLOR_#GITLAB_LABEL_PROJECT_ID_#GITLAB_LABEL_CREATED_AT_#GITLAB_LABEL_UPDATED_AT_#GITLAB_LABEL_TEMPLATE_#GITLAB_LABEL_DESCRIPTION_#GITLAB_LABEL_TYPE_#GITLAB_LABEL_GROUP_ID_#GITLAB_CHANGES_UPDATED_BY_ID_PREV GITLAB_CHANGES_UPDATED_BY_ID_CURR GITLAB_CHANGES_UPDATED_AT_PREV GITLAB_CHANGES_UPDATED_AT_CURR

作业DSL种子作业配置

要创建一个Job DSL种子Job,请参见此教程

这里是一个样本种子工作脚本的文件夹组织工作:

组织文件(GitLab组织文件夹){描述(使用工作DSL创建的GitLab org文件夹) 显示名称(我的项目//“项目”组织{gitLabSCMNavigator {projectOwner(Baymac.)credirdssid(我<3gitlab.) serverName (Gitlab-3214.//“Traits”(“GUI中的”行为“)是”宣言兼容“特征{subgroupprojectdiscoverytrait()//发现子组中的项目Gitlabbranchdiscovery {StrategentidId(3.//发现所有分支机构} OriginMergerequestDiscoverytrait {StrategentidId(1//发现MRS并将它们与目标分支合并} gitLabTagDiscovery ()//发现标签}}}//“特性”(GUI中的“行为”)不是“声明兼容”的//对于一些'特征,我们需要手动配置此东西,直到jobdsl处理它//https://issues.必威国际有限公司jenkins.io/browse/jenkins-45504.{配置def特征/导航员/io.必威国际有限公司jenkins.plugins.gitlabbranchsource.GitLabSCMNavigator/性状特征<<Io.必威国际有限公司jenkins.plugins.gitlabbranchsource.forkmergerequestdiscoverytrait.{StrategyID(2) 相信(班级io.必威国际有限公司jenkins.plugins.gitlabbranchsource.forkmergerequestdiscoverytrait $ trustpermission.)}}//“项目识别员”workflowMultiBranchProjectFactory {scriptPath必威国际有限公司Jenkinsfile}}//“孤儿项目战略”orphanEditemstrategy {discardolditems {daystokeep(10.)numtokeep(5)}}//扫描组织文件夹触发器:1天//我们需要手动配置此内容,因为JOBDSL仅允许“定期(int min)”触发{serialicfoldertrigger {间隔(1D}}}}

要查看Job DSL支持的所有api,你可以访问以下链接:

http:// localhost:8080必威国际有限公司 / jenkins / plugin / nob-dsl / api-viewer / index.html#path / confignalfolder-troundations-gitlabscmnavigator-traits

jcasc配置创建工作

您还可以使用JCASC从作业DSL种子作业直接创建作业。以下是yaml配置的示例:

def traits = node / navigators / 'io.jenkins.plugins.gitlabbranchsource.GitLabSCMNavigator' / traits traits << 'io.jenkins.plugins.gitlabbranchsource.ForkMergeRequestDiscoveryTrait' { strategyId('2') trust(class: 'io.jenkins.plugins.gitlabbranchsource.ForkMergeRequestDiscoveryTrait$TrustPermission') } } // "Project Recognizers" projectFactories { workflowMultiBranchProjectFactory { scriptPath 'Jenkinsfile' } } // "Orphaned Item Strategy" orphanedItemStrategy { discardOldItems { daysToKeep(-1) numToKeep(-1) } } // "Scan Organization Folder Triggers" : 1 day // We need to configure this stuff by hand because JobDSL only allow 'periodic(int min)' for now configure { node -> node / triggers / 'com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger' { spec('H H * * *') interval(86400000) } } } ">
工作-脚本>组织文件(GitLab组织文件夹){描述(GitLab org文件夹配置了JCasC) 显示名称(我的项目//“项目”组织{gitLabSCMNavigator {projectOwner(Baymac.)credirdssid(我<3gitlab.) serverName (Gitlab-3214.//“Traits”(“GUI中的”行为“)是”宣言兼容“特征{subgroupprojectdiscoverytrait()//发现子组中的项目Gitlabbranchdiscovery {StrategentidId(3.//发现所有分支机构} OriginMergerequestDiscoverytrait {StrategentidId(1//发现MRS并将它们与目标分支合并} gitLabTagDiscovery ()//发现标签}}}//“特性”(GUI中的“行为”)不是“声明兼容”的//对于一些'特征,我们需要手动配置此东西,直到jobdsl处理它//https://issues.必威国际有限公司jenkins.io/browse/jenkins-45504.{配置节点- >def特征节点/导航员/io.必威国际有限公司jenkins.plugins.gitlabbranchsource.GitLabSCMNavigator/性状特征<<Io.必威国际有限公司jenkins.plugins.gitlabbranchsource.forkmergerequestdiscoverytrait.{StrategyID(2) 相信(班级io.必威国际有限公司jenkins.plugins.gitlabbranchsource.forkmergerequestdiscoverytrait $ trustpermission.)}}//“项目识别员”workflowMultiBranchProjectFactory {scriptPath必威国际有限公司Jenkinsfile}}//“孤儿项目战略”orphanEditemstrategy {discardolditems {daystokeep(-1)numtokeep(-1)}}//扫描组织文件夹触发器:1天//我们需要手动配置此内容,因为JOBDSL仅允许“定期(int min)”{配置节点- >节点/触发器/com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger{规范(H * * *)间隔(86400000}}}}

您也可以使用文件或url来加载脚本,见这个

已知的问题

  • 系统挂钩功能仍处于beta。插件仅检测创建新项目时。它无法检测项目何时被销毁或更新。对于反映分支索引的更改,需要手动执行或等待分支索引的自动触发(在作业中配置)。

如何与我们交谈?

致谢

此插件由谷歌夏季(GSOC)团队的谷歌夏季构建和维护用于Gitlab的多刺管道支持

维护人员:

外部支持:

  • 奥列格(Jenk必威国际有限公司ins董事会成员)
  • 格雷格(Gitlab4j API的维护者)
  • 斯蒂芬。(SCM相关的Jenkins插件的维护者)必威国际有限公司

还要感谢整个Jenkins社区,促进了技术专必威国际有限公司长和灵感。