GradleAuthenticate@0 - Gradle Authenticate v0 タスク

Gradleビルド前にこのタスクを使って、依存関係の復元やプラグイン解決のためにAzure Artifactsフィードで認証してください。 タスクはジョブ用のGradle認証プロバイダーのCIバージョンをインストールし設定し、その後、ワークロードアイデンティティフェデレーション(WIF)サービス接続かジョブに既に利用可能なビルドアクセストークンを使って認証します。

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 - ビルドファイル
string

タスクがAzure ArtifactsフィードURLをスキャンするためのGradleファイルの新行区切りリストを提供します。 ビルド用のリポジトリを定義する各Gradleファイル( settings.gradlesettings.gradle.ktsbuild.gradlebuild.gradle.ktsなど)を含めてください。 もしビルドがsettings.gradleでGradle plugins {}ブロックを使っているなら、そのファイルを含めてタスクがプラグインバージョンを自動的に検出できるようにします。


repositoryUrl - リポジトリのURL
string

認証用のAzure ArtifactsリポジトリURLの改行区切りリストを提供します。 この入力を指定すると、タスクはビルドファイルをスキャンする代わりに提供されたURLを使ってリポジトリのURLを発見します。 ビルド ファイルも提供していれば、タスクはプラグインのバージョン検出に使うことができます。


adoServiceConnection - サービス関連
string

認証にWorkload Identity Federation(WIF)を使用するAzure DevOpsサービス接続の名前です。 この入力を空にすると、タスクはトークンベースの認証に戻り、設定時に ARTIFACTS_GRADLE_AUTH_ACCESS_TOKEN を使うか、それ以外は SYSTEM_ACCESSTOKEN します。


pluginToolVersion - プラグインツールのバージョン
string

タスクがインストールしたGradle認証プラグインのバージョンを上書きします。 デフォルトでは、タスクは最新の互換バージョンを使用します。 この入力は特定のプラグインバージョンが必要な時だけ使ってください。


gradleUserHome - Gradleユーザーホーム
string

Gradleのユーザーホームディレクトリを上書きしてください。 デフォルトでは、タスクは設定時に GRADLE_USER_HOME を使い、そうでない場合は ~/.gradle します。 ビルドでカスタムのGradleユーザーのホームロケーションを使うときにこの入力を設定してください。


タスク コントロールのオプション

すべてのタスクには、タスク入力に加えて制御オプションがあります。 詳細については、「コントロール オプションと一般的なタスク プロパティを参照してください。

出力変数

なし。

注釈

同じジョブ内で、Azure Artifactsへのアクセスが必要なGradleコマンドの前にこのタスクを実行してください。 このタスクは、ジョブ内のGradleステップに必要な認証設定を準備します。

このタスクは2つの認証モードをサポートしています:

  • サービス接続を提供すると、タスクは発見された各Azure Artifactsフィードに対してWorkload Identity Federationを設定します。
  • サービス接続を提供しなければ、タスクは環境からのビルドアクセストークンを使用します。 まずは ARTIFACTS_GRADLE_AUTH_ACCESS_TOKENをチェックし、その変数が設定されていなければ SYSTEM_ACCESSTOKENを使用します。

ビルドファイルリポジトリURLを使って、タスクにAzure Artifactsフィードのどこを探せばいいか指示してください。 スキャンしてもAzure ArtifactsのURLが見つからなければ、タスクは正常に完了しますが、フィードの認証設定はされません。

フィード発見の仕組み

  • リポジトリ URLを提供すると、そのタスクは認証にそれらのURLを使用し、ビルドファイルをスキャンして他のリポジトリURLを検出しません。

  • リポジトリURLとビルドファイルの両方を提供した場合、その実行中に指定されたリポジトリURLのみが設定されます。ビルドファイルに追加のAzure Artifactsリポジトリが含まれていてもです。

  • Buildファイルも提供しても、タスクは認証情報提供者プラグインのバージョンを決定するためにそれらを使用します。

  • リポジトリURLを提供していない場合、タスクはビルドファイルにあるファイルからhttps://pkgs.dev.azure.com/...などのAzure ArtifactsフィードURLを探します。

  • Buildファイルを空にしてリポジトリURLを提供しない場合、タスクは作業ディレクトリ内で共通のGradleファイルを自動検索します。

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

プラグインバージョンの解像度の仕組み

このタスクは、ビルドで使用するCI Gradle認証情報プロバイダーのバージョンを決定します。 デフォルトでは、タスクは最新の互換バージョンを使用します。 タスクは以下の順序でバージョンを決定します:

  1. Gradleファイル内で宣言されたプラグインバージョンです。
  2. プラグインツールのバージョンで指定された数値です。
  3. 解決済みの認証情報プロバイダーパッケージから検出されたバージョン。
  4. 代替案です。

リポジトリがGradle plugins {}ブロックでsettings.gradleを使っている場合は、そのファイルをビルドファイルに含めて、タスクがプラグインのバージョンを正しく検出できるようにします。

課題が変えるもの

現在の仕事の課題は以下の通りです:

  • CI Gradle認証プロバイダー向けに一時的なローカルMavenスタイルレイアウトをステージ化します
  • 発見されたフィードに対して認証設定ファイルを書き込みます
  • Gradleユーザーホームディレクトリに一時的なGradle initスクリプトを書きます
  • Gradleビルド中にinitスクリプトと認証情報提供者が使用する環境変数を設定します

また、作業後のクリーンアップも登録し、作業終了後にこれらの一時ファイルを削除します。

1つのジョブでの複数の呼び出し

同じ仕事で GradleAuthenticate@0 を複数回走らせることもあります。 これは、ジョブ内の異なるGradleビルドが異なるフィードセットやサービス接続を必要とする場合に有用です。 後の呼び出しは既存の一時設定に追加され、必要に応じて同じフィードURLのエントリを置き換えます。

Permissions

このタスクは認証を設定しますが、フィード権限は付与しません。 パイプラインが他のプロジェクトや組織のフィードにアクセスする場合は、パイプラインの識別やサービス接続に必要なアクセス権を持っていることを確認してください。 詳細については、Azure Pipelinesのパッケージ権限をご覧ください。

Examples

Workload Identity Federationを用いてGradleファイルから発見されたフィードを認証します

この例では、タスクはリストされたGradleファイルをAzure ArtifactsフィードURLでスキャンし、settings.gradleから認証情報提供者プラグインのバージョンを検出し、Azure DevOpsサービス接続を使ってWIF認証を設定します。

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'

このパターンは、リポジトリにすでにGradle設定でAzure ArtifactsフィードURLが含まれていて、タスクでできるだけ多くの推測をさせたい場合に使います。

ジョブアクセストークンを使って明示的なフィードURLを認証する

この例では、タスクはGradleファイルをスキャンせずに特定のAzure Artifactsフィードを認証します。 これはリポジトリのURLが事前に分かっている場合や、関連するフィードがタスクで検査可能なファイルに宣言されていない場合に有用です。

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)

トークンベースの認証で十分で、既知のAzure ArtifactsフィードURLを1つ以上直接ターゲットにしたい場合にこのパターンを使います。

Requirements

Requirement Description
パイプラインの種類 YAML、クラシック ビルド、クラシック リリース
対象の上で実行される エージェント、DeploymentGroup
の需要 なし
Capabilities このタスクは、ジョブ内の後続のタスクに対する要求を満たしていません。
コマンドの制限 Any
設定可能な変数 Any
エージェントのバージョン 2.144.0 以上
タスク カテゴリ パッケージ