簡體   English   中英

Jenkins 中的多分支管道與 SVN

[英]Multibranch Pipeline in Jenkins with SVN

我有 SVN 作為我的 SCM。 SVN Root URL 結構如下。 https://svn.domain.com/orgName

在此之下,我有一個名為“test”的文件夾。 然后我有標簽、樹枝和樹干。 例如, https://svn.domain.com/orgName/test/trunk
https://svn.domain.com/orgName/test/branches

在主干和分支下,我有各種模塊。 一個模塊是平台,它是核心模塊。 我的項目在 Platform 下的 URL 結構如下。

https://svn.domain.com/orgName/test/trunk/Platform/MyProject https://svn.domain.com/orgName/test/branches/Platform/1.0.0.0/MyProject

不確定上面的結構是否正確。 但這就是它在我的組織中的結構方式,無法更改。 現在,我有以下問題。

  1. 我應該在什么級別維護 Jenkinsfile?
  2. 我應該如何將分支名稱(包括主干)傳遞給這個文件?

如果有人可以提供有關如何將 Multibranch 管道與 SVN 一起使用的一些詳細信息(如果可能的話),那將會很棒。 不幸的是,我找不到任何教程或示例來實現這一點。

這是我自己想出來的。 這是詳細信息,以防萬一有人需要幫助。

對於主干,在主干/平台(在我的情況下)中添加 Jenkinsfile,對於分支,在分支/平台/文件夾中添加 Jenkinsfile。 對於分支,最好將 Jenkinsfile 保存在每個版本文件夾中,因為它有一些好處。 這種方法將為每個版本創建一個 Jenkins 作業。

在 Jenkins 作業(用於多分支管道)中,添加 Project Repository Base 的基本 URL。 就我而言,它是https://svn.domain.com/orgName/test 在包括分支字段中,在我的情況下添加主干/平台、分支/平台/*。 在 Jenkinsfile 中,要獲取分支名稱,請使用內置變量 $BRANCH_NAME。 這為主干提供了主干/平台,為分支提供了分支/平台/1.0.0.0(例如)。

唯一的挑戰是創建的作業名稱如 Trunk/Platform、Branches/Platform/1.0.0.0。 因此,工作區的創建類似於 Trunk%2FPlatform, Branches%2FPlatform%2F1.0.0.0,因為“/”使用 %2F 進行編碼。 在作業中使用時,請確保使用以下代碼適當修改作業名稱。

def cws = "${WORKSPACE_DIR}\\" + "${JOB_NAME}".replace("%2F","_").replace("/","\\")
echo "\u2600 workspace=${cws}"
def isTrunk = "${JOB_NAME}".toLowerCase().contains("trunk")
def version = ""
def verWithBldNum = ""
echo "\u2600 isTrunk=${isTrunk}"
if(!isTrunk)
 {
    version = "${JOB_NAME}".substring("${JOB_NAME}".lastIndexOf("%2F") + 3, "${JOB_NAME}".length())
    echo "\u2600 version=${version}"
    verWithBldNum = "${version}".substring(0, "${version}".lastIndexOf('.') + 1) + "${BUILD_NUMBER}"
    echo "\u2600 verWithBldNum=${verWithBldNum}"
 }
else
{
    echo "\u2600 Branch is Trunk"
}

暫無
暫無

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

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