3.9. OpenShift Pipelines で提供されるステップアクション定義
OpenShift Pipelines は、タスクで使用できる標準の StepAction
定義を提供します。これらの定義を参照するには、クラスターリゾルバーを使用します。
git-clone
git-clone
ステップアクションは Git を使用してワークスペースでリモートリポジトリーを初期化し、クローンします。このステップアクションを使用して、このソースコードをビルドまたは処理するパイプラインの開始時にリポジトリーのクローンを作成するタスクを定義できます。
タスクでの git-clone
ステップアクションの使用例
apiVersion: tekton.dev/v1 kind: Task metadata: name: clone-repo-anon spec: # ... steps: - name: clone-repo-step ref: resolver: cluster params: - name: name value: git-clone - name: namespace value: openshift-pipelines - name: kind value: stepaction params: - name: URL value: $(params.url) - name: OUTPUT_PATH value: $(workspaces.output.path)
apiVersion: tekton.dev/v1
kind: Task
metadata:
name: clone-repo-anon
spec:
# ...
steps:
- name: clone-repo-step
ref:
resolver: cluster
params:
- name: name
value: git-clone
- name: namespace
value: openshift-pipelines
- name: kind
value: stepaction
params:
- name: URL
value: $(params.url)
- name: OUTPUT_PATH
value: $(workspaces.output.path)
パラメーター | 説明 | 型 | デフォルト値 |
---|---|---|---|
|
フェッチされた Git リポジトリーのディレクトリー。クローンされたリポジトリーデータは、ディレクトリーのルートまたは |
| |
|
必要に応じて、秘密鍵、 |
| |
|
|
| |
| CA 証明書を含むワークスペース。このワークスペースを指定すると、Git は HTTPS を使用してリモートリポジトリーとやり取りする場合に、これらの証明書を使用してピアを検証します。 |
| |
|
|
|
|
| HTTP プロキシーサーバー (TLS 以外のリクエスト)。 |
| |
| HTTPS プロキシーサーバー (TLS リクエスト)。 |
| |
| HTTP/HTTPS リクエストのプロキシーをオプトアウトします。 |
| |
|
タスクが Git リポジトリーを配置する |
| |
| Pod 内の Git ユーザーのホームディレクトリーへの絶対パス。 |
|
|
| Git 操作を実行する前に、デフォルトのワークスペースにコンテンツが存在する場合は削除します。 |
|
|
| 実行したコマンドをログに記録します。 |
|
|
|
グローバル |
|
|
| Git リポジトリー URL |
| |
| チェックアウトするリビジョン (ブランチやタグなど)。 |
|
|
|
リビジョンをチェックアウトする前にタスクが取得するリポジトリーの |
| |
| Git サブモジュールを初期化して取得します。 |
|
|
| 取得するコミットの数。"シャロークローン" は単一のコミットです。 |
|
|
| "スパースチェックアウト" を実行するための、コンマで区切られたディレクトリーパターンのリスト。 |
|
結果 | 型 | 説明 |
---|---|---|
|
| クローンされた Git リポジトリー内の現在のブランチの HEAD にあるコミットの SHA ダイジェスト。 |
|
| クローンされたリポジトリーの URL。 |
|
| クローンされた Git リポジトリー内の現在のブランチの HEAD にあるコミットのエポックタイムスタンプ。 |
cache-upload および cache-fetch
cache-upload
および cache-fetch
ステップアクションの使用は、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
ビルドプロセスが依存関係を保持するキャッシュディレクトリーを保持するには、cache-upload
および cache-fetch
ステップアクションを使用し、Amazon Simple Storage Service (S3) バケット、Google Cloud Services (GCS) バケット、または Open Container Initiative (OCI) リポジトリーに保存します。
cache-upload
ステップアクションを使用すると、ステップアクションはビルド内の特定のファイルに基づいてハッシュを計算します。これらのファイルを選択するには、正規表現を指定する必要があります。cache-upload
ステップアクションは、ハッシュでインデックス付けされたキャッシュディレクトリーのコンテンツを含むイメージを保存します。
cache-fetch
ステップアクションを使用すると、ステップアクションは同じハッシュを計算します。次に、このハッシュのキャッシュされたイメージがすでに利用可能かどうかを確認します。イメージが利用可能な場合、ステップアクションによってキャッシュされたコンテンツがキャッシュディレクトリーに設定されます。イメージが利用できない場合は、ディレクトリーはそのまま残ります。
cache-fetch
ステップアクションを使用した後、ビルドプロセスを実行できます。キャッシュが正常に取得された場合、ビルドプロセスで以前にダウンロードした依存関係が含まれます。キャッシュが取得されなかった場合、ビルドプロセスの通常の手順で依存関係をダウンロードします。
cache-fetch
の結果は、キャッシュされたイメージが取得されたかどうかを示します。後続の cache-upload
ステップアクションでは、その結果を使用して、現在のハッシュのキャッシュがすでに利用可能であった場合は、新しいキャッシュイメージのアップロードをスキップできます。
次のサンプルタスクは、リポジトリーからソースを取得し、キャッシュ (使用可能な場合) を取得し、Maven ビルドを実行し、キャッシュが取得されなかった場合は、ビルドディレクトリーの新しいキャッシュイメージをアップロードします。
タスク内の cache-fetch
および cache-upload
ステップアクションの使用例
apiVersion: tekton.dev/v1 kind: Task metadata: name: java-demo-task spec: workspaces: - name: source params: - name: repo_url type: string default: https://github.com/sample-organization/sample-java-project.git - name: revision type: string default: main - name: registry type: string default: image-registry.openshift-image-registry.svc:5000/sample-project/mvn-cache - name: image type: string default: openjdk:latest - name: buildCommand type: string default: "maven -Dmaven.repo.local=${LOCAL_CACHE_REPO} install" - name: cachePatterns type: array default: ["**pom.xml"] - name: force-cache-upload type: string default: "false" steps: - name: create-repo image: $(params.image) script: | mkdir -p $(workspaces.source.path)/repo chmod 777 $(workspaces.source.path)/repo - name: fetch-repo ref: resolver: cluster params: - name: name value: git-clone - name: namespace value: openshift-pipelines - name: kind value: stepaction params: - name: OUTPUT_PATH value: $(workspaces.source.path)/repo - name: URL value: $(params.repo_url) - name: REVISION value: $(params.revision) - name: cache-fetch ref: resolver: cluster params: - name: name value: cache-fetch - name: namespace value: openshift-pipelines - name: kind value: stepaction params: - name: patterns value: $(params.cachePatterns) - name: source value: oci://$(params.registry):{{hash}} - name: cachePath value: $(workspaces.source.path)/cache - name: workingdir value: $(workspaces.source.path)/repo - name: run-build image: $(params.image) workingDir: $(workspaces.source.path)/repo env: - name: LOCAL_CACHE_REPO value: $(workspaces.source.path)/cache/repo script: | set -x $(params.buildCommand) echo "Cache size is $(du -sh $(workspaces.source.path)/cache)" - name: cache-upload ref: resolver: cluster params: - name: name value: cache-upload - name: namespace value: openshift-pipelines - name: kind value: stepaction params: - name: patterns value: $(params.cachePatterns) - name: target value: oci://$(params.registry):{{hash}} - name: cachePath value: $(workspaces.source.path)/cache - name: workingdir value: $(workspaces.source.path)/repo - name: force-cache-upload value: $(params.force-cache-upload)
apiVersion: tekton.dev/v1
kind: Task
metadata:
name: java-demo-task
spec:
workspaces:
- name: source
params:
- name: repo_url
type: string
default: https://github.com/sample-organization/sample-java-project.git
- name: revision
type: string
default: main
- name: registry
type: string
default: image-registry.openshift-image-registry.svc:5000/sample-project/mvn-cache
- name: image
type: string
default: openjdk:latest
- name: buildCommand
type: string
default: "maven -Dmaven.repo.local=${LOCAL_CACHE_REPO} install"
- name: cachePatterns
type: array
default: ["**pom.xml"]
- name: force-cache-upload
type: string
default: "false"
steps:
- name: create-repo
image: $(params.image)
script: |
mkdir -p $(workspaces.source.path)/repo
chmod 777 $(workspaces.source.path)/repo
- name: fetch-repo
ref:
resolver: cluster
params:
- name: name
value: git-clone
- name: namespace
value: openshift-pipelines
- name: kind
value: stepaction
params:
- name: OUTPUT_PATH
value: $(workspaces.source.path)/repo
- name: URL
value: $(params.repo_url)
- name: REVISION
value: $(params.revision)
- name: cache-fetch
ref:
resolver: cluster
params:
- name: name
value: cache-fetch
- name: namespace
value: openshift-pipelines
- name: kind
value: stepaction
params:
- name: patterns
value: $(params.cachePatterns)
- name: source
value: oci://$(params.registry):{{hash}}
- name: cachePath
value: $(workspaces.source.path)/cache
- name: workingdir
value: $(workspaces.source.path)/repo
- name: run-build
image: $(params.image)
workingDir: $(workspaces.source.path)/repo
env:
- name: LOCAL_CACHE_REPO
value: $(workspaces.source.path)/cache/repo
script: |
set -x
$(params.buildCommand)
echo "Cache size is $(du -sh $(workspaces.source.path)/cache)"
- name: cache-upload
ref:
resolver: cluster
params:
- name: name
value: cache-upload
- name: namespace
value: openshift-pipelines
- name: kind
value: stepaction
params:
- name: patterns
value: $(params.cachePatterns)
- name: target
value: oci://$(params.registry):{{hash}}
- name: cachePath
value: $(workspaces.source.path)/cache
- name: workingdir
value: $(workspaces.source.path)/repo
- name: force-cache-upload
value: $(params.force-cache-upload)
パラメーター | 説明 | 型 | デフォルト値 |
---|---|---|---|
|
ハッシュを計算するファイルを選択するための正規表現。たとえば、Go プロジェクトの場合、キャッシュを計算するために |
| |
|
キャッシュを取得するためのソース URI。キャッシュハッシュを指定するには |
| |
| キャッシュコンテンツを抽出するためのパス。通常、このパスはワークスペース内にあります。 |
| |
| ハッシュを計算するためのファイルが配置されているパス。 |
| |
|
|
|
|
| Google 認証情報が保存されているパス。空の場合は無視されます。 |
| |
| AWS 設定ファイルへのパス。空の場合は無視されます。 |
| |
| AWS 認証情報ファイルへのパス。空の場合は無視されます。 |
| |
| S3、GCS、または Azure を設定するための Blob クエリーパラメーター。S3 アクセラレーション、FIPS、パススタイルのアドレス指定などの追加機能には、これらのオプションパラメーターを使用します。 |
|
結果 | 型 | 説明 |
---|---|---|
|
|
ステップがキャッシュをフェッチした場合は |
パラメーター | 説明 | 型 | デフォルト値 |
---|---|---|---|
|
ハッシュを計算するファイルを選択するための正規表現。たとえば、Go プロジェクトの場合、キャッシュを計算するために |
| |
|
キャッシュをアップロードするためのターゲット URI。 |
| |
| ステップがイメージにパックするキャッシュコンテンツのパス。通常、このパスはワークスペース内にあります。 |
| |
| ハッシュを計算するためのファイルが配置されているパス。 |
| |
|
|
|
|
|
|
|
|
|
|
|
|
| Google 認証情報が保存されているパス。空の場合は無視されます。 |
| |
| AWS 設定ファイルへのパス。空の場合は無視されます。 |
| |
| AWS 認証情報ファイルへのパス。空の場合は無視されます。 |
| |
| S3、GCS、または Azure を設定するための Blob クエリーパラメーター。S3 アクセラレーション、FIPS、パススタイルのアドレス指定などの追加機能には、これらのオプションパラメーターを使用します。 |
|
cache-upload
ステップアクションは結果を返しません。