這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)如何了解并使用Jenkins-X UpdateBot,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
10年積累的成都網(wǎng)站制作、成都做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先制作網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有萬源免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
Jenkins-X UpdateBot 是用于在項(xiàng)目源代碼中自動(dòng)更新依賴項(xiàng)版本的工具。假設(shè)您正在構(gòu)建兩個(gè)項(xiàng)目 A 和 B,B 使用 A 作為依賴項(xiàng)。A 的發(fā)布過程可以使用 UpdateBot 更新項(xiàng)目 B 的源,以使用 A 的新版本。在 pull request 中使用 UpdateBot,可以測(cè)試和檢查更改或自動(dòng)合并更改。
在 Jenkins-X platform 中,UpdateBot
由 Jenkinsfile 中的 UpdateBot
命令自動(dòng)顯示和調(diào)用。但是 UpdateBot 也可以在 Jenkins-X 之外使用,并且單獨(dú)運(yùn)行它可以幫助了解它可以做什么并測(cè)試版本替換。因此,讓我們用一個(gè)簡(jiǎn)單的測(cè)試項(xiàng)目來嘗試一下。
UpdateBot 可以為各種不同的文件類型設(shè)置版本-我們不會(huì)在這里對(duì)它們進(jìn)行全部測(cè)試,但是我們希望一個(gè)項(xiàng)目具有多個(gè)功能。因此,我們可以使用 JHipster sample app 示例應(yīng)用程序,因?yàn)樗哂?Maven pom.xml,npm package.json 和 Dockerfile。我們將對(duì)其運(yùn)行 UpdateBot,以查看 UpdateBot 可以替換這些資源文件中哪些內(nèi)容。
我們可以下載 UpdateBot jar file(v1.1.31),并為要更新的項(xiàng)目設(shè)置指向 GitHub 存儲(chǔ)庫的簡(jiǎn)單 UpdateBot 配置文件:
github: organisations: - name: ryandawsonuk repositories: - name: jhipster-sample-app useSinglePullRequest: true
useSinglePullRequest
標(biāo)記意味著將創(chuàng)建一個(gè)包含我們所做的所有更改的 PR。但是我們實(shí)際上并不會(huì)進(jìn)行任何更改-我們將在本地運(yùn)行它,這樣我們就不需要 GitHub 對(duì)存儲(chǔ)庫的寫權(quán)限。通過設(shè)置環(huán)境變量,我們可以在不推送到 GitHub 的情況下運(yùn)行:
export UPDATEBOT_DRY_RUN=true
然后,我們?nèi)匀恍枰褂?nbsp;UPDATEBOT_GITHUB_USER
和 UPDATEBOT_GITHUB_PASSWORD
(Token)的其他環(huán)境變量設(shè)置 git 憑據(jù)。
然后,我們可以運(yùn)行一些 UpdateBot
命令,并查看從 Git 克隆的項(xiàng)目中替換了什么。為此,我們可以在 GitHub 上使用一個(gè)包含預(yù)配置腳本的演示項(xiàng)目。
首先,腳本更新了 maven pom.xml,要求更改 Spring Boot 版本:
java -jar updatebot-1.1.31.jar push-version --kind maven org.springframework.boot:spring-boot-starter-data-jpa 2.1.0.RELEASE
然后檢查更改并輸出 git diff,我們可以看到以下結(jié)果:
因此版本被替換了。請(qǐng)注意,在依賴項(xiàng)引用的屬性中將其替換,在這種情況下,pom.xml 在屬性中具有此版本。UpdateBot 還可以用于直接在依賴項(xiàng)或父項(xiàng)或插件中進(jìn)行的更改。
對(duì) package.json 的更改是將 ngx-cookie 版本更改為 2.0.2:
java -jar updatebot-1.1.31.jar push-version --kind npm ngx-cookie 2.0.2
這正是我們所期望的:
對(duì) Dockerfile 的更改是將 openjdk 版本/標(biāo)簽更改為 jdk8:
java -jar updatebot-1.1.31.jar push-version --kind docker openjdk 8-jdk
這表明我們可以抓取出來。Dockerfile 實(shí)際上使用兩個(gè)不同的 openjdk 鏡像,每個(gè)鏡像都有一個(gè)不同的標(biāo)簽,并且此命令將替換這兩個(gè)鏡像:
我在運(yùn)行命令之前沒有考慮過這一點(diǎn),因此在這里我需要確定我真正要替換的內(nèi)容。
如果我們?cè)跊]有 dry-run 標(biāo)記的情況下運(yùn)行,則將創(chuàng)建一個(gè)真實(shí)的 pull request,前提是我們有權(quán)創(chuàng)建它。
UpdateBot 具有自動(dòng)合并 pull request 的功能,例如通過輪詢 GitHub 來檢查 PR 狀態(tài)并合并是否一切正常(命令為updatebot update-loop
)。但是,GitHub 確實(shí)對(duì)這些請(qǐng)求進(jìn)行了速率限制,因此 UpdateBot 也可以將其批準(zhǔn)添加到 PR 中,以使其通過與 GitHub 直接集成的工具進(jìn)行合并。當(dāng)使用諸如 prow 或 mergify 之類的工具進(jìn)行自動(dòng)合并時(shí),這可能會(huì)很好地工作。
UpdateBot 可以嘗試僅通過使用 updatebot push
而不是帶有顯式參數(shù)的 updatebot push-version
來推斷要作為提交觸發(fā)管道的一部分進(jìn)行的更改。但是,通常管道作業(yè)將有權(quán)訪問要推送的版本,而 push version
使更改更明確且更易于跟蹤。
本示例使用單個(gè) UpdateBot YAML 文件將一組依賴項(xiàng)/版本推送到一個(gè)下游項(xiàng)目。YAML 文件還支持將一組更改推送到多個(gè)下游存儲(chǔ)庫。UpdateBot 推送其能夠進(jìn)行的所有替換,以便每個(gè)下游存儲(chǔ)庫都獲得適用于它的所有更改。
例如,在構(gòu)建沒有快照的 Maven 項(xiàng)目時(shí),UpdateBot 可用于在 CI/CD 設(shè)置中傳播版本。但是,正如我們已經(jīng)看到的那樣,它不僅限于 Maven,而且可以對(duì)產(chǎn)生各種不同類型制品的項(xiàng)目進(jìn)行一系列更改。
上述就是小編為大家分享的如何了解并使用Jenkins-X UpdateBot了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。