自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用Jenkins Git參數(shù)實(shí)現(xiàn)分支標(biāo)簽動(dòng)態(tài)選擇

開發(fā) 項(xiàng)目管理
創(chuàng)建一個(gè)字符參數(shù)設(shè)置一個(gè)默認(rèn)值,然后 交給開發(fā)人員自己填寫。這樣的確方便了配置管理人員,給開發(fā)人員增加了負(fù)擔(dān),手動(dòng)輸入避免不了帶來了錯(cuò)誤發(fā)生的可能。

1.1 為什么要使用Git參數(shù)?

我們?yōu)槭裁匆褂? git參數(shù)呢?每個(gè)項(xiàng)目代碼庫都會(huì)有不同的分支,(如果你沒有用多分支流水線的情況下)對(duì)于普通的流水線項(xiàng)目我們可以 讓一條流水線來支持多個(gè)分支的發(fā)布,其實(shí)有時(shí)候你會(huì)發(fā)現(xiàn)每個(gè)分支的集成步驟都是差不多的。如果出現(xiàn)差異步驟我們也可以在jenkinsfile中根據(jù)不同的分支執(zhí)行不同的stage。

如何解決固定分支問題?起初我們的流水線項(xiàng)目配置分支可能是采用的選項(xiàng)參數(shù)。創(chuàng)建一個(gè)選項(xiàng)參數(shù)然后把項(xiàng)目經(jīng)常用到的分支給更新上去,最后開發(fā)人員在發(fā)布的時(shí)候來選擇對(duì)應(yīng)的分支??此平鉀Q了固定分支問題,但是后期維護(hù)起來非常困難,需要不斷的更改參數(shù)值。

創(chuàng)建一個(gè)字符參數(shù)設(shè)置一個(gè)默認(rèn)值,然后 交給開發(fā)人員自己填寫。這樣的確方便了配置管理人員,給開發(fā)人員增加了負(fù)擔(dān),手動(dòng)輸入避免不了帶來了錯(cuò)誤發(fā)生的可能。

我們來通過下面的內(nèi)容,掌握如何使用 git參數(shù)實(shí)現(xiàn)動(dòng)態(tài)分支構(gòu)建呢?

1.2 在freestyle項(xiàng)目中使用

當(dāng)你的項(xiàng)目還沒有使用pipeline,可以參考以下的配置來使用git參數(shù)。當(dāng)然如果你在調(diào)試pipeline項(xiàng)目的時(shí)候使用git參數(shù)經(jīng)常出現(xiàn)問題的話,也可以看下在freestyle項(xiàng)目中如何使用,了解git參數(shù)的工作原理。

我們?cè)陧?xiàng)目的配置中,勾選參數(shù)化構(gòu)建。然后添加git參數(shù)。選擇變量名稱和參數(shù)類型。

然后鼠標(biāo)滾動(dòng)到下面,填寫項(xiàng)目代碼庫的信息

最后保存配置,回到作業(yè)首頁,我們點(diǎn)擊項(xiàng)目的參數(shù)化構(gòu)建。此時(shí)你會(huì)看到項(xiàng)目代碼庫對(duì)應(yīng)的所有分支已經(jīng)出現(xiàn)了,我們可以選擇分支并構(gòu)建了。

1.3 在Pipeline項(xiàng)目中使用

1.3.1 普通的Pipeline項(xiàng)目

這里把普通的pipeline項(xiàng)目定義為 未將Jenkinsfile內(nèi)容保存在版本控制系統(tǒng)中,而是存儲(chǔ)在該JOB中。

首先我們添加一個(gè)srcUrl參數(shù)定義項(xiàng)目代碼庫的地址,便于后期在pipeline中調(diào)用。

然后添加git參數(shù)branchName,定義為分支類型。

編寫Jenkinsfile


//pipeline
pipeline{
agent { node { label "build"}}


stages{

stage("CheckOut"){
steps{
script{

println("${branchName}")

checkout([$class: 'GitSCM', branches: [[name: "${branchName}"]],
doGenerateSubmoduleConfigurations: false,
extensions: [],
submoduleCfg: [],
userRemoteConfigs: [[credentialsId: 'gitlab-admin-user',
url: "${srcUrl}"]]])

}
}
}
}
}

然后保存配置,回到作業(yè)首頁。構(gòu)建一次,然后就能夠獲取到項(xiàng)目代碼庫的分支了。

對(duì)于將jenkinsfile保存在作業(yè)中,這種方式有利有弊,好處是可以方便我們進(jìn)行代碼調(diào)試,壞處是不利于統(tǒng)一管理。大家酌情使用。

1.3.2 流行的Pipeline項(xiàng)目

這里流行的Pipeline項(xiàng)目我們理解為 此job使用的jenkinsfile文件存儲(chǔ)在git版本控制系統(tǒng)中。

首先我們創(chuàng)建一個(gè)測(cè)試jenkinsfile,保存在git項(xiàng)目中,命名為git.jenkinsfile。此文件內(nèi)容與上面那種方式是一樣的,只不過將jenkinsfile納入了版本控制。



