如何在 Azure DevOps 上使您的包依賴項(xiàng)保持最新
作為開發(fā)人員,您是否經(jīng)??吹桨^期軟件包的存儲(chǔ)庫?
新軟件包更新通常包括新功能、性能改進(jìn)和安全修復(fù)。但是跟蹤項(xiàng)目中所有過時(shí)的依賴項(xiàng)可能非常無聊且耗時(shí),尤其是當(dāng)您有很多依賴項(xiàng)時(shí)。
所以為了做這種家務(wù),我嘗試了Dependabot。
Dependabot 的工作原理
Dependabot 遍歷項(xiàng)目的依賴文件。例如,它會(huì)搜索您的package.json
或pom.xml
文件并檢查任何過時(shí)或不安全的依賴項(xiàng)。如果找到,它會(huì)打開單獨(dú)的拉取請(qǐng)求以更新每個(gè)拉取請(qǐng)求。
該工具與 GitHub 原生集成。但最近,我不得不為在 Azure DevOps 中運(yùn)行的項(xiàng)目解決更新依賴項(xiàng)的問題。所以我決定找到一種解決方法,將 Dependabot 與 Azure Pipelines 集成。在這篇博文中,我將分享我的解決方案。
如果你去Azure DevOps Extension Marketplace并搜索“Dependabot”,你會(huì)發(fā)現(xiàn)一個(gè)由 Tingle Software提供的擴(kuò)展。使用此擴(kuò)展,我們可以輕松地將 Dependabot 與我們?cè)?Azure DevOps 中的存儲(chǔ)庫集成。
你可以在 Azure DevOps 的“組織設(shè)置”中檢查是否有此擴(kuò)展。如果沒有,請(qǐng)確保在繼續(xù)之前已安裝它。

如何創(chuàng)建 Azure 管道
YAML
現(xiàn)在讓我們從為您的 azure 管道創(chuàng)建一個(gè)新文件開始:
trigger: none
stages:
- stage: CheckDependencies
displayName: 'Check Dependencies'
jobs:
- job: Dependabot
displayName: 'Run Dependabot'
pool:
vmImage: 'ubuntu-latest'
steps:
- task: dependabot@1
displayName: 'Run Dependabot'
inputs:
packageManager: 'npm'
targetBranch: 'develop'
openPullRequestsLimit: 10
在任務(wù)參數(shù)中,我指定了三個(gè)參數(shù):
- packageManager:它指定檢查依賴項(xiàng)升級(jí)的包類型。例如:
nuget
,?maven
,?gradle
,?npm
, 等等。 - targetBranch:它是一個(gè)可選參數(shù),用于定義創(chuàng)建拉取請(qǐng)求時(shí)要定位的分支。如果未指定,Dependabot 將選擇
default
存儲(chǔ)庫的分支。 - openPullRequestsLimit:這又是一個(gè)可選參數(shù),用于指定任何時(shí)候打開的拉取請(qǐng)求的最大數(shù)量。默認(rèn)情況下,它一次打開 5 個(gè)拉取請(qǐng)求。
您可以通過擴(kuò)展支持的所有任務(wù)參數(shù)來調(diào)整您的實(shí)現(xiàn)?,F(xiàn)在只需使用新的 azure 管道配置此 YAML 文件,然后您就可以運(yùn)行它了。

下一步是授予存儲(chǔ)庫的Project Collection Build Service
訪問權(quán)限,以便 Dependabot 可以創(chuàng)建對(duì)項(xiàng)目存儲(chǔ)庫的拉取請(qǐng)求。
為此,請(qǐng)轉(zhuǎn)到您的項(xiàng)目設(shè)置。在這里,您單擊存儲(chǔ)庫并搜索已集成管道的存儲(chǔ)庫。
選擇后,單擊安全選項(xiàng)卡并搜索project collection build service。您必須允許以下訪問它:
- 貢獻(xiàn)
- 參與拉取請(qǐng)求
- 創(chuàng)建分支
- 創(chuàng)建標(biāo)簽
- 強(qiáng)制推送

有了這個(gè),您就可以完全準(zhǔn)備好運(yùn)行管道了。完成后,您將開始在存儲(chǔ)庫中接收包含更新包的拉取請(qǐng)求。

如何調(diào)度管道
到目前為止,您必須手動(dòng)觸發(fā)管道運(yùn)行。要使其自動(dòng)運(yùn)行,您可以為管道配置計(jì)劃。這將觸發(fā)您的管道根據(jù)計(jì)劃啟動(dòng)。
使用以下語法并將其添加到YAML
文件的最頂部:
schedules:
- cron: string
displayName: string
branches:
include: [ string ]
always: boolean
branches?'?include
參數(shù)指定調(diào)度適用于哪些分支。
該always
參數(shù)指定是“始終”運(yùn)行管道還是僅在自上次成功的計(jì)劃運(yùn)行后發(fā)生任何源代碼更改時(shí)才運(yùn)行。默認(rèn)值為假。
對(duì)于這種情況,您將其值設(shè)置為true,因?yàn)?Dependabot 更新獨(dú)立于任何代碼更改。
cron 計(jì)劃的時(shí)區(qū)是 UTC,cron 語法如下:
mm HH DD MM DW
__ Days of week
____ Months
______ Days
________ Hours
__________ Minutes
因此,如果您想在每周日世界標(biāo)準(zhǔn)時(shí)間 12 點(diǎn)運(yùn)行您的管道,您需要編寫 -?cron: "0 12 * * 0"
(更新 cron 以滿足您的需要)。
這是添加時(shí)間表后您的期末YAML
考試的樣子:
schedules:
- cron: "0 12 * * 0"
displayName: Weekly Dependency Updates
branches:
include:
- develop
always: true
trigger: none
stages:
- stage: CheckDependencies
displayName: 'Check Dependencies'
jobs:
- job: Dependabot
displayName: 'Run Dependabot'
pool:
vmImage: 'ubuntu-latest'
steps:
- task: dependabot@1
displayName: 'Run Dependabot'
inputs:
packageManager: 'npm'
targetBranch: 'develop'
openPullRequestsLimit: 10
此管道為您執(zhí)行以下操作:
它每周運(yùn)行一次(在本例中為 UTC 時(shí)間周日下午 12 點(diǎn)),并查找任何過時(shí)或不安全的依賴項(xiàng)。如果找到,它會(huì)打開拉取請(qǐng)求以單獨(dú)更新每個(gè)請(qǐng)求。
希望這將幫助您在 Azure DevOps 中使您的項(xiàng)目依賴項(xiàng)保持最新!
原文鏈接:https://www.freecodecamp.org/news/keep-package-dependencies-up-to-date-on-azure-devops/