GradleAuthenticate@0 - Gradle Authenticate v0-uppgiften

Använd denna uppgift innan din Gradle-build för att autentisera med Azure Artifacts-flöden för beroendeåterställning och plugin-lösning. Uppgiften installerar och konfigurerar en CI-version av Gradle-inloggningsleverantören för jobbet, och autentisera sig sedan genom att använda antingen en Workload Identity Federation (WIF)-tjänstanslutning eller den byggåtkomsttoken som redan är tillgänglig för jobbet.

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

Tillhandahåll en radlinjeseparerad lista med Gradle-filer för uppgiften att skanna efter URL:er i Azure Artifacts-flöden. Inkludera varje Gradle-fil som definierar repositorier för builden, såsom settings.gradle, , , build.gradle, eller build.gradle.ktssettings.gradle.kts. Om din build använder Gradle-blocket plugins {} i settings.gradle, inkludera den filen så att uppgiften automatiskt kan upptäcka plugin-versionen.


repositoryUrl - Arkivets URL(er)
string.

Tillhandahåll en radbrytningsseparerad lista över URL:er i Azure Artifacts-arkiv för autentisering. När du anger denna indata använder uppgiften de angivna URL:erna istället för att skanna byggfiler för att hitta repositoriella URL:er. Om du också tillhandahåller Byggfiler kan uppgiften fortfarande använda dem för att upptäcka pluginversioner.


adoServiceConnection - Tjänsteanslutning
string.

Namnet på en Azure DevOps Service Connection som använder Workload Identity Federation (WIF) för autentisering. Om du lämnar denna indata tom faller uppgiften tillbaka på tokenbaserad autentisering genom att använda ARTIFACTS_GRADLE_AUTH_ACCESS_TOKEN när den är satt, eller SYSTEM_ACCESSTOKEN på annat sätt.


pluginToolVersion - Plugin-verktygsversion
string.

Åsidosätt versionen av Gradle-autentiseringspluginet som installeras av uppgiften. Som standard använder uppgiften den senaste kompatibla versionen. Använd denna ingång endast när du behöver en specifik pluginversion.


gradleUserHome - Gradle användarhem
string.

Överskriv Gradle-användarens hemkatalog. Som standard används GRADLE_USER_HOME uppgiften när den är inställd, eller ~/.gradle på annat sätt. Ställ in denna inmatning när din byggnad använder en anpassad Gradle-användares hemplats.


Alternativ för uppgiftskontroll

Alla aktiviteter har kontrollalternativ utöver sina uppgiftsindata. Mer information finns i Kontrollalternativ och vanliga uppgiftsegenskaper.

Utdatavariabler

None.

Anmärkningar

Kör denna uppgift i samma jobb och före Gradle-kommandot som behöver tillgång till Azure Artifacts. Uppgiften förbereder den autentiseringskonfiguration som krävs för efterföljande Gradle-steg i jobbet.

Uppgiften stöder två autentiseringslägen:

  • Om du tillhandahåller Service-anslutning konfigurerar uppgiften Workload Identity Federation för varje upptäckt Azure Artifacts-flöde.
  • Om du inte tillhandahåller Service-anslutning använder uppgiften build-åtkomsttoken från miljön. Den kontrollerar först ; ARTIFACTS_GRADLE_AUTH_ACCESS_TOKENom den variabeln inte är satt, använder SYSTEM_ACCESSTOKENden .

Använd Build-filer eller Repository-URL(er) för att tala om för uppgiften var den ska leta efter Azure Artifacts-flöden. Om skanningen inte hittar några Azure Artifacts-URL:er slutförs uppgiften framgångsrikt men konfigurerar inte autentisering för några flöden.

