Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Verwenden Sie diese Aufgabe vor Ihrem Gradle-Build, um sich mit Azure Artifacts-Feeds für Abhängigkeitswiederherstellung und Plugin-Auflösung zu authentifizieren. Die Aufgabe installiert und konfiguriert eine CI-Version des Gradle-Zugangsdatenanbieters für den Job und authentifiziert sich dann entweder über eine Workload Identity Federation (WIF)-Serviceverbindung oder das bereits verfügbare Build-Zugriffstoken.
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.
Eingaben
buildFiles
-
Build-Dateien
string.
Stellen Sie eine zeilenzeilengetrennte Liste von Gradle-Dateien bereit, die Aufgabe nach URLs der Azure Artifacts-Feeds scannen soll. Fügen Sie jede Gradle-Datei ein, die Repositories für den Build definiert, wie settings.gradle, settings.gradle.kts, , build.gradleoder build.gradle.kts. Wenn dein Build den Gradle-Block plugins {} in settings.gradleverwendet, füge diese Datei hinzu, damit die Aufgabe die Plugin-Version automatisch erkennen kann.
repositoryUrl
-
Repository-URL(s)
string.
Stellen Sie eine zeilenneu getrennte Liste der URLs des Azure Artifacts-Repositoriums zur Authentifizierung bereit. Wenn Sie diese Eingabe angeben, verwendet die Aufgabe die bereitgestellten URLs, anstatt Build-Dateien zu scannen, um Repository-URLs zu finden. Wenn du auch Build-Dateien bereitstellst, kann die Aufgabe sie weiterhin zur Plugin-Versionserkennung verwenden.
adoServiceConnection
-
Dienstverbindung
string.
Der Name einer Azure DevOps Service Connection, die die Workload Identity Federation (WIF) zur Authentifizierung verwendet. Wenn Sie diese Eingabe leer lassen, greift die Aufgabe auf tokenbasierte Authentifizierung zurück, indem ARTIFACTS_GRADLE_AUTH_ACCESS_TOKEN sie "wenn sie gesetzt ist" verwendet oder SYSTEM_ACCESSTOKEN anderweitig.
pluginToolVersion
-
Plugin-Tool-Version
string.
Überschreiben Sie die Version des von der Aufgabe installierten Gradle-Authentifizierungs-Plugins. Standardmäßig verwendet die Aufgabe die neueste kompatible Version. Nutze diese Eingabe nur, wenn du eine bestimmte Plugin-Version brauchst.
gradleUserHome
-
Gradle User Home
string.
Überschreiben Sie das Gradle-Benutzer-Home-Verzeichnis. Standardmäßig wird die Aufgabe verwendet GRADLE_USER_HOME , wenn sie gesetzt ist oder ~/.gradle anderweitig. Stellen Sie diese Eingabe ein, wenn Ihr Build einen benutzerdefinierten Gradle-Benutzerstandort verwendet.
Aufgabensteuerungsoptionen
Alle Aufgaben verfügen zusätzlich zu ihren Aufgabeneingaben über Steuerungsoptionen. Weitere Informationen finden Sie unter Steuerelementoptionen und allgemeinen Aufgabeneigenschaften.
Ausgabevariablen
Keiner.
Bemerkungen
Führe diese Aufgabe im selben Job und vor dem Gradle-Befehl aus, der Zugriff auf Azure Artifacts benötigt. Die Aufgabe bereitet die Authentifizierungskonfiguration vor, die für die folgenden Gradle-Schritte im Job erforderlich ist.
Die Aufgabe unterstützt zwei Authentifizierungsmodi:
- Wenn Sie Service-Verbindung bereitstellen, konfiguriert die Aufgabe die Workload Identity Federation für jeden entdeckten Azure Artifacts-Feed.
- Wenn Sie keine Service-Verbindung bereitstellen, verwendet die Aufgabe das Build-Zugriffstoken aus der Umgebung. Zuerst prüft
ARTIFACTS_GRADLE_AUTH_ACCESS_TOKENes ; wenn diese Variable nicht gesetzt ist, verwendetSYSTEM_ACCESSTOKENes .
Verwenden Sie Build-Dateien oder Repository-URLs, um der Aufgabe zu sagen, wo sie nach Azure Artifacts-Feeds suchen soll. Wenn beim Scannen keine Azure Artifacts-URLs gefunden werden, wird die Aufgabe erfolgreich abgeschlossen, aber die Authentifizierung für keine Feeds konfiguriert.
Wie die Feed-Entdeckung funktioniert
Wenn du Repository-URL(s) angibst, verwendet die Aufgabe diese URLs zur Authentifizierung und scannt keine Build-Dateien, um andere Repository-URLs zu finden.
Wenn Sie sowohl Repository-URL(s) als auch Build-Dateien bereitstellen, werden während dieses Durchlaufs nur die angegebenen Repository-URLs konfiguriert, selbst wenn die Build-Dateien zusätzliche Azure Artifacts-Repositorien enthalten.
Wenn du auch Build-Dateien bereitstellst, verwendet die Aufgabe sie weiterhin, um die Version des Credential Provider-Plugins zu bestimmen.
Wenn du keine Repository-URL(s) angibst, scannt die Aufgabe die in den Build-Dateien aufgeführten Dateien nach Azure Artifacts-Feed-URLs, wie zum Beispiel
https://pkgs.dev.azure.com/....Wenn du Build-Dateien leer lässt und keine Repository-URL(s) angibst, sucht die Aufgabe automatisch nach gängigen Gradle-Dateien im Arbeitsverzeichnis:
settings.gradlesettings.gradle.ktsbuild.gradlebuild.gradle.kts
Wie die Auflösung der Plugin-Version funktioniert
Die Aufgabe bestimmt, welche Version des CI Gradle-Zugangsanbieters für den Build verwendet wird. Standardmäßig verwendet die Aufgabe die neueste kompatible Version. Die Aufgabe bestimmt die Version in folgender Reihenfolge:
- Eine Plugin-Version, die in den Gradle-Dateien deklariert wurde.
- Der in der Plugin-Tool-Version angegebene Wert.
- Eine Version, die vom Lösungspaket der Anmeldedaten erkannt wurde.
- Eine Notfallversion.
Wenn dein Repository den Gradle-Block plugins {} verwendetsettings.gradle, füge diese Datei in die Build-Dateien ein, damit die Aufgabe die Plugin-Version korrekt entdecken kann.
Was die Aufgabe verändert
Für den aktuellen Job lautet die Aufgabe:
- Inszeniert ein temporäres lokales Maven-ähnliches Layout für den CI Gradle-Zertifikatsanbieter
- schreibt eine Authentifizierungskonfigurationsdatei für die entdeckten Feeds
- schreibt ein temporäres Gradle-Init-Skript im Gradle-Benutzer-Home-Verzeichnis
- legt die Umgebungsvariablen fest, die das Init-Skript und der Credential Provider während des Gradle-Builds verwenden
Die Aufgabe registriert außerdem die Bereinigung nach dem Auftrag, sodass diese temporären Dateien nach Abschluss des Auftrags entfernt werden.
Mehrere Invocations in einem Job
Man kann mehr als einmal im selben Job laufen GradleAuthenticate@0 . Das ist nützlich, wenn verschiedene Gradle-Builds im Auftrag unterschiedliche Zuführsätze oder verschiedene Service-Verbindungen benötigen. Spätere Aufrufe ergänzen die bestehende temporäre Konfiguration und ersetzen bei Bedarf Einträge für dieselbe Feed-URL.
Erlaubnisse
Diese Aufgabe konfiguriert die Authentifizierung, gewährt aber keine Feed-Berechtigungen. Wenn die Pipeline auf einen Feed in einem anderen Projekt oder einer Organisation zugriff, stellen Sie sicher, dass die Pipeline-Identität oder Serviceverbindung den erforderlichen Zugriff hat. Weitere Informationen finden Sie unter Paketberechtigungen in Azure Pipelines.
Examples
- Authentifizieren Sie Feeds, die aus Gradle-Dateien entdeckt wurden, mithilfe der Workload Identity Federation
- Authentifizieren Sie explizite Feed-URLs mithilfe eines Job-Zugriffstokens
Authentifizieren Sie Feeds, die aus Gradle-Dateien entdeckt wurden, mithilfe der Workload Identity Federation
In diesem Beispiel scannt die Aufgabe die aufgeführten Gradle-Dateien nach Azure Artifacts-Feed-URLs, erkennt die Version des Credential Provider-Plugins aus settings.gradleund konfiguriert die WIF-Authentifizierung mithilfe einer Azure DevOps-Serviceverbindung.
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'
Verwende dieses Muster, wenn dein Repository bereits die Azure Artifacts-Feed-URLs in der Gradle-Konfiguration enthält und du möchtest, dass die Aufgabe so viel wie möglich ableitet.
Authentifizieren Sie explizite Feed-URLs mithilfe eines Job-Zugriffstokens
In diesem Beispiel authentifiziert die Aufgabe einen bestimmten Azure Artifacts-Feed, ohne Gradle-Dateien zu scannen. Dies ist nützlich, wenn die URL des Repositorys von Anfang an bekannt ist oder wenn der relevante Feed nicht in einer Datei deklariert ist, die die Aufgabe einsehen kann.
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)
Verwenden Sie dieses Muster, wenn tokenbasierte Authentifizierung ausreicht und Sie eine oder mehrere bekannte Azure Artifacts-Feed-URLs direkt ansprechen möchten.
Anforderungen
| Anforderung | Description |
|---|---|
| Pipelinetypen | YAML, Classic Build, Classic Release |
| Läuft auf | Agent, DeploymentGroup |
| Demands | Nichts |
| Funktionen | Dieser Vorgang erfüllt keine Anforderungen für nachfolgende Vorgänge im Auftrag. |
| Befehlseinschränkungen | Jegliche |
| Settable-Variablen | Jegliche |
| Agent-Version | 2.144.0 oder höher |
| Aufgabenkategorie | Package |