SCM扩展

    您的查询搜索没有结果。

    版本控制材料

    介绍

    构建通常会使用存储在版本控制系统(VCS/SCM)中的源代码。GoCD 内置支持 Git、Mercurial、SVN、TFS 和 Perforce。用户可以使用 SCM 插件与其他版本控制系统集成。

    版本控制系统和材料

    与内置的 VCS/SCM 材料不同,插件型 SCM 的材料定义是包含在管道定义中。它们是全局实体。许多管道可能有指向同一 SCM 的材料定义。当 SCM 中有新修订时,相关的管道将被调度。

    SCM 定义

    一个 SCM 材料插件允许管道组管理员向 GoCD 提供对应 SCM 类型的详细信息。

    注意:
    1. SCM 名称不由 SCM 材料插件使用 - 它由 Go 用于构造材料名称。两个 SCM 不能具有相同的名称。
    2. 使用检查连接按钮以确保 Go 可以与此 SCM 一起工作。
    3. 在“保存”时,插件验证用户输入。

    注意:目前要将现有的 SCM 材料关联到管道上,需要编辑 Config XML。

    SCM 材料唯一性(指纹):

    每个 SCM 材料插件将其属性的一个子集定义为SCM 指纹。例如,SCMurlbranch可能包含在内,usernamepassword可能被排除在外。SCM 名称是SCM 指纹的一部分。不允许多个 SCM 具有相同的 SCM 指纹。尝试这样做会导致如下错误消息:

    The following error(s) need to be resolved in order to perform this action:<br>
    Cannot save SCM, found duplicate SCMs. [SCM Name: 'apple'], [SCM Name: 'orange']
    

    示例XML配置

    这是一个 SCM 的 XML 视图。请注意 SCM 和管道材料之间的关系。为了适应不同的插件,SCM 配置使用了宽松类型的属性、键和值标签。如果你选择通过直接编辑 XML 配置,请注意不需要提供 SCM ID,GoCD 服务器将自动生成它们。然而,并非所有在 UI 配置时执行的验证都会在 XML 编辑配置时生效 —— 后续失败将在浏览器框架右下角的服务器健康消息面板中显示。

    <scms>
      <scm id="3bfc282e-43a6-4795-ba9c-6c50665220dd" name="git-repo">
        <pluginConfiguration id="jgit" version="1.0" />
        <configuration>
          <property>
            <key>url</key>
            <value>https://github.com/gocd/gocd.git</value>
          </property>
        </configuration>
      </scm>
    </scms>
    ...
    <pipelines group="sample-group">
      <pipeline name="upstream-pipeline">
        <materials>
          <scm ref="3bfc282e-43a6-4795-ba9c-6c50665220dd" dest="dest">
            <filter>
              <ignore pattern="*.log" />
            </filter>
          </scm>
        </materials>
      ...
    

    权限

    由于 SCM 是全局实体,更改 SCM 定义将反映在所有使用它的管道上 —— 甚至包括与编辑者不属于同一管道组的管道。为了使“编辑”、“删除”和“添加”新材料的决策更容易,我们列出了所有使用该 SCM 的管道。

    注意:更改 SCM 定义会导致所有依赖的管道被重新调度。

    轮询

    即使没有管道使用某个 SCM,GoCD 每分钟仍会轮询新修订。这可以通过在 config xml 中将autoUpdate设置为 false 来关闭(仅限 GoCD 管理员)。autoUpdate默认情况下开启。当找到某个 SCM 的新修订时,它所对应的管道将被调度(假设自动调度管道是开启的)。另见API 调度.

    过滤器:有时你可能不希望 GoCD 在每次提交时触发管道。例如,如果是“文档”更改,你可能不想“构建”。可以在管道级别设置一个过滤器,要求 GoCD 如果提交只包含匹配某种模式的文件,则跳过管道调度。

    SCM 信息显示

    SCM 材料插件期望从 SCM 元数据中(如果可用)获取以下信息

    1. SCM 修订版
    2. 提交时间
    3. 提交者姓名(如果有)
    4. 提交注释
    5. 提交中的文件及其操作(新增/修改/删除)

    在构建 SCM 时,建议尽量包含上述尽可能多的信息,以便 GoCD 可以如下来显示。

    Agent 上的 SCM 检出

    VCS/SCM 插件默认会在作业开始前将代码检出到代理上的destination目录中。

    References: