1.2. Red Hat OpenShift Pipelines 1.18 のリリースノート
この更新により、Red Hat OpenShift Pipelines General Availability (GA) 1.18 が OpenShift Container Platform 4.15 以降のバージョンで利用できるようになります。
1.2.1. 新機能
修正と安定性の向上に加えて、次のセクションでは Red Hat OpenShift Pipelines 1.18 の新機能を説明します。
1.2.1.1. Pipelines
- このリリースでは、OpenShift Pipelines コントローラーのログメッセージが改善され、特に空の変数が存在する場合に読みやすさが向上しました。
このリリースでは、パイプラインリゾルバーの解決タイムアウト設定を指定して、パイプライン実行時の柔軟性と制御性を高めることができます。
パイプラインリゾルバーのタイムアウト設定の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: # ... pipeline: options: configMaps: config-defaults: data: default-maximum-resolution-timeout: 5m bundleresolver-config: data: fetch-timeout: 1m # ...
apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: # ... pipeline: options: configMaps: config-defaults: data: default-maximum-resolution-timeout: 5m
1 bundleresolver-config: data: fetch-timeout: 1m
2 # ...
1.2.1.2. Operator
このリリースでは、OpenShift Pipeline がコミュニティータスクをサポートするようになりました。
次のコミュニティータスクは
openshift-pipelines
namespace にデフォルトでインストールされます。-
argocd-task-sync-and-wait
-
git-cli
-
helm-upgrade-from-repo
-
helm-upgrade-from-source
-
jib-maven
-
kubeconfig-creator
-
pull-request
-
trigger-jenkins-job
-
このリリースでは、OpenShift Pipelines は、
TektonConfig
CR を介した新規コンテナーのデプロイメントをサポートします。TektonConfig
CR を使用した新規kube-rbac-proxy
コンテナーのデプロイ例Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config # ... spec: result: options: deployments: tekton-results-watcher: spec: template: spec: containers: - name: kube-rbac-proxy args: - --secure-listen-address=0.0.0.0:8443 - --upstream=http://127.0.0.1:9090/ - --logtostderr=true image: registry.redhat.io/openshift4/ose-kube-rbac-proxy:v4.12 # ...
apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config # ... spec: result: options: deployments: tekton-results-watcher: spec: template: spec: containers: - name: kube-rbac-proxy args: - --secure-listen-address=0.0.0.0:8443 - --upstream=http://127.0.0.1:9090/ - --logtostderr=true image: registry.redhat.io/openshift4/ose-kube-rbac-proxy:v4.12 # ...
このリリースでは、OpenShift Pipelines コントローラーの高可用性オプションが、既存のリーダー選出メカニズムの代わりとして
StatefulSet
序数によって強化されています。これにより、Operator は、リーダー選出による迅速なリカバリー、またはStatefulSet
序数による一貫したワークロード分散のいずれかを使用できるようになります。デフォルトオプションであるリーダー選出には、フェイルオーバー機能がありますが、アクセス集中が発生する可能性があります。対照的に、新しい
StatefulSet
序数のアプローチでは、キーがレプリカ全体に均等に分散され、よりバランスの取れたワークロード分散が実現されます。TektonConfig
カスタムリソースでstatefulset-ordinals
パラメーターをtrue
に設定し、StatefulSet
序数メソッドに切り替えることができます。StatefulSet
序数機能を有効にする例Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: # ... pipeline: performance: disable-ha: false buckets: 4 replicas: 4 statefulset-ordinals: true # ...
apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: # ... pipeline: performance: disable-ha: false buckets: 4 replicas: 4 statefulset-ordinals: true # ...
重要StatefulSet
序数を使用して高可用性を実現する機能は、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
1.2.1.3. Triggers
このリリースでは、OpenShift Pipelines トリガーの
EventListener
オブジェクトにImagePullSecrets
フィールドが追加され、非公開のレジストリーからのイメージのプルにリスナーが利用するシークレットを指定できます。ImagePullSecrets
フィールドの使用例Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: triggers.tekton.dev/v1beta1 kind: EventListener metadata: name: imagepullsecrets-example # ... spec: serviceAccountName: triggers-example resources: kubernetesResource: spec: template: spec: imagePullSecrets: - name: docker-login # ...
apiVersion: triggers.tekton.dev/v1beta1 kind: EventListener metadata: name: imagepullsecrets-example # ... spec: serviceAccountName: triggers-example resources: kubernetesResource: spec: template: spec: imagePullSecrets: - name: docker-login # ...
1.2.1.4. CLI
このリリースでは、
opc
コマンドラインユーティリティーに次のコンポーネントが追加されました。- Pipelines as Code バージョン 0.33.0
- CLI バージョン 0.40.0
- 結果バージョン 0.14.0
- 手動承認 Gate バージョン 0.5.0
1.2.1.5. Pipelines as Code
このリリースでは、
on-path-change
およびon-path-change-ignore
アノテーションを使用して、変更されたファイルに基づいてPipelineRun
リソースをトリガーできるようになりました。これにより、複雑な CEL 式を記述する必要がなくなり、プロセスが簡素化されます。on-path-change
およびon-path-change-ignore
アノテーションの使用例Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: name: "on-path-change" annotations: pipelinesascode.tekton.dev/on-path-change: ["docs/**"] pipelinesascode.tekton.dev/on-path-change-ignore: [".github/**"] spec: # ...
apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: name: "on-path-change" annotations: pipelinesascode.tekton.dev/on-path-change: ["docs/**"]
1 pipelinesascode.tekton.dev/on-path-change-ignore: [".github/**"]
2 spec: # ...
このリリースでは、
on-comment
アノテーションを使用して、GitHub にプッシュされたコミットによってPipelineRun
リソースをトリガーできるようになりました。この機能により、PipelineRun
がトリガーされるタイミングをより細かく制御できるようになり、特定のコメントに基づいて照合させることができます。on-comment
アノテーションによるトリガーを有効にするには、パイプライン実行を設定する必要があります。プッシュされたコミットを通じてパイプライン実行のトリガーを有効にする例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: name: "on-comment-pr" annotations: pipelinesascode.tekton.dev/on-comment: "^/hello-world" spec: # ...
apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: name: "on-comment-pr" annotations: pipelinesascode.tekton.dev/on-comment: "^/hello-world"
1 spec: # ...
- 1
- この例では
/hello-world
コマンドを設定します。プッシュされたコミット (例:main
ブランチ) でこのコマンドを使用すると、on-comment-pr
パイプラインの実行がトリガーされます。
このリリースでは、
tkn pac info globbing [-s | -d] “<pattern>”
コマンドを使用して、サンプル入力データまたはコマンドが実行される作業ディレクトリーでパターンをテストできます。このコマンドは、PipelineRun
定義でパターンが適切に機能しているかどうかをテストします。たとえば、次の
on-target-branch
アノテーションをテストして、git イベントペイロードのmain
ブランチと一致することを確認できます。on-target-branch
アノテーションの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: name: "on-target-branch" annotations: pipelinesascode.tekton.dev/on-target-branch: "[refs/heads/*]" spec: # ...
apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: name: "on-target-branch" annotations: pipelinesascode.tekton.dev/on-target-branch: "[refs/heads/*]" spec: # ...
コマンドの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow tkn pac info globbing -s "refs/heads/main" "refs/heads/*"
$ tkn pac info globbing -s "refs/heads/main" "refs/heads/*"
このリリースでは、Pipelines as Code は HTML エンティティー
,
を使用してアノテーション内のコンマをサポートします。これで、値に直接使用されるコンマと一緒に、コンマ区切りの値を使用できるようになりました。たとえば、
main
とbranchWith,comma
の 2 つのブランチを一致させるには、次のようにアノテーションを指定します。コンマを使用したアノテーションの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: name: "comma-annotation" annotations: pipelinesascode.tekton.dev/on-target-branch: "[main, branchWith,comma]" spec: # ...
apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: name: "comma-annotation" annotations: pipelinesascode.tekton.dev/on-target-branch: "[main, branchWith,comma]" spec: # ...
このリリースでは、プルリクエストが終了またはマージされた後、
cancel-in-progress: true
アノテーションが指定された、関連するPipelineRun
リソースがすべて自動的にキャンセルされます。この機能を有効にするには、PipelineRun
定義でcancel-in-progress
アノテーションを指定します。cancel-in-progress
アノテーションの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: name: "cancel-in-progress" annotations: pipelinesascode.tekton.dev/cancel-in-progress: "true" spec: # ...
apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: name: "cancel-in-progress" annotations: pipelinesascode.tekton.dev/cancel-in-progress: "true" spec: # ...
重要Pipelines as Code における cancellation-in-progress は、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
このリリースでは、
cancel-in-progress: true
アノテーションが指定されたアクティブなPipelineRun
リソースは、同じ名前の新しいPipelineRun
リソースが Pipelines as Code によってトリガーされたときに自動的にキャンセルされます。現在、プルリクエストが生成されてPipelineRun
がトリガーされ、同じプルリクエストに対して後に続くコミットにより、新しいPipelineRun
がトリガーされると、過去の古いPipelineRun
がキャンセルされ、リソースが節約されます。この機能を有効にするには、
PipelineRun
リソースでpipelinesascode.tekton.dev/cancel-in-progress
アノテーションをtrue
に設定します。古いパイプライン実行のキャンセルを有効にする例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: name: "cancel-in-progress" annotations: pipelinesascode.tekton.dev/cancel-in-progress: "true" spec: # ...
apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: name: "cancel-in-progress" annotations: pipelinesascode.tekton.dev/cancel-in-progress: "true" spec: # ...
-
この更新前は、Bitbucket Data Center の CEL 式で使用される
.pathChanged()
関数は機能しませんでした。このリリースでは、この機能が実装されています。 このリリースでは、ラベルを使用してパイプラインの実行をプルリクエストと照合できます。パイプライン実行をラベルに一致させるには、
PipelineRun
リソースにpipelinesascode.tekton.dev/on-label
アノテーションを設定します。プルリクエストまたはプッシュイベントにラベルを追加すると、パイプライン実行がすぐにトリガーされます。プッシュ要求またはプルイベントにまだラベルがあり、コミットで更新されると、パイプライン実行が再度トリガーされます。この機能は、GitHub、GitLab、および Gitea リポジトリープロバイダーでサポートされています。Bitbucket Cloud および Bitbucket Data Center ではサポートされていません。
1.2.1.6. Tekton Results
- このリリースでは、Tekton Results は一般提供 (GA) 機能です。
-
このリリースでは、Operator は
TektonConfig
CR を介してデフォルトで Tekton Results の設定をインストールして追加します。 - このリリースでは、Tekton Results API サーバーは OpenShift Pipelines コンソールプラグインのプロキシー環境変数を使用して、認証ヘッダーを Tekton Results API に送信します。
- このリリースでは、LokiStack から取得された Tekton Results のログ情報に、各ログエントリーのコンテナー名が含まれるようになりました。
1.2.1.7. Tekton Cache
このリリースでは、OpenShift Pipelines に新しい tekton-caches
ツール機能が含まれています。
Tekton Cache はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
tekton-caches
ツールには、次の機能が含まれています。
ビルドプロセスが依存関係を保持するキャッシュディレクトリーを確保するには、
cache-upload
およびcache-fetch
ステップアクションを使用して S3 バケット、Google Cloud Services (GCS) バケット、または OCI リポジトリーに保存します。cache-fetch
およびcache-upload
のステップアクションは、デフォルトでopenshift-pipelines
namespace にインストールされます。
1.2.2. 互換性を失わせる変更点
- このリリースでは、Tekton Results は、Tekton Results ウォッチャーによる永続ボリューム (PV)、S3 バケット、または GCS バケット内のストレージへのログの転送をサポートしなくなりました。
-
この更新前は、古いバージョンのタスクとステップアクションが
openshift-pipelines
namespace にインストールされていました。この更新により、これらの古いバージョンは削除され、タスクとステップアクションの最新の 2 つのマイナーバージョンのみがインストールされます。たとえば、OpenShift Pipelines 1.18 では、インストールされたバージョン付きタスクとステップアクションは*-1-17-0
と*-1-18-0
です。
1.2.3. 既知の問題
-
TektonConfig
CR のresult:
セクションでパラメーターを追加または変更しても、変更は自動的には適用されません。変更を適用するには、openshift-pipelines
namespace 内の Results API サーバーのデプロイメントまたは Pod を再起動します。
1.2.4. 修正された問題
-
今回の更新以前は、通常のパラメーターと
matrix
パラメーターの両方が含まれるタスクを定義した場合、tekton-pipelines-controller
コンポーネントがクラッシュし、セグメンテーションフォールトメッセージをログに記録していました。タスクが削除されなかった場合、コンポーネントのクラッシュは継続し、パイプラインが実行されませんでした。この更新により、このような場合でもコントローラーはクラッシュしなくなります。 -
この更新前は、ユーザーが OpenShift Container Platform Web コンソールを使用してリゾルバーベースの
PipelineRun
リソースを再実行しようとすると、Invalid PipelineRun configuration, unable to start Pipeline.
のエラーメッセージが表示されていました。この更新により、再実行でエラーが発生しなくなり、期待どおりに動作するようになりました。 -
この更新前は、
PipelineRun
リソースが失敗すると、OpenShift Container Platform Web コンソールのPipelineRun
リソースの Output タブに、利用可能な結果ではなくエラーメッセージが表示されていました。この更新により、Web コンソールに結果が正しく表示されるようになります。 -
この更新前は、
CONTEXT
およびDOCKERFILE
パラメーターの値が異なるディレクトリーを参照している場合、openshift-pipelines
namespace からのbuildah
タスクは失敗していました。この更新により、問題が修正されました。 この更新前は、ステップアクションでパラメーターをデフォルト値として参照すると、そのステップアクションを参照する
TaskRun
リソースが失敗していました。このリリースにより、この問題は修正されました。パラメーターを値として使用する例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: tekton.dev/v1alpha1 kind: StepAction metadata: name: simple-step-action # ... spec: params: - name: param1 # This parameter is required type: string - name: param2 # This parameter uses the value of `param1` as default value type: string default: $(params.param1) # ...
apiVersion: tekton.dev/v1alpha1 kind: StepAction metadata: name: simple-step-action # ... spec: params: - name: param1 # This parameter is required type: string - name: param2 # This parameter uses the value of `param1` as default value type: string default: $(params.param1) # ...
-
この更新前は、リポジトリーの外部を指すシンボリックリンクを含むリモート Git リポジトリーを参照する
PipelineRun
リソースを作成すると、PipelineRun
は失敗していました。このリリースでは、シンボリックリンクが無効な場合でもPipelineRun
が失敗しなくなりました。 - この更新前は、メモリーと一時ストレージのリソース要求が定義された制限を超えることがありました。このリリースにより、この問題は修正されました。
- この更新前は、挿入されたサイドカーを使用するクラスターでパイプラインを実行しても、OpenShift Pipelines コントローラーに影響が及ばない場合がありました。これは、Kubernetes のマイナーバージョンチェックの不具合によって発生しました。この更新により、問題が修正されました。
- この更新前は、結果リストに無効な結果を伴う重複キーが含まれている場合に、重複が削除され、各キーの最後の結果に置き換えられていたため、結果リストの順序が変更される可能性がありました。このリリースでは、重複キーが削除されても結果の順序が保持され、各キーの最後の有効な結果が最終結果として保持されるようになります。
-
この更新前は、Pipelines as Code を使用する場合、相対パス (例:
https://example.servehttp.com/gitlab
) でホストされている GitLab インスタンスは、マージリクエストのステータスを正しく更新できませんでした。最初のイベント更新は正常に機能しましたが、パイプライン実行をFinished
としてマークするなど、後続の更新は GitLab に表示されず、ステータスはRunning
の状態のままとなっていました。この更新により、ステータスの更新が正しく機能するようになりました。 -
この更新前は、Pipelines as Code を使用するときに、
[]
値が空のPipelineRun
リソースでonEvent
またはonTargetBranch
アノテーションを渡すと、PipelineRun
リソースの一致処理ができませんでした。この更新により、値が空のアノテーションを渡すとエラーが返されます。 -
この更新前は、Pipelines as Code を使用する場合、URL なしまたは無効な URL を使用して
Repository
カスタムリソース (CR) を作成できました。この更新では、有効な URL を指定した場合のみRepository
CR を作成できるようになります。すべてのリポジトリーにデフォルト設定を渡すために、URL なしでopenshift-pipelines
namespace にRepository
CR を作成することもできます。 -
この更新前は、Pipelines as Code を使用しているときに、GitLab でフォークされたリポジトリーを通じてプルリクエストが発生すると、
PipelineRun
リソースは正常に作成されていましたが、その最終ステータスは GitLab UI に報告されませんでした。この更新により、問題が修正されました。 - この更新前は、Pipelines as Code を使用する場合、GitLab はパイプライン実行のチェック名をパイプラインの単一エントリーとして表示していました。これにより、複数のパイプラインの実行が同時に実行され、そのうちの 1 つが失敗した場合に問題が発生しました。他のパイプラインの実行が成功した場合、失敗ステータスが上書きされ、パイプラインは成功したものとして表示されます。この更新により、パイプラインの実行ごとにすべてのチェック名が個別に表示されます。したがって、パイプラインの実行のいずれかが失敗した場合、パイプラインのステータスは失敗として正しく表示されます。
-
この更新前は、Pipelines as Code を使用するときに、
PipelineRun
リソース定義で{{ trigger_comment }}
変数を使用し、GitHub で複数行のコメントを送信すると、Pipelines as Code によってパイプライン実行の YAML 検証エラーが再通知される可能性がありました。この更新により、問題が修正されました。 -
この更新前は、Pipelines as Code を使用する場合、ブランチ名に他のコマンドとして解釈される可能性のある部分が含まれている
/test branch:<branch>
コマンドは正しく機能しませんでした。たとえば、/test branch:a/testbranch
コマンドではブランチ名に/test
が含まれ、このコマンドは失敗します。この更新により、誤動作を防ぐために、コメント内の最初の/test
のサブ文字列のみがコマンドとして扱われるようになりました。 -
この更新前は、Pipelines as Code を使用する場合、権限のないユーザーが GitHub にプッシュされたコミットに対して
/test
、/retest
、またはその他の GitOps コマンドを送信すると、ユーザーにトリガー権限がなかったとしてもPipelineRun
リソースがトリガーされていました。この更新により、追加のユーザー認可チェックが追加され、適切な検証なしにPipelineRun
リソースがトリガーされるのを防ぎます。 -
この更新前は、Pipelines as Code を使用する場合、権限のないユーザーがプルリクエストを発行し、リポジトリー管理者が
/ok-to-test
コマンドを送信すると、プルリクエストイベントに一致するPipelineRun
リソースがない場合でも、保留中のチェックが作成されていました。この更新により、一致するPipelineRun
リソースがない場合、保留中のチェックは作成されなくなります。代わりに、一致するPipelineRun
が存在しないことを示す中立的なチェックが作成されます。 今回の更新以前は、Bitbucket Data Center で Pipelines as Code を使用する場合、プッシュイベントユーザーは、
body.changes
オブジェクトなどのPipelineRun
リソースのイベントペイロードのすべてのフィールドを参照できませんでした。今回の更新でこの問題が修正されています。{{ body.changes }} 動的変数の使用例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: tekton.dev/v1 kind: PipelineRun # ... spec: params: - name: ref_id value: "{{ body.changes[0].ref.id }}" # ...
apiVersion: tekton.dev/v1 kind: PipelineRun # ... spec: params: - name: ref_id value: "{{ body.changes[0].ref.id }}" # ...
-
この更新前は、Pipelines as Code を使用している場合、
PipelineRun
リソースのgenerateName
フィールドを使用してリソースをincoming
Webhook に紐づけしようとしても、その紐づけは正しく機能しませんでした。この更新により、問題が修正されました。 -
この更新前は、Pipelines as Code を使用する場合、Bitbucket Data Center のプッシュイベントで
on-cel-expression
アノテーションが機能していませんでした。この更新により、問題が修正されました。