1.11. Pipelines as Code での Repository CRD の使用
Repository カスタムリソース (CR) には、次の主要な機能があります。
- URL からのイベントの処理について Pipelines as Code に通知します。
- Pipeline 実行の namespace について Pipelines as Code に通知します。
- Webhook メソッドを使用する場合、Git プロバイダープラットフォームに必要な API シークレット、ユーザー名、または API URL を参照します。
- リポジトリーの最後のパイプライン実行ステータスを指定します。
tkn pac CLI またはその他の代替方法を使用して、ターゲット namespace 内に Repository CR を作成できます。以下に例を示します。
- 1
my-pipeline-ciはターゲット namespace です。
https://github.com/<repository>/<project> などの URL からイベントが発生すると、Pipelines as Code はその URL とマッチさせ、<repository>/<project> リポジトリーのコンテンツのチェックアウトを開始し、パイプラインを実行して .tekton/ ディレクトリーのコンテンツとマッチさせます。
-
ソースコードリポジトリーに関連付けられたパイプラインが実行されるのと同じ namespace に
RepositoryCRD を作成する必要があります。これは別の namespace をターゲットにすることはできません。 -
複数の
リポジトリーCRD が同じイベントとマッチする場合には、Pipelines as Code は最も古いもののみを処理します。特定の namespace と同じにする必要がある場合は、pipelinesascode.tekton.dev/target-namespace: "<mynamespace>"アノテーションを追加します。このような明示的なターゲティングにより、悪意のあるアクターがアクセス権のない namespace でパイプラインの実行を防ぎます。
1.11.1. 同時実行制限の設定 リンクのコピーリンクがクリップボードにコピーされました!
Repository カスタムリソース定義 (CRD) で concurrency_limit 仕様を使用して、リポジトリーに対して同時に実行されるパイプライン実行の最大数を定義できます。
イベントに一致する複数のパイプラインが実行される場合、パイプラインは、イベントの開始に一致するアルファベット順に実行されます。
たとえば、.tekton ディレクトリーに 3 つのパイプラインが実行され、リポジトリー設定に concurrency_limit が 1 のプルリクエストを作成する場合、すべてのパイプライン実行はアルファベット順に実行されます。常に 1 つのパイプライン実行のみが running 状態にあり、残りはキューに入れられます。