//pipeline
pipeline{
agent { node { label "build"}}


stages{

stage("CheckOut"){
steps{
script{

println("${branchName}")

checkout([$class: 'GitSCM', branches: [[name: "${branchName}"]],
doGenerateSubmoduleConfigurations: false,
extensions: [],
submoduleCfg: [],
userRemoteConfigs: [[credentialsId: 'gitlab-admin-user',
url: "${srcUrl}"]]])

}
}
}
}
}

然后我們來創(chuàng)建一個(gè)新的流水線項(xiàng)目。注意情況我們 現(xiàn)在用到了兩個(gè)倉庫,一個(gè)是Jenkinsfile倉庫,另一個(gè)是 項(xiàng)目代碼倉庫。創(chuàng)建一個(gè)參數(shù)srcUrl用于存儲(chǔ)項(xiàng)目 代碼倉庫的URL。

默認(rèn)git參數(shù)會(huì)識(shí)別到Jenkinsfile的倉庫,所以我們需要在git參數(shù)的高級(jí)設(shè)置中指定我們要使用的倉庫地址。80%錯(cuò)誤因?yàn)闆]有指定倉庫導(dǎo)致獲取分支錯(cuò)誤等問題。

填寫Jenkinsfile倉庫信息。

最后我們來構(gòu)建一次就能夠獲取到項(xiàng)目代碼倉庫的分支信息了。這里經(jīng)常出現(xiàn)獲取 分支的問題,請(qǐng)仔細(xì)參考上面的步驟一定要在git參數(shù)中指定好我們要用的倉庫,否則會(huì)出現(xiàn)分支獲取失敗等問題。

1.3.3 使用Pipeline as Code

我們將參數(shù)信息全部放到Jenkinsfile中存儲(chǔ)。此時(shí)生成的代碼就不區(qū)分在作業(yè)中保存還是在版本控制系統(tǒng)中保存了。不過還是建議大家把jenkinsfile納入版本控制系統(tǒng)中保存。

我們?nèi)绾紊蒍enkinsfile代碼?很方便的工具,我們導(dǎo)航到 流水線語法-> Declarative Directive Generator 。

最后完整的Jenkinsfile如下所示:



//pipeline
pipeline{
agent { node { label "build"}}

parameters {
string defaultValue: 'http://192.168.1.200:30088/idevops/idevops-maven-service.git',
description: '',
name: 'srcUrl',
trim: false

gitParameter branch: '',
branchFilter: '.*',
defaultValue: 'origin/master',
description: '',
name: 'branchName',
quickFilterEnabled: false,
selectedValue: 'NONE',
sortMode: 'NONE',
tagFilter: '*',
type: 'PT_BRANCH',
useRepository: 'http://192.168.1.200:30088/idevops/idevops-maven-service.git'

}
stages{

stage("CheckOut"){
steps{
script{

println("${branchName}")

checkout([$class: 'GitSCM', branches: [[name: "${branchName}"]],
doGenerateSubmoduleConfigurations: false,
extensions: [],
submoduleCfg: [],
userRemoteConfigs: [[credentialsId: 'gitlab-admin-user',
url: "${srcUrl}"]]])

}
}
}
}
}

同樣的配置過程,我們構(gòu)建 一次之后就能夠 正常獲取到項(xiàng)目代碼庫的分支信息了。

1.4 總結(jié)

你是不是在使用git參數(shù)時(shí)也遇到了相同的問題呢?此文章能夠 幫助到大家避免問題的出現(xiàn)。這個(gè)git參數(shù)還是有些不方便的。隨著內(nèi)部devops平臺(tái)的功能擴(kuò)展,目前發(fā)布都是通過 devops平臺(tái)中來完成參數(shù)的選擇,最后生成一個(gè)Jenkins作業(yè)來運(yùn)行。這種情況下選擇分支和標(biāo)簽就放在了外圍的devops平臺(tái)中了,這樣jenkins的參數(shù)使用什么類型都無所謂了。

責(zé)任編輯:姜華 來源: DevOps云學(xué)堂
相關(guān)推薦

2021-03-29 08:03:13

Git技巧分支

2020-07-09 08:00:25

Git分支模式

2018-06-08 09:27:08

GitLinux開源

2014-08-08 10:20:23

Git版本管理系統(tǒng)

2022-05-25 16:51:41

Git 分支重命名開發(fā)者

2024-04-03 09:03:05

項(xiàng)目分支管理

2023-12-01 11:05:29

Git 分支

2023-10-09 08:39:33

Git Flow分支管理模型

2022-11-07 08:01:18

Git分支管理

2022-10-26 09:22:19

git命令Linux

2012-03-13 14:33:55

JavaJenkinsgit

2012-03-20 10:31:11

GitMavenJava

2021-03-28 17:21:15

Git分支策略

2021-03-18 14:47:42

Jenkins git submodu代碼

2020-05-28 10:45:31

Git分支合并

2022-08-11 15:45:13

Git

2020-12-29 09:27:40

Jenkins分支管道CI

2011-03-30 10:50:55

GitLinux 版本控制

2024-07-22 14:14:01

2020-09-06 09:55:13

git分支命令
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)