Yum存储库轮询器

    您的查询搜索没有结果。

    Yum存储库轮询器

    注意:该插件适用于在具有repoquery安装(yum-utils包的一部分)的Linux节点上运行的GoCD服务器。yum-utils包)。

    介绍

    Yum存储库轮询器是一个软件包材料插件,能够对yum存储库中的rpm软件包进行轮询。在GoCD之前23.1.0该插件与GoCD捆绑在一起,但现在可以从GitHub下载进行安装在GitHub上.

    GoCD服务器通过软件包材料插件接口与此插件交互。该插件使用类似于以下命令来轮询服务器。因此,它不依赖于yum所依赖的文件,例如/etc/yum.repos.d下的文件。

    repoquery --repofrompath=uuid,$REPO_URL --repoid=uuid -q $PACKAGE_SPEC -qf "%{LOCATION}..."
    

    如果repoquery返回一个软件包作为输出,则认为给定的轮询实例是成功的。

    存储库定义

    存储库URL必须是有效的http、https或file URL。此插件查找$REPO_URL/repodata/[repomd.xml]以确认其有效性。基本身份验证(user:password@domain/path)支持http和https存储库。

    软件包定义

    在这种插件的情况下,软件包定义完全由软件包规范确定。软件包规范可以采用以下任何格式。请参考repoquery手册页获取详细信息。

    name
    name.arch
    name-ver
    name-ver-rel
    name-ver-rel.arch
    name-epoch:ver-rel.arch
    epoch:name-ver-rel.arch
    

    可以使用shell通配符模式。例如,假设我们有一个正在开发中的组件,准备发布版本1.2.0。我们在trunk/master上切出一个分支并将版本提升到1.3.0。因此,由trunk/master生成的软件包可能看起来像mycomp-1.3.0-b72349-noarch.rpm,而由分支生成的软件包可能看起来像mycomp-1.2.0-b72344-noarch.rpm。现在,如果我们有一个仅对1.2系列软件包感兴趣的部署流水线,软件包规范需要是mycomp-1.2.*而不是仅仅mycomp。 may also be used. For example, say we have a component under development getting ready for release of version 1.2.0. We cut a branch for the release and bump up the version on trunk/master to 1.3.0. Thus, a package generated by trunk/master may look like mycomp-1.3.0-b72349-noarch.rpm while that generated by branch may look like mycomp-1.2.0-b72344-noarch.rpm. Now if we have a deployment pipeline that is only interested in 1.2 series packages, the package spec needs to be mycomp-1.2.* rather than just mycomp.

    软件包元数据

    插件访问以下rpm元数据 is accessed by the plugin

    1. 构建时间(必需,由rpmbuild自动设置)- 用于插件验证软件包是否比GoCD最后看到的新。GoCD将此字段显示为修改于.
    2. 打包者 - GoCD将此字段显示为最后修改人如果未提供,则显示为匿名。
    3. URL - 显示为回溯URL由GoCD显示。将此用作追踪发布软件包的工作的方法(在GoCD内或外部)到yum存储库。
    4. 构建主机 - 由GoCD显示为注释:构建于$BUILDHOST

    已发布的环境变量

    下列信息作为任务的环境变量提供:

    1. GO_PACKAGE_< REPO-NAME >_< PACKAGE-NAME >_LABEL
    2. GO_REPO_< REPO-NAME >_< PACKAGE-NAME >_REPO_URL
    3. GO_PACKAGE_< REPO-NAME >_< PACKAGE-NAME >_PACKAGE_SPEC
    4. GO_PACKAGE_< REPO-NAME >_< PACKAGE-NAME >_LOCATION

    单个插件可以通过其他环境变量提供额外的信息。

    下载RPMs

    假设我们设置了一个名为ORA的存储库,指向https://public-yum.oracle.com/repo/OracleLinux/OL6/latest/x86_64/并定义了一个gcc软件包,规格为gcc-4.*并将其设置为流水线的材料。要在代理上本地下载该软件包,我们可以编写如下任务:

    [go] Start to execute task: <exec command="/bin/bash" >
    <arg>-c</arg>
    <arg>curl -o /tmp/gcc.rpm $GO_PACKAGE_ORA_GCC_LOCATION</arg>
    </exec>
    

    当任务在代理上执行时,环境变量会替换为以下内容:

    [go] Start to execute task: <exec command="/bin/bash" >
    <arg>-c</arg>
    <arg>curl -o /tmp/$GO_PACKAGE_ORA_GCC_LABEL.rpm $GO_PACKAGE_ORA_GCC_LOCATION</arg>
    </exec>.
    ...
    [go] setting environment variable 'GO_PACKAGE_ORA_GCC_LABEL' to value 'gcc-4.4.7-3.el6.x86_64'
    [go] setting environment variable 'GO_REPO_ORA_GCC_REPO_URL' to value 'https://public-yum.oracle.com/repo/OracleLinux/OL6/latest/x86_64'
    [go] setting environment variable 'GO_PACKAGE_ORA_GCC_PACKAGE_SPEC' to value 'gcc-4.*'
    [go] setting environment variable 'GO_PACKAGE_ORA_GCC_LOCATION' to value 'https://public-yum.oracle.com/repo/OracleLinux/OL6/latest/x86_64/getPackage/gcc-4.4.7-3.el6.x86_64.rpm'
    ...
    

    或者,简单地将其作为参数传递给远程服务器上的部署脚本

    <exec command="/bin/bash">
        <arg>-c</arg>
        <arg>ssh server "cd /to/dest/dir;deploy.sh $GO_PACKAGE_ORA_GCC_LOCATION"</arg>
    </exec>
    

    安装RPMs

    对于独立的软件包(除了目标节点上已经安装的内容外没有外部依赖项),只需执行以下操作即可:

    rpm -U /path/to/downloaded/pkg.rpm
    

    另一方面,如果软件包不是独立的,我们将运行以下命令:

    yum install $GO_PACKAGE_ORA_GCC_LABEL
    

    这将要求/etc/yum.repos.d包含存储库定义。

    创建和发布RPMs

    虽然GoCD中对包作为材料的支持不涉及包是如何创建和发布的,这里是一些关于网络上信息的简短指南。

    注意事项

    1. 此插件每分钟最多检测一个包修订版(GoCD材料轮询的默认间隔)。如果在两次轮询之间的时间段内向存储库发布多个包版本,GoCD只会注册该时间段内的最新版本。
    2. 此插件使用rpm元数据中的构建时间来判断轮询是否返回了新结果。如果由于某种原因(例如时区配置错误),pkg-1.1的构建时间小于pkg-1.0,则插件不会将pkg-1.1注册为较新的包。
    3. 更新RPM的唯一方法是更改版本或发行号。再次发布具有相同名称但不同构建时间的另一个文件将无法更新。
    4. 不支持包组。