如何在 Azure DevOps 上使您的包依賴項保持最新
作為開發人員,您是否經常看到包含過期軟件包的存儲庫?
新軟件包更新通常包括新功能、性能改進和安全修復。但是跟蹤項目中所有過時的依賴項可能非常無聊且耗時,尤其是當您有很多依賴項時。
所以為了做這種家務,我嘗試了Dependabot。
Dependabot 的工作原理
Dependabot 遍歷項目的依賴文件。例如,它會搜索您的package.json
或pom.xml
文件并檢查任何過時或不安全的依賴項。如果找到,它會打開單獨的拉取請求以更新每個拉取請求。
該工具與 GitHub 原生集成。但最近,我不得不為在 Azure DevOps 中運行的項目解決更新依賴項的問題。所以我決定找到一種解決方法,將 Dependabot 與 Azure Pipelines 集成。在這篇博文中,我將分享我的解決方案。
如果你去Azure DevOps Extension Marketplace并搜索“Dependabot”,你會發現一個由 Tingle Software提供的擴展。使用此擴展,我們可以輕松地將 Dependabot 與我們在 Azure DevOps 中的存儲庫集成。
你可以在 Azure DevOps 的“組織設置”中檢查是否有此擴展。如果沒有,請確保在繼續之前已安裝它。
![1-2](http://haohuigou.com/wp-content/themes/module/themer/assets/images/lazy.png)
如何創建 Azure 管道
YAML
現在讓我們從為您的 azure 管道創建一個新文件開始:
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
在任務參數中,我指定了三個參數:
- packageManager:它指定檢查依賴項升級的包類型。例如:
nuget
,?maven
,?gradle
,?npm
, 等等。 - targetBranch:它是一個可選參數,用于定義創建拉取請求時要定位的分支。如果未指定,Dependabot 將選擇
default
存儲庫的分支。 - openPullRequestsLimit:這又是一個可選參數,用于指定任何時候打開的拉取請求的最大數量。默認情況下,它一次打開 5 個拉取請求。
您可以通過擴展支持的所有任務參數來調整您的實現。現在只需使用新的 azure 管道配置此 YAML 文件,然后您就可以運行它了。
![3-2](http://haohuigou.com/wp-content/themes/module/themer/assets/images/lazy.png)
下一步是授予存儲庫的Project Collection Build Service
訪問權限,以便 Dependabot 可以創建對項目存儲庫的拉取請求。
為此,請轉到您的項目設置。在這里,您單擊存儲庫并搜索已集成管道的存儲庫。
選擇后,單擊安全選項卡并搜索project collection build service。您必須允許以下訪問它:
- 貢獻
- 參與拉取請求
- 創建分支
- 創建標簽
- 強制推送
![2-1](http://haohuigou.com/wp-content/themes/module/themer/assets/images/lazy.png)
有了這個,您就可以完全準備好運行管道了。完成后,您將開始在存儲庫中接收包含更新包的拉取請求。
![5-3](http://haohuigou.com/wp-content/themes/module/themer/assets/images/lazy.png)
如何調度管道
到目前為止,您必須手動觸發管道運行。要使其自動運行,您可以為管道配置計劃。這將觸發您的管道根據計劃啟動。
使用以下語法并將其添加到YAML
文件的最頂部:
schedules:
- cron: string
displayName: string
branches:
include: [ string ]
always: boolean
branches?'?include
參數指定調度適用于哪些分支。
該always
參數指定是“始終”運行管道還是僅在自上次成功的計劃運行后發生任何源代碼更改時才運行。默認值為假。
對于這種情況,您將其值設置為true,因為 Dependabot 更新獨立于任何代碼更改。
cron 計劃的時區是 UTC,cron 語法如下:
mm HH DD MM DW
__ Days of week
____ Months
______ Days
________ Hours
__________ Minutes
因此,如果您想在每周日世界標準時間 12 點運行您的管道,您需要編寫 -?cron: "0 12 * * 0"
(更新 cron 以滿足您的需要)。
這是添加時間表后您的期末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
此管道為您執行以下操作:
它每周運行一次(在本例中為 UTC 時間周日下午 12 點),并查找任何過時或不安全的依賴項。如果找到,它會打開拉取請求以單獨更新每個請求。
希望這將幫助您在 Azure DevOps 中使您的項目依賴項保持最新!
原文鏈接:https://www.freecodecamp.org/news/keep-package-dependencies-up-to-date-on-azure-devops/