GradleAuthenticate@0 - Gradle Authenticate v0-taak

Gebruik deze taak vóór je Gradle-build om te authenticeren met Azure-artefacten-feeds voor afhankelijkheidsherstel en plugin-resolutie. De taak installeert en configureert een CI-versie van de Gradle-credentialprovider voor de taak, waarna deze authenticeert door gebruik te maken van een Workload Identity Federation (WIF) serviceverbinding of het bouwtoegangstoken dat al beschikbaar is voor de taak.

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 - Buildbestanden
string.

Bied een met een nieuwe regel gescheiden lijst van Gradle-bestanden aan voor de taak die gescand moet worden naar URL's van de Azure-artefacten-feed. Voeg elk Gradle-bestand toe dat repositories voor de build definieert, zoals settings.gradle, , , build.gradle, of build.gradle.ktssettings.gradle.kts. Als je build het Gradle-blok plugins {} gebruikt in settings.gradle, voeg dat bestand toe zodat de taak de pluginversie automatisch kan detecteren.


repositoryUrl - Repository-URL(s)
string.

Bied een met een nieuwe regel gescheiden lijst van URL's van Azure-artefacten repository om te authenticeren. Wanneer je deze invoer specificeert, gebruikt de taak de verstrekte URL's in plaats van buildbestanden te scannen om repository-URL's te vinden. Als je ook Build-bestanden levert, kan de taak ze nog steeds gebruiken voor het detecteren van pluginversies.


adoServiceConnection - Dienstverbinding
string.

De naam van een Azure DevOps Service Connection die Workload Identity Federation (WIF) gebruikt voor authenticatie. Als je deze invoer leeg laat, valt de taak terug op tokengebaseerde authenticatie door te gebruiken ARTIFACTS_GRADLE_AUTH_ACCESS_TOKEN wanneer deze is ingesteld, of SYSTEM_ACCESSTOKEN anderszins.


pluginToolVersion - Plugin-toolversie
string.

Overschrijf de versie van de Gradle-authenticatie-plugin die door de taak is geïnstalleerd. Standaard gebruikt de taak de nieuwste compatibele versie. Gebruik deze invoer alleen als je een specifieke pluginversie nodig hebt.


gradleUserHome - Gradle gebruikershuis
string.

Overschrijf de Gradle-gebruikers-homemap. Standaard gebruikt GRADLE_USER_HOME de taak wanneer deze is ingesteld, of ~/.gradle anderszins. Stel deze invoer in wanneer je build een aangepaste Gradle-gebruikerslocatie gebruikt.


Opties voor taakbeheer

Alle taken hebben besturingsopties naast hun taakinvoer. Zie Opties en algemene taakeigenschappenvoor meer informatie.

Uitvoervariabelen

None.

Opmerkingen

Voer deze taak uit in dezelfde taak en vóór het Gradle-commando dat toegang nodig heeft tot Azure-artefacten. De taak bereidt de authenticatieconfiguratie voor die nodig is voor de volgende Gradle-stappen in de taak.

De taak ondersteunt twee authenticatiemodi:

  • Als je Serviceverbinding aanbiedt, configureert de taak Workload Identity Federation voor elke ontdekte Azure-artefacten-feed.
  • Als je geen Serviceverbinding biedt, gebruikt de taak het build-toegangstoken uit de omgeving. Het controleert eerst op ARTIFACTS_GRADLE_AUTH_ACCESS_TOKEN; als die variabele niet is ingesteld, gebruikt SYSTEM_ACCESSTOKENhet .

Gebruik Build-bestanden of Repository-URL(s) om de taak te vertellen waar ze Azure-artefacten-feeds moeten zoeken. Als scannen geen Azure-artefacten URL's vindt, wordt de taak succesvol voltooid maar wordt authenticatie niet geconfigureerd voor feeds.

