You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Azure YAML Pipeline用Gradle连接Azure Artifacts并分Feed发布构件

解决方案:Azure YAML Pipeline + Gradle 对接 Azure Artifacts

1. Pipeline YAML 配置(核心认证与任务)

无需settings.xml,通过MavenAuthenticate任务自动注入Azure Artifacts认证信息到Gradle运行环境:

trigger:
- main

pool:
  vmImage: 'ubuntu-latest' # 可根据项目需求替换为windows-latest

steps:
# 认证两个目标Feed,自动生成Gradle可用的认证凭据
- task: MavenAuthenticate@0
  inputs:
    artifactsFeeds: 'GradleBinaries,CustomArtifacts' # 填写你的Feed名称,组织级Feed需加前缀如"your-org/GradleBinaries"

# 执行Gradle构建/发布任务
- task: Gradle@2
  inputs:
    workingDirectory: ''
    gradleWrapperFile: 'gradlew'
    gradleOptions: '-Xmx3072m'
    tasks: 'build publish' # 根据需求调整任务,publish用于发布SNAPSHOT
    publishJUnitResults: true
    testResultsFiles: '**/TEST-*.xml'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: '11' # 匹配项目JDK版本
    jdkArchitectureOption: 'x64'

2. build.gradle 配置(依赖拉取+SNAPSHOT发布)

依赖拉取与缓存配置

让Gradle优先从GradleBinaries拉取依赖,缺失时从Maven中央获取,Azure Artifacts会自动缓存中央仓库依赖到GradleBinaries:

repositories {
    // 优先从GradleBinaries Feed拉取
    maven {
        url 'https://pkgs.dev.azure.com/[你的组织名]/[你的项目名]/_packaging/GradleBinaries/maven/v1'
        name 'GradleBinaries'
        credentials {
            // 读取Pipeline注入的系统AccessToken
            username = System.getenv("SYSTEM_ACCESSTOKEN") ?: project.findProperty("azureArtifactsUsername")
            password = System.getenv("SYSTEM_ACCESSTOKEN") ?: project.findProperty("azureArtifactsPassword")
        }
    }
    // 中央仓库作为上游源,缺失依赖时从这里获取
    mavenCentral()
}

SNAPSHOT 发布配置

仅将SNAPSHOT构件发布到CustomArtifacts Feed:

plugins {
    id 'java'
    id 'maven-publish' // 需引入发布插件
}

group = 'com.your-group-id' // 替换为你的项目GroupID
version = '1.0.0-SNAPSHOT' // 确保版本带SNAPSHOT标识

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
        }
    }
    repositories {
        maven {
            url 'https://pkgs.dev.azure.com/[你的组织名]/[你的项目名]/_packaging/CustomArtifacts/maven/v1'
            name 'CustomArtifacts'
            credentials {
                username = System.getenv("SYSTEM_ACCESSTOKEN") ?: project.findProperty("azureArtifactsUsername")
                password = System.getenv("SYSTEM_ACCESSTOKEN") ?: project.findProperty("azureArtifactsPassword")
            }
            // 仅发布SNAPSHOT版本到该Feed
            content {
                snapshotsOnly()
            }
        }
    }
}

3. Azure Artifacts 上游源配置(关键步骤)

要让GradleBinaries自动缓存Maven中央仓库依赖,需为其添加上游源:

  • 登录Azure DevOps,进入GradleBinaries Feed
  • 点击右上角齿轮图标进入设置,选择「上游源」
  • 添加上游源,选择「Maven Central」并保存

4. 权限排查

确保Pipeline服务账号(Project Collection Build Service ([组织名]))拥有:

  • GradleBinaries Feed的读取权限
  • CustomArtifacts Feed的写入权限
    可在Feed的「权限」设置中添加账号并分配对应权限

内容的提问来源于stack exchange,提问作者Mohd. Danish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 05:07:18