SCM材料

介绍

构建通常使用版本控制系统(VCS/SCM)中维护的源代码。GoCD内置支持Git, Mercurial, SVN, TFS & Perforce。用户可以使用SCM插件与其他SCMs集成。

scm和材料

与内置VCS/SCM材料不同,插件SCMs的材料定义不在管道定义中。他们是全局实例。许多管道可能有引用相同SCM的材料定义。当SCM有新的修订时,感兴趣的管道将被安排。

SCM的定义

一个SCM材料插件让管道组管理员提供相应的SCM类型的详细信息。

注意:
  1. SCM材料插件不使用SCM名称 - Go使用它来构造材料名称。 两个SCM不能有相同的名称。 3.使用检查连接按钮确保Go可以使用该SCM。 4.在“保存”插件验证用户输入。

注意:目前要将现有的SCM材料关联到管道,您需要编辑配置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服务器将自动生成它们。 但是,在通过XML配置进行配置时,并非通过UI进行配置时执行的所有验证都会在浏览器框架右下角的服务器运行状况消息面板中显示。

<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也会每分钟轮询更新版本。 可以通过配置xml(仅适用于GoCD管理员)将autoUpdate设置为false来在SCM级别关闭此功能。 autoUpdate默认打开。 当为SCM找到更新的版本时,它的材料管道将被调度(假设管道的自动调度处于打开状态)。 另请参阅API调度

过滤器:有时您可能不希望GoCD触发每次提交的管道。 例如:如果其“文档(documentation)”更改,您可能不想“构建(build)”。 您可以在管道级别设置filter(过滤器),如果commit仅包含与模式匹配的文件,则要求GoCD跳过管道调度。

SCM信息显示

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

  1. SCM修订 2.提交时间 3.提交者的姓名(如果有的话) 4.对提交的评论 5.提交中的文件以及操作(添加/修改/删除)

在构建SCM时,建议尽可能多地包含以上信息,以便GoCD可用于显示如下。

SCM在Agent上签出

在作业开始之前,VCS / SCM插件将默认签出代码到代理上的目的地(destination)目录中。

参考:

results matching ""

    No results matching ""