Hoe feedontdekking werkt

  • Als je Repository-URL(s) opgeeft, gebruikt de taak die URL's voor authenticatie en scant het geen bouwbestanden om andere repository-URL's te vinden.

  • Als je zowel Repository-URL(s) als Build-bestanden oplevert, worden tijdens die run alleen de opgegeven repository-URL's geconfigureerd, zelfs als de buildbestanden extra Azure-artefacten-repositories bevatten.

  • Als je ook Build-bestanden aanlevert, gebruikt de taak deze nog steeds om de versie van de credential provider-plugin te bepalen.

  • Als je geen Repository-URL(s) verstrekt, scant de taak de bestanden die in Build-bestanden staan op Azure-artefacten-feed-URL's, zoals https://pkgs.dev.azure.com/....

  • Als je Build-bestanden leeg laat staan en geen Repository-URL(s) opgeeft, zoekt de taak automatisch naar veelvoorkomende Gradle-bestanden in de werkmap:

    • settings.gradle
    • settings.gradle.kts
    • build.gradle
    • build.gradle.kts

Hoe pluginversieresolutie werkt

De taak bepaalt welke versie van de CI Gradle-credentialprovider gebruikt moet worden voor de build. Standaard gebruikt de taak de nieuwste compatibele versie. De taak bepaalt de versie in de volgende volgorde:

  1. Een pluginversie die in de Gradle-bestanden is gedeclareerd.
  2. De waarde die in de plugin-toolversie is gespecificeerd.
  3. Een versie die werd gedetecteerd in het oplossing van de provider-pakketten.
  4. Een vangnet.

Als je repository het Gradle-blok plugins {} gebruiktsettings.gradle, neem dat bestand dan op in Build-bestanden zodat de taak de pluginversie correct kan vinden.

Wat de taak verandert

Voor de huidige baan geldt de volgende taak:

  • Een tijdelijke lokale Maven-stijl lay-out voor de CI Gradle-certificeringsaanbieder
  • schrijft een authenticatieconfiguratiebestand voor de ontdekte feeds
  • schrijft een tijdelijk Gradle init-script in de Gradle-gebruikershomemap
  • stelt omgevingsvariabelen in die het init-script en de credentialprovider gebruiken tijdens de Gradle-build

De taak registreert ook het opruimen na de klus, zodat deze tijdelijke bestanden worden verwijderd nadat de taak is voltooid.

Meerdere invocations in één baan

Je kunt meer dan eens in dezelfde baan werken GradleAuthenticate@0 . Dit is handig wanneer verschillende Gradle-builds in de klus verschillende feedsets of serviceverbindingen nodig hebben. Latere aanroepen voegen toe aan de bestaande tijdelijke configuratie en vervangen vermeldingen voor dezelfde feed-URL wanneer dat nodig is.

Permissions

Deze taak stelt authenticatie in, maar geeft geen feed-rechten. Als de pipeline toegang krijgt tot een feed in een ander project of organisatie, zorg er dan voor dat de pipeline-identiteit of serviceverbinding de vereiste toegang heeft. Voor meer informatie, zie Pakketrechten in Azure-pipelines.

Examples

Authenticeer feeds die uit Gradle-bestanden zijn ontdekt door gebruik te maken van Workload Identity Federation

In dit voorbeeld scant de taak de vermelde Gradle-bestanden op Azure-artefacten-feed-URL's, detecteert de credential provider-pluginversie uit settings.gradle, en configureert WIF-authenticatie via een Azure DevOps-serviceverbinding.

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'

Gebruik dit patroon wanneer je repository al de Azure-artefacten-feed-URL's bevat in Gradle-configuratie en je wilt dat de taak zoveel mogelijk afleidt.

Authenticeer expliciete feed-URL's met behulp van een jobtoegangstoken

In dit voorbeeld authenticeert de taak een specifieke Azure-artefacten-feed zonder Gradle-bestanden te scannen. Dit is handig wanneer de repository-URL vooraf bekend is of wanneer de relevante feed niet is gedeclareerd in een bestand dat de taak kan inspecteren.

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)

Gebruik dit patroon wanneer tokengebaseerde authenticatie voldoende is en je één of meer bekende Azure-artefacten feed-URL's direct wilt targeten.

Requirements

Voorwaarde Beschrijving
Pijplijntypen YAML, klassieke build, klassieke release
Wordt uitgevoerd op Agent, DeploymentGroup
eisen Geen
Mogelijkheden Deze taak voldoet niet aan de vereisten voor volgende taken in de taak.
opdrachtbeperkingen Any
variabelen instellen Any
Agent versie 2.144.0 of hoger
Taakcategorie Package