3.3. Git リポジトリーからのリモートパイプラインまたはタスクの指定
Git リゾルバーを使用して、Git リポジトリーからリモートパイプラインまたはタスクを指定できます。リポジトリーには、パイプラインまたはタスクを定義する YAML ファイルが含まれている必要があります。Git リゾルバーは、匿名でクローンを作成するか、認証された SCM API を使用して、リポジトリーにアクセスできます。
3.3.1. 匿名 Git クローン作成用の Git リゾルバーの設定
匿名 Git クローン作成を使用する場合は、Git リポジトリーからリモートパイプラインとタスクをプルするためのデフォルトの Git リビジョン、フェッチタイムアウト、およびデフォルトのリポジトリー URL を設定できます。
手順
TektonConfig
カスタムリソースを編集するには、次のコマンドを入力します。$ oc edit TektonConfig config
TektonConfig
カスタムリソースで、pipeline.git-resolver-config
仕様を編集します。apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: pipeline: git-resolver-config: default-revision: main 1 fetch-timeout: 1m 2 default-url: https://github.com/tektoncd/catalog.git 3
3.3.2. 認証された SCM API の Git リゾルバーの設定
認証された SCM API の場合は、認証された Git 接続の構成を設定する必要があります。
go-scm
ライブラリーでサポートされている Git リポジトリープロバイダーを使用できます。すべての go-scm
実装が Git リゾルバーでテストされているわけではありませんが、次のプロバイダーが動作することが確認されています。
-
github.com
および GitHub Enterprise -
gitlab.com
およびセルフホスト Gitlab - Gitea
- BitBucket Server
- BitBucket Cloud
- クラスターの認証済み SCM API を使用して設定できる Git 接続は 1 つだけです。この接続は、クラスターのすべてのユーザーが利用できるようになります。クラスターのすべてのユーザーは、接続用に設定したセキュリティートークンを使用してリポジトリーにアクセスできます。
- 認証された SCM API を使用するように Git リゾルバーを設定すると、匿名の Git クローン参照を使用してパイプラインとタスクを取得することもできます。
手順
TektonConfig
カスタムリソースを編集するには、次のコマンドを入力します。$ oc edit TektonConfig config
TektonConfig
カスタムリソースで、pipeline.git-resolver-config
仕様を編集します。apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: pipeline: git-resolver-config: default-revision: main 1 fetch-timeout: 1m 2 scm-type: github 3 server-url: api.internal-github.com 4 api-token-secret-name: github-auth-secret 5 api-token-secret-key: github-auth-key 6 api-token-secret-namespace: github-auth-namespace 7 default-org: tektoncd 8
- 1
- 何も指定されていない場合に使用するデフォルトの Git リビジョン。
- 2
- 単一の Git クローン解決にかかる最大時間は、たとえば、
1m
、2s
、700ms
です。Red Hat OpenShift Pipelines は、すべての解決リクエストに対して 1 分のグローバル最大タイムアウトも適用します。 - 3
- SCM プロバイダーのタイプ。
- 4
- 認証された SCM API で使用するベース URL。
github.com
、gitlab.com
、または BitBucket Cloud を使用している場合、この設定は必要ありません。 - 5
- SCM プロバイダー API トークンを含むシークレットの名前。
- 6
- トークンを含むトークンシークレット内のキー。
- 7
- トークンシークレットを含む namespace (
default
でない場合)。 - 8
- オプション: 認証された API を使用する場合のリポジトリーのデフォルトの組織。この組織は、リゾルバーパラメーターで組織を指定しない場合に使用されます。
認証された SCM API を使用するには、scm-type
、api-token-secret-name
、および api-token-secret-key
設定が必要です。
3.3.3. Git リゾルバーを使用したリモートパイプラインまたはタスクの指定
パイプライン実行を作成するときに、Git リポジトリーからリモートパイプラインを指定できます。パイプラインまたはタスク実行を作成するときに、Git リポジトリーからリモートタスクを指定できます。
前提条件
- 認証された SCM API を使用する場合は、Git リゾルバーに対して認証された Git 接続を設定する必要があります。
手順
Git リポジトリーからリモートパイプラインまたはタスクを指定するには、
pipelineRef
またはtaskRef
仕様で次の参照形式を使用します。# ... resolver: git params: - name: url value: <git_repository_url> - name: revision value: <branch_name> - name: pathInRepo value: <path_in_repository> # ...
表3.3 Git リゾルバーでサポートされているパラメーター パラメーター 説明 値の例 url
匿名クローン作成を使用する場合のリポジトリーの URL。
https://github.com/tektoncd/catalog.git
repo
認証された SCM API を使用する場合のリポジトリー名。
test-infra
org
認証された SCM API を使用する場合のリポジトリーの組織。
tektoncd
revision
リポジトリー内の Git リビジョン。ブランチ名、タグ名、またはコミット SHA ハッシュを指定できます。
aeb957601cf41c012be462827053a21a420befca
main
v0.38.2
pathInRepo
リポジトリー内の YAML ファイルのパス名。
task/golang-build/0.3/golang-build.yaml
注記リポジトリーのクローンを作成して匿名で取得するには、
url
パラメーターを使用します。認証された SCM API を使用するには、repo
パラメーターを使用します。url
パラメーターとrepo
パラメーターを同時に指定しないでください。パイプラインまたはタスクに追加のパラメーターが必要な場合は、パイプライン、パイプライン実行、またはタスク実行の仕様の
params
セクションでこれらのパラメーターの値を指定します。pipelineRef
またはtaskRef
仕様のparams
セクションには、リゾルバーがサポートするパラメーターのみを含める必要があります。
次のパイプライン実行の例では、Git リポジトリーからリモートパイプラインを参照します。
apiVersion: tekton.dev/v1 kind: PipelineRun metadata: name: git-pipeline-reference-demo spec: pipelineRef: resolver: git params: - name: url value: https://github.com/tektoncd/catalog.git - name: revision value: main - name: pathInRepo value: pipeline/simple/0.1/simple.yaml params: - name: name value: "testPipelineRun" - name: sample-pipeline-parameter value: test
次のパイプラインの例では、Git リポジトリーからリモートタスクを参照します。
apiVersion: tekton.dev/v1 kind: Pipeline metadata: name: pipeline-with-git-task-reference-demo spec: tasks: - name: "git-task-reference-demo" taskRef: resolver: git params: - name: url value: https://github.com/tektoncd/catalog.git - name: revision value: main - name: pathInRepo value: task/git-clone/0.6/git-clone.yaml params: - name: sample-task-parameter value: test
次のタスク実行例では、Git リポジトリーからリモートタスクを参照します。
apiVersion: tekton.dev/v1 kind: TaskRun metadata: name: git-task-reference-demo spec: taskRef: resolver: git params: - name: url value: https://github.com/tektoncd/catalog.git - name: revision value: main - name: pathInRepo value: task/git-clone/0.6/git-clone.yaml params: - name: sample-task-parameter value: test