在 Gradle 建置前,先用這個任務與 Azure Artifacts feeds 進行驗證,以進行相依性還原和插件解決。 該任務會安裝並設定 Gradle 憑證提供者的 CI 版本,然後透過工作負載身份聯盟(WIF)服務連線或已提供的工作建置存取權杖進行驗證。
Syntax
# Gradle Authenticate v0
# Authenticate Gradle builds with Azure Artifacts feeds using Workload Identity Federation or an access token.
- task: GradleAuthenticate@0
inputs:
#buildFiles: # string. Build files.
#repositoryUrl: # string. Repository URL(s).
#adoServiceConnection: # string. Service connection.
#pluginToolVersion: # string. Plugin tool version.
#gradleUserHome: # string. Gradle user home.
Inputs
buildFiles
-
建置檔案
string。
提供一個換行分隔的 Gradle 檔案清單,讓任務掃描 Azure Artifacts feed URL 。 包含每個定義建置倉庫的 Gradle 檔案,例如 settings.gradle、 settings.gradle.kts、 build.gradle或 build.gradle.kts。 如果你的建置在 中使用 Gradle plugins {} 區塊 settings.gradle,則包含該檔案,讓任務能自動偵測外掛版本。
repositoryUrl
-
儲存庫網址
string。
提供一份以換行分隔的 Azure Artifacts 倉庫 URL 清單來認證。 當你指定這個輸入時,任務會使用提供的網址,而不是掃描建置檔案來發現儲存庫的網址。 如果你也提供 Build 檔案,任務仍可用它們來偵測插件版本。
adoServiceConnection
-
服役連結
string。
這是一個使用 Workload Identity Federation(WIF)來進行認證的 Azure DevOps 服務連線名稱。 若將此輸入留空,任務會退回基於憑證的認證,使用ARTIFACTS_GRADLE_AUTH_ACCESS_TOKENSYSTEM_ACCESSTOKEN設定時或其他方式。
pluginToolVersion
-
外掛工具版本
string。
覆蓋任務所安裝的 Gradle 認證外掛版本。 預設情況下,任務使用最新的相容版本。 只有在需要特定插件版本時才使用這個輸入。
gradleUserHome
-
Gradle 使用者首頁
string。
覆寫 Gradle 使用者的首頁目錄。 預設情況下,任務會在設定時使用,或~/.gradle是否使用GRADLE_USER_HOME。 當你的建置使用自訂的 Gradle 使用者主基地位置時,設定這個輸入。
工作控制選項
除了工作輸入之外,所有工作都有控制選項。 如需詳細資訊,請參閱 控制項選項和一般工作屬性。
輸出變數
None.
備註
請在同一工作中執行此任務,且在需要存取 Azure Artifacts 的 Gradle 指令之前。 該任務會為後續 Gradle 步驟準備所需的認證設定。
此任務支援兩種認證模式:
- 如果你提供服務連線,任務會為每個發現的 Azure Artifacts feed 配置 Workload Identity Federation。
- 如果你沒有提供 服務連線,任務會使用環境中的建置存取權杖。 它首先檢查 ;
ARTIFACTS_GRADLE_AUTH_ACCESS_TOKEN如果該變數未被設定,則使用SYSTEM_ACCESSTOKEN。
使用 Build 檔案或 Repository URL,告訴任務該在哪裡尋找 Azure Artifacts feeds。 如果掃描沒有找到 Azure Artifacts URL,任務會成功完成,但不會設定任何串流的認證。
飼料發現的運作方式
如果你提供 儲存庫 URL,任務會用這些 URL 進行認證,不會掃描建置檔案來發現其他儲存庫 URL。
如果你同時提供 Repository URL 和 Build 檔案,執行過程中只會設定指定的 repository URL,即使建置檔包含額外的 Azure Artifacts 倉庫。
如果你也提供 Build 檔案,任務仍會用它們來決定憑證提供者外掛的版本。
如果你沒有提供儲存庫 URL,該任務會掃描建置檔案中列出的 Azure Artifacts feed URL,例如
https://pkgs.dev.azure.com/...。如果你將建置檔案留空且未提供儲存庫網址,任務會自動在工作目錄中搜尋常見的 Gradle 檔案:
settings.gradlesettings.gradle.ktsbuild.gradlebuild.gradle.kts
插件版本解析度的運作方式
該任務決定建置時應使用哪個版本的 CI Gradle 憑證提供者。 預設情況下,任務使用最新的相容版本。 任務依序決定版本:
- Gradle 檔案中宣告的外掛版本。
- 由 插件工具版本中指定的值。
- 從已解析的憑證提供者套件中偵測到的版本。
- 備案。
如果你的倉庫有搭配 Gradle plugins {} 區塊,settings.gradle請將該檔案包含在 Build 檔案中,讓任務能正確發現插件版本。
任務會改變什麼
目前的工作任務:
- 為 CI Gradle 憑證提供者設置臨時本地 Maven 風格的佈局
- 為發現的訊號撰寫認證設定檔
- 在 Gradle 使用者主目錄中撰寫暫存的 Gradle 初始化腳本
- 設定環境變數,讓初始化腳本與憑證提供者在 Gradle 建置時使用。
任務也會在作業後註冊清理,讓這些暫存檔案在工作結束後被移除。
一個工作中能有多個召喚
同一份工作可以 GradleAuthenticate@0 跑不只一次。 當不同 Gradle 建置需要不同供電組或服務連接時,這很有用。 後續的調用會加入現有的臨時配置,並在需要時替換同一資訊流 URL 的條目。
許可
這個任務會設定認證,但不會授予訂閱權限。 若管線存取其他專案或組織的訊號,請確保管線識別碼或服務連線擁有所需存取權限。 更多資訊請參閱 Azure Pipelines 中的套件權限。
Examples
透過使用 Workload Identity Federation 驗證從 Gradle 檔案中發現的資訊流
在此範例中,任務掃描列出的 Gradle 檔案以尋找 Azure Artifacts 訂閱源 URL,偵測憑證提供者外掛版本,settings.gradle並透過 Azure DevOps 服務連線設定 WIF 認證。
steps:
- task: GradleAuthenticate@0
displayName: 'Authenticate Azure Artifacts for Gradle'
inputs:
buildFiles: |
settings.gradle
build.gradle
adoServiceConnection: 'Gradle-WIF-Connection'
- task: Gradle@4
displayName: 'Run Gradle build'
inputs:
gradleWrapperFile: 'gradlew'
tasks: 'build'
當你的倉庫已經包含 Gradle 設定中的 Azure Artifacts feed URL,且你希望任務能盡可能推斷時,請使用這個模式。
使用工作存取權杖來驗證明確的訂閱源 URL
在這個例子中,任務在不掃描任何 Gradle 檔案的情況下,驗證了特定的 Azure Artifacts 資料。 當儲存庫 URL 事先已知,或相關資訊源未在任務可檢查的檔案中宣告時,這非常有用。
steps:
- task: GradleAuthenticate@0
displayName: 'Authenticate explicit Azure Artifacts feed'
inputs:
repositoryUrl: |
'https://pkgs.dev.azure.com/contoso/Fabrikam/_packaging/SharedFeed/maven/v1'
pluginToolVersion: '1.0.0'
- task: Gradle@4
displayName: 'Publish package'
inputs:
gradleWrapperFile: 'gradlew'
tasks: 'publish'
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
當憑證驗證足夠且你想直接鎖定一個或多個已知的 Azure Artifacts 來源 URL 時,請使用此模式。
要求
| Requirement | 描述 |
|---|---|
| 管線類型 | YAML、傳統組建、傳統版本 |
| 在其中執行 | Agent、DeploymentGroup |
| 要求 | 沒有 |
| 能力 | 此工作不符合作業中後續工作的任何需求。 |
| 命令限制 | Any |
| Settable 變數 | Any |
| 代理程式版本 | 2.144.0 或更新 |
| 任務類別 | Package |