Hur feedupptäckt fungerar

  • Om du tillhandahåller Repository-URL(s) använder uppgiften dessa URL:er för autentisering och skannar inte byggfiler för att hitta andra repository-URL:er.

  • Om du tillhandahåller både Repository-URL(er) och Byggfiler, kommer endast de angivna repositorierna att konfigureras under den körningen, även om byggfilerna innehåller ytterligare Azure Artifacts-repositorier.

  • Om du också tillhandahåller Byggfiler använder uppgiften dem fortfarande för att bestämma versionen av credential provider-pluginet.

  • Om du inte tillhandahåller Repository-URL:er, skannar uppgiften filerna som listas i Byggfilerna efter Azure Artifacts feed-URL:er, såsom https://pkgs.dev.azure.com/....

  • Om du lämnar Build-filer tomma och inte anger Repository-URL(s), söker uppgiften automatiskt efter vanliga Gradle-filer i arbetskatalogen:

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

Hur plugin-versionsupplösning fungerar

Uppgiften avgör vilken version av CI Gradle-behörighetsleverantören som ska användas för bygget. Som standard använder uppgiften den senaste kompatibla versionen. Uppgiften bestämmer versionen i följande ordning:

  1. En pluginversion deklarerad i Gradle-filerna.
  2. Värdet som anges i plugin-verktygsversionen.
  3. En version upptäckt från det lösta credential-leverantörspaketet.
  4. En reservversion.

Om ditt repository använder settings.gradle Gradle-blocket plugins {} , inkludera den filen i Byggfilerna så att uppgiften kan hitta plugin-versionen korrekt.

Vad uppgiften förändrar

För det nuvarande jobbet gäller uppgiften:

  • iscensätter en tillfällig lokal Maven-liknande layout för CI Gradle-legitimationsleverantören
  • skriver en autentiseringskonfigurationsfil för de upptäckta flödena
  • skriver ett tillfälligt Gradle init-skript i Gradle-användarens hemkatalog
  • sätter miljövariabler som init-skriptet och legitimationsleverantören använder under Gradle-bygget

Uppgiften registrerar också efter-jobb-rensning så att dessa tillfälliga filer tas bort efter att jobbet är klart.

Flera åkallan i ett och samma jobb

Du kan köra GradleAuthenticate@0 mer än en gång i samma jobb. Detta är användbart när olika Gradle-byggen i jobbet behöver olika matningsset eller olika serviceanslutningar. Senare anrop lägger till den befintliga tillfälliga konfigurationen och ersätter poster för samma flödes-URL vid behov.

Permissions

Denna uppgift konfigurerar autentisering, men ger inga flödesbehörigheter. Om pipelinen får tillgång till ett flöde i ett annat projekt eller en organisation, se till att pipelineidentiteten eller tjänsteanslutningen har rätt åtkomst. För mer information, se Paketbehörigheter i Azure-pipelines.

Examples

Autentisera flöden som upptäckts från Gradle-filer genom att använda Workload Identity Federation

I detta exempel skannar uppgiften de listade Gradle-filerna efter Azure Artifacts feed-URL:er, upptäcker versionen av credential provider-pluginet från settings.gradle, och konfigurerar WIF-autentisering genom att använda en Azure DevOps-tjänsteanslutning.

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'

Använd detta mönster när ditt repository redan innehåller Azure Artifacts-feed-URL:er i Gradle-konfiguration och du vill att uppgiften ska dra så mycket som möjligt slutsatser.

Autentisera explicita feed-URL:er genom att använda en jobbåtkomsttoken

I detta exempel autentiserar uppgiften ett specifikt Azure Artifacts-flöde utan att skanna några Gradle-filer. Detta är användbart när arkivets URL är känd från början eller när relevant flöde inte deklareras i en fil som uppgiften kan granska.

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)

Använd detta mönster när tokenbaserad autentisering är tillräcklig och du vill rikta in dig direkt på en eller flera kända URL:er i Azure Artifacts-flöden.

Requirements

Krav Beskrivning
Typer av pipelines YAML, klassisk version, klassisk version
Körs på Agent, DeploymentGroup
Demands Ingen
Möjligheter Den här aktiviteten uppfyller inte några krav på efterföljande uppgifter i jobbet.
Kommandobegränsningar Any
variabler som kan Any
Agentversion 2.144.0 eller senare
Aktivitetskategori Package