簡體   English   中英

Maven使用Jenkins內部版本號安裝/部署

[英]Maven install/deploy with Jenkins build number

更新#1 9/18

我的公司決定徹底改進他們的開發/發布周期,以適應越來越多的開發人員。

git進程類似於成功的分支模型 ,只有一些變化。 開發人員需要進行合並/拉取請求,而不是開發人員直接推送訪問“開發”分支,需要進行代碼審查和基本單元測試。

版本系統將是Major.Minor.Patch,其中主要版本標記向后兼容性中斷,次要版本標記新功能和小錯誤修復,Patch標記關鍵熱修復。 此新版本系統將刪除Jenkins構建號作為有用的信息,但出於歷史目的將其附加到已部署的工件。

Jenkins將跟蹤“開發”分支,以構建和部署SNAPSHOT到我們的本地Nexus,因此開發人員可以使用未發布但已接受的功能。 Jenkins還將跟蹤“主”分支,以構建和部署發布工件。

發布過程將:

  • 根據已發布的功能更新POM版本
  • Git使用新版本標記分支
  • 執行單元,集成和系統測試。
  • 構建,混淆並將發布工件部署到我們的Nexus
  • 將“develop”分支版本更新為“Major.Minor ++ - SNAPSHOT”以用於新開發SNAPSHOT。

原始郵政

我正在嘗試構建一個混淆的JAR庫,使用基於Jenkins / Hudson構建的動態構建號,並部署到內部的Sonatype Nexus。

我的問題是,Maven install / deploy不會更改finalName,並且使用如下表達式設置版本被視為“不良做法”:

    <version>1.0.${buildNumber}</version>

盡管這是不好的做法,但它正確地安裝/部署具有適當版本(本地和遠程)的工件。 構建號基於一對配置文件,這些配置文件鏈接到Jenkins構建系統的構建號環境變量的存在,並且在缺少該變量時默認為0:

    <profile>
        <id>static_build_number</id>
        <activation>
            <property>
                <name>!env.BUILD_NUMBER</name>
            </property>
        </activation>
        <properties>
            <buildNumber>0</buildNumber>
        </properties>
    </profile>
    <profile>
        <id>dynamic_build_number</id>
        <activation>
            <property>
                <name>env.BUILD_NUMBER</name>
            </property>
        </activation>
        <properties>
            <buildNumber>${env.BUILD_NUMBER}</buildNumber>
        </properties>
    </profile>

我們不使用SNAPSHOT版本,因為任何提交並推送到Nexus的版本都被視為測試版本。

是否有一種“正確”的方法來設置基於Jenkins / Hudson動態內部版本號的Maven版本,允許它使用該更新版本進行部署?

maven方式表示只有在釋放代碼時才更改版本,並且相同版本的兩個連續版本應該產生相同的輸出。

在你的情況下,你反對這兩個好的做法

如果真的每次提交都是新版本,那么你所做的並不是非常錯誤(但對我來說聽起來很有趣)。 一個缺點是它看起來不像是你從VCS創建一個標簽(這是另一個好習慣)。

我會說實話。 我無法相信每個提交都是生產就緒版本。 我從來沒有見過這個,即使在持續交付環境中,每個提交都需要通過大量自動化測試,有時修訂被拒絕(可能出於功能或性能原因)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM