zoukankan      html  css  js  c++  java
  • jenkins 通过 Version Number Plug 插件动态生成项目版本号

    一、场景介绍

      在项目开发过程中,项目版本号的管理和维护对于开发人员来说是一个非常不愿意去维护的事情。特别是微服务盛行的今天,子模块独立开发,子模块独立升级。各种版本之间的交叉并行,老虎、老鼠、傻傻分不清楚。

      不同的企业对项目的版本管理有不同的规定,我们应该根据不同的需求去指定版本管理流程。本次主要以每一次的 Jenkins 编译为一个版本号为例,来阐述采用 Version Number Plug 做版本管理的实现细节。

      在实践过程中遇到一个问题,就是每次采用 Jenkins 编译 pom.xml 的时候,Version Number Plug 的版本号总会比 build 出来的 jar 项目大一个版本号,网上寻觅出来的原因是因为在采用 Jenkins 构建编译的时候,Jenkins 会将 pom.xml 先加载到内存中,然后通过 setversion 命令进行版本设置,但是实际打包的时候,还是读取的内存中的 pom.xml 文件导致

    二、插件安装

    官方地址: https://plugins.jenkins.io/versionnumber/

    离线下载地址:  http://updates.jenkins-ci.org/latest/versionnumber.hpi

    1. 在 Jenkins 的插件管理中安装 Version Number 插件

      在这里插入图片描述

    2. 重启 Jenkins 服务,使该插件为 Jenkins 服务

    三、插件配置

    1. 找到需要采用该插件进行版本管理的项目模块 → 配置 → 构建环境

     

    变量说明:

    BUILD_VERSION:变量名

    ${JOB_name}:项目名称

    ${BUILD_DATE_FORMATTED, "yyyyMMdd"}:格式化后的日期

    ${BUILDS_TODAY}:今天构建的数量

    P.S

    在 Jenkins 中直接调用 Shell 脚本中调用 echo ${BUILD_VERSION} 查看版本的效果是否和自己的预设一致。

    四、参数说明

    Version Number Format String

    处理版本号格式字符串以创建存储在命名环境变量中的版本号。版本号格式字符串中的每个字符都会传递到最终版本号,但$ {}中包含的变量除外。例如,如果版本格式字符串1.0。$ {BUILDS_THIS_YEAR}是该日历年的第十个版本,则将返回1.0.10。

    以下是在版本号格式字符串中使用的有效变量:

    名称

    功能

    BUILD_DATE_FORMATTED

    采用第二个参数,并返回给定构建日期的Java格式的日期字符串。例如,$ {BUILD_DATE_FORMATTED,“ yyyy-MM-dd”}将返回日期(而不是时间),类似于2009-10-01。日期格式字符串必须用引号引起来,并且格式字符串中的任何空格都是有效的。

    BUILD_DAY

    没有参数,它只是以整数形式返回构建日期。如果有参数,它将使用参数中的字符数,并使用该字符填充日期字符串。例如,如果是该月的第三天,则$ {BUILD_DAY}将返回3,$ {BUILD_DAY,X}将返回3,而$ {BUILD_DAY,XX}将返回03。

    BUILD_WEEK

    返回星期,对BUILD_DAY使用相同的参数约定

    BUILD_MONTH

    返回月份,并在BUILD_DAY使用相同的参数约定

    BUILD_YEAR

    返回年份,并且BUILD_DAY具有相同的参数约定

    BUILDS_TODAY

    返回今天已经发生的构建数量,包括该构建。午夜重置。参数约定与BUILD_DAY相同

    BUILDS_THIS_WEEK

    返回本周(包括本周)发生的构建数量。这将在一周开始时重置。参数约定与BUILD_DAY相同

    BUILDS_THIS_MONTH

    返回本月已发生的构建数量,包括本次构建。这将在每月的第一天重置。参数约定与BUILD_DAY相同

    BUILDS_THIS_YEAR

    返回今年已发生的构建数量。这会在一年的第一天重置。参数约定与BUILD_DAY相同。

    BUILDS_ALL_TIME

    返回自项目开始以来已经发生的构建数量。这与hudson内部版本号不同,因为它可以定期重置(例如,从1.0。$ {BUILDS_ALL_TIME}移至2.0。$ {BUILDS_ALL_TIME}时,并且可以配置为以任意数字开头,而不是标准开始日期。

    MONTHS_SINCE_PROJECT_START

    自项目开始日期以来的月数。这严格取决于当前构建的月份和项目开始日期的月份。如果项目开始于10月31日且构建于11月1日,则将返回1。如果项目开始于10月1日且构建于11月30日,则还将返回1。自变量约定与BUILD_DAY相同。

    YEARS_SINCE_PROJECT_START

    自项目开始日期起的年数。与MONTHS_SINCE_PROJECT_START一样,这仅取决于年份;

    (还要别的吗)

    如果可用,否则$ {}中包含的任何其他参数将被同名的环境变量替换,否则将被忽略。例如,这可用于集成源代码管理版本号。

    初始化值

    在开始构建之前,可以在命令行或通过作业的插件配置Web GUI指定今年/月/周/天的构建数量。如果指定了它们,则它们将覆盖生产中当前使用的任何值。如果选择这样做,则可以将版本号从另一个系统迁移到Jenkins。

    此外,可以使用取自环境变量的值自动覆盖今年/每月/每周/每天的构建数量。您可以提供一个环境变量,而不是在作业的插件配置的表单字段中提供一个覆盖下一个构建的值的简单数字(如上所述),而是提供一个环境变量,该变量将在下一个构建过程中提取并使用。建立。如果未设置它或它的值不能转换为正整数(不损失精度),则将采用以前版本的值并将其增加一个(标准行为)。

    五、使用

    echo ${BUILD_VERSION} 
  • 相关阅读:
    LeetCode 109 Convert Sorted List to Binary Search Tree
    LeetCode 108 Convert Sorted Array to Binary Search Tree
    LeetCode 107. Binary Tree Level Order Traversal II
    LeetCode 106. Construct Binary Tree from Inorder and Postorder Traversal
    LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal
    LeetCode 103 Binary Tree Zigzag Level Order Traversal
    LeetCode 102. Binary Tree Level Order Traversal
    LeetCode 104. Maximum Depth of Binary Tree
    接口和多态性
    C# 编码规范
  • 原文地址:https://www.cnblogs.com/deny/p/14372756.html
Copyright © 2011-2022 走看看