Как войти в Azure DevOps Artifact feed без токена - PullRequest
0 голосов
/ 27 марта 2020

У меня есть Azure фид артефактов DevOps, который мы настроили. В том же проекте, что и артефакт, я создал сборку Gradle и, используя токен в качестве пароля, могу получить доступ к каналу артефактов, чтобы получить доступ к артефактам. Кто-то из моего отдела считает, что может быть способ получить доступ к репозиторию артефактов без токена. Я пытался использовать System.AccessToken, но он не работал. Возможно, есть другой способ установить артефакт?

Вот мой файл gradle.build:

    credentials { 
        username "Testuser" 
        DevOps Services_ENV_ACCESS_TOKEN") : vstsMavenAccessToken 
        //password "<using raw token works>"
        //password System.getenv("SYSTEM_ACCESSTOKEN")
        password System.getenv("TOKEN")
    } 

Вот мой azure -pipelines.yml, где я определяю переменные Я использую в файле build.gradle. токен - это переменная окружения, которую я установил для моего фактического токена (который работает). Если я поменяю его и использую System.AccessToken, он не будет работать:

steps:
- task: Gradle@2
  inputs:
    workingDirectory: ''
    gradleWrapperFile: 'gradlew'
    gradleOptions: '-Xmx3072m'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: '1.11'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: true
    testResultsFiles: '**/TEST-*.xml'
    tasks: 'build'
  env:
    SYSTEM_ACCESSTOKEN: $(System.AccessToken)
    TOKEN: $(token)

Будь здоров и спасибо за любую помощь или понимание!

1 Ответ

1 голос
/ 30 марта 2020

Как войти в систему Azure DevOps Artifact feed без токена

Так же, как вы пытались, использование $(System.AccessToken) должно работать нормально. Просто поделитесь моими шагами и некоторыми ключевыми моментами, на которые вам следует обратить внимание.

Конфигурация :

Вот часть моего build.gradle файла, и я применил $(System.AccessToken) для публикации sh пакета в моем фиде:

publishing {
    publications {
        myPublication(MavenPublication) {
            groupId 'com.microsoft.core'
            artifactId 'mock='
            version "${version}"
            artifact "build/libs/mock-${version}.jar"
        }
    }
    // Repositories *to* which Gradle can publish artifacts
    repositories {
        maven {
            url 'https://pkgs.dev.azure.com/{org name}/_packaging/{project name}/{feed name}/v1'
            credentials {
               username "Azure DevOps Services"  
               //password System.getenv("AZURE_ARTIFACTS_ENV_ACCESS_TOKEN") != null ? System.getenv("AZURE_ARTIFACTS_ENV_ACCESS_TOKEN") : vstsMavenAccessToken
               password System.getenv("SYSTEM_ACCESSTOKEN")
            }
        }
    }
}

Часть YAML определения:

- task: Gradle@2
  displayName: Gradle Publish
  inputs:
    workingDirectory: ''
    gradleWrapperFile: 'gradlew'
    gradleOptions: '-Xmx3072m'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: '1.8'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: true
    tasks: 'publish'
  condition: always()
  env:
    SYSTEM_ACCESSTOKEN: $(System.AccessToken)

Вы можете увидеть мой журнал publi sh и он опубликован успешно:

enter image description here


Кроме конфигурации скрипта выше, вы также конфигурируете настройку фида. Поскольку конвейер фактически использует учетную запись службы сбора / проекта для доступа и выполнения действий в ленте.

Пожалуйста, go настройку ленты, найдите и добавьте Project Collection Build Service ({org name}) и {Porject name} Build Service ({org name}) в эту настройку разрешений. И назначьте им Владелец роль.

Теперь перестройте свой конвейер, и вы увидите, что он может успешно получить доступ к каналу.

...