GradleAuthenticate@0 - Zadanie Gradle Authenticate v0

Użyj tego zadania przed kompilacją Gradle, aby uwierzytelnić się za pomocą kanałów Azure Artifacts do przywracania zależności i rozwiązywania wtyczek. Zadanie instaluje i konfiguruje wersję CI dostawcy danych Gradle dla zadania, a następnie uwierzytelnia się za pomocą połączenia usługowego Workload Identity Federation (WIF) lub tokena dostępu do budowania, który jest już dostępny dla zadania.

Składnia

# 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 - Pliki budowania
string.

Udostępnij listę plików Gradle oddzieloną od nowych linii, aby zadanie skanowało adresy URL Azure Artifacts feed. Uwzględnij każdy plik Gradle, który definiuje repozytoria dla buildu, takie jak settings.gradle, settings.gradle.kts, build.gradle, lub build.gradle.kts. Jeśli twoja wersja używa bloku Gradle plugins {} w , settings.gradledołącz ten plik, aby zadanie automatycznie wykrywało wersję wtyczki.


repositoryUrl - Adres URL repozytorium
string.

Udostępnij listę adresów URL repozytorium Azure Artifacts oddzieloną od nowej linii do uwierzytelnienia. Gdy określasz to wejście, zadanie korzysta z dostarczonych adresów URL zamiast skanować pliki build w celu odkrycia adresów URL-ów repozytoriów. Jeśli udostępnisz też pliki Build, zadanie nadal może je używać do wykrywania wersji wtyczek.


adoServiceConnection - Połączenie z usługami
string.

Nazwa połączenia usług Azure DevOps, które korzysta z Workload Identity Federation (WIF) do uwierzytelniania. Jeśli zostawisz to wejście puste, zadanie wraca do uwierzytelniania opartego na tokenach, używając ARTIFACTS_GRADLE_AUTH_ACCESS_TOKEN momentu ustawienia lub SYSTEM_ACCESSTOKEN w inny sposób.


pluginToolVersion - Wersja narzędzia wtyczki
string.

Przepisz wersję wtyczki uwierzytelniającej Gradle zainstalowaną przez zadanie. Domyślnie zadanie korzysta z najnowszej kompatybilnej wersji. Używaj tego wejścia tylko wtedy, gdy potrzebujesz konkretnej wersji wtyczki.


gradleUserHome - Dom użytkownika Gradle
string.

Nadpisz katalog użytkowników Gradle na ekranie. Domyślnie zadanie używa się GRADLE_USER_HOME wtedy, gdy jest ustawione, lub ~/.gradle w inny sposób. Ustaw to wejście, gdy Twój build korzysta z niestandardowej lokalizacji użytkownika Gradle.


Opcje sterowania zadania

Wszystkie zadania mają opcje sterowania oprócz danych wejściowych zadań podrzędnych. Aby uzyskać więcej informacji, zobacz opcje kontroli i typowe właściwości zadań.

Zmienne wyjściowe

None.

Uwagi

Wykonaj to zadanie w tym samym zadaniu i przed poleceniem Gradle, które wymaga dostępu do Azure Artifacts. Zadanie przygotowuje konfigurację uwierzytelniania wymaganą do kolejnych kroków Gradle w zadaniu.

Zadanie obsługuje dwa tryby uwierzytelniania:

  • Jeśli zapewnisz połączenie usługowe, zadanie konfiguruje Workload Identity Federation dla każdego odkrytego kanału Azure Artifacts.
  • Jeśli nie zapewnisz połączenia z usługą, zadanie korzysta z tokena dostępu do buildów ze środowiska. Najpierw sprawdza ; ARTIFACTS_GRADLE_AUTH_ACCESS_TOKENjeśli ta zmienna nie jest ustawiona, używa SYSTEM_ACCESSTOKEN.

Użyj plików Build lub URL-ów repozytorium, aby powiedzieć zadaniu, gdzie szukać kanałów Azure Artifacts. Jeśli skanowanie nie znajdzie żadnych adresów URL Azure Artifacts, zadanie kończy się pomyślnie, ale nie konfiguruje uwierzytelniania dla żadnych kanałów.

Jak działa odkrywanie kanału

  • Jeśli podasz adresy URL repozytorium, zadanie używa tych URL do uwierzytelniania i nie skanuje plików budowania w celu znalezienia innych adresów URL.

  • Jeśli dostarczysz zarówno URL(y) repozytoriów, jak i pliki Build, podczas tego uruchomienia skonfigurowane będą tylko określone URL-y repozytorium, nawet jeśli pliki build zawierają dodatkowe repozytoria Azure Artifacts.

  • Jeśli udostępnisz także pliki Build, zadanie nadal używa ich do określenia wersji wtyczki dostawcy poświadczeń.

  • Jeśli nie podasz adresu URL repozytorium, zadanie skanuje pliki wymienione w plikach Build pod kątem adresów feed Azure Artifacts, takich jak https://pkgs.dev.azure.com/....

  • Jeśli zostawisz puste pliki Build i nie podasz URL(ów) repozytorium, zadanie automatycznie wyszukuje popularne pliki Gradle w katalogu roboczym:

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

Jak działa rozdzielczość wersji wtyczek

Zadanie określa, którą wersję dostawcy poświadczeń CI Gradle użyć do budowy. Domyślnie zadanie korzysta z najnowszej kompatybilnej wersji. Zadanie określa wersję w następującej kolejności:

  1. Wersja wtyczki zadeklarowana w plikach Gradle.
  2. Wartość podana w wersji narzędzia wtyczki.
  3. Wersja wykryta przez pakiet dostawcy poświadczeń rozwiązanych.
  4. Wersja awaryjna.

Jeśli twoje repozytorium korzysta settings.gradle z bloku Gradle plugins {} , umieść ten plik w plikach Build , aby zadanie mogło poprawnie odkryć wersję wtyczki.

Co zmienia zadanie

W obecnej pracy zadanie:

  • Przygotowuje tymczasowy lokalny układ w stylu Maven dla dostawcy certyfikatów CI Gradle
  • zapisuje plik konfiguracyjny uwierzytelniania dla odkrytych kanałów
  • zapisuje tymczasowy skrypt init Gradle w katalogu użytkownika Gradle Home
  • ustawia zmienne środowiskowe, które skrypt init i dostawca poświadczeń używają podczas kompilacji Gradle

Zadanie rejestruje także sprzątanie po zakończeniu zadania, dzięki czemu te tymczasowe pliki są usuwane po zakończeniu zadania.

Wiele inwokacji w jednym zadaniu

Możesz uruchomić GradleAuthenticate@0 więcej niż raz w tym samym zadaniu. Jest to przydatne, gdy różne zestawy Gradle w zadaniu wymagają różnych zestawów zasilających lub różnych połączeń serwisowych. Późniejsze wywołania dodają do istniejącej tymczasowej konfiguracji i zastępują wpisy dla tego samego adresu URL kanału, gdy jest to potrzebne.

Permissions

To zadanie konfiguruje uwierzytelnianie, ale nie przyznaje uprawnień do feedu. Jeśli potok uzyskuje dostęp do źródła w innym projekcie lub organizacji, upewnij się, że tożsamość potoku lub połączenie z usługą ma wymagany dostęp. Więcej informacji można znaleźć w artykule Uprawnienia pakietu w Azure Pipelines.

Examples

Uwierzytelnianie kanałów wykrytych z plików Gradle za pomocą Workload Identity Federation

W tym przykładzie zadanie skanuje wymienione pliki Gradle pod kątem adresów URL feedów Azure Artifacts, wykrywa wersję wtyczki dostawcy poświadczeń z settings.gradle, oraz konfiguruje uwierzytelnianie WIF za pomocą połączenia usługi Azure DevOps.

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'

Użyj tego wzorcu, gdy twoje repozytorium już zawiera adresy URL Azure Artifacts w konfiguracji Gradle i chcesz, aby zadanie wywnioskowało jak najwięcej.

Uwierzytelniaj jawne adresy URL feedów za pomocą tokena dostępu do pracy

W tym przykładzie zadanie uwierzytelnia konkretny kanał Azure Artifacts bez skanowania plików Gradle. Jest to przydatne, gdy adres URL repozytorium jest znany na początku lub gdy odpowiedni kanał nie jest zadeklarowany w pliku, który zadanie może sprawdzić.

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)

Stosuj ten wzorzec, gdy uwierzytelnianie oparte na tokenach jest wystarczające i chcesz bezpośrednio celować w jeden lub więcej znanych adresów Azure Artifacts feed.

Requirements

Requirement Opis
Typy potoków YAML, klasyczna kompilacja, wersja klasyczna
Działa na Agent, grupa wdrożeniowa
Demands Żadne
Możliwości To zadanie nie spełnia żadnych wymagań dotyczących kolejnych zadań w zadaniu.
ograniczenia poleceń Any
zmienne ustawiane Any
Wersja agenta 2.144.0 lub nowsza
Kategoria zadań Package