Execパイプライン
このドキュメントでは、execパイプラインを表すデータ構造を紹介します。execパイプラインは、ホストマシンでコマンドを直接実行する継続的インテグレーションパイプラインです。
Resource
インターフェイス
Resource
Pipeline
を含むすべてのトップレベルオブジェクトによって実装されます。
1 interface Resource {
2 kind: string;
3 type: string;
4 name: string;
5 concurrency: Concurrency;
6 depends_on: string[];
7 }
kind
属性
リソースの実装を識別するために使用されるリソースの種類を定義します。この属性はstring
型で、必須です。
type
属性
リソースの実装を識別するために使用されるリソースのタイプを定義します。この属性はstring
型で、必須です。
name
属性
リソースの名前です。この値は必須であり、 [a-zA-Z0-9_-]
と一致する必要があります。この値はユーザーインターフェイス (非規範) に表示され、パイプライン (非規範) を識別するために使用されます。
concurrency
属性
パイプラインステージの同時実行制限を定義します。この属性のタイプはConcurrency
で、オプションです。
depends_on
属性
指定されたパイプラインが完了状態になるまでパイプラインの実行を延期するために使用される、パイプラインの依存関係のリストを定義します。 string
型の配列で、オプションです。
Pipeline
オブジェクト
Pipeline
は、execパイプラインを表すために使用される最上位オブジェクトです。 Pipeline
オブジェクトは、 Resource
インターフェースを実装します。
1 class Pipeline : Resource {
2 kind: string;
3 type: string;
4 name: string
5 platform: Platform;
6 workspace: Workspace;
7 clone: Clone;
8 steps: Step[];
9 trigger: Conditions;
10 }
kind
属性
リソースの種類です。 pipeline
に設定する必要があります。
type
属性
リソースのタイプです。 exec
に設定する必要があります。
platform
部
パイプラインを実行する必要があるターゲットオペレーティングシステムとアーキテクチャです。この属性のタイプはPlatform
で、推奨されます。空の場合、デフォルトのオペレーティングシステムとアーキテクチャはlinux
とamd64
です。
workspace
セクション
ソースコードが複製される作業ディレクトリと、各パイプラインステップのデフォルトの作業ディレクトリです。この属性のタイプはWorkspace
で、オプションです。
clone
セクション
パイプラインクローンの動作を定義し、自動クローンを無効にするために使用できます。この属性はClone
タイプで、オプションです。
steps
セクション
パイプラインステップを定義します。 Step
タイプの配列で、必須です。配列は空であってはならず、配列の順序を維持する必要があります。
trigger
セクション
パイプラインをスキップするかどうかを決定するために使用される条件です。この属性のタイプはConditions
で、オプションです。
Platform
オブジェクト
Platform
オブジェクトは、パイプラインのターゲットOSとアーキテクチャを定義し、パイプラインを正しいインスタンス (非規範的) にルーティングするために使用されます。
1 class Platform {
2 os: OS;
3 arch: Arch;
4 variant: string;
5 version: string;
6 }
os
属性
ターゲットオペレーティングシステムを定義します。OS
タイプの列挙で、推奨されます。空の場合、オペレーティングシステムはデフォルトでLinuxになります。
arch
属性
ターゲットアーキテクチャを定義します。Arch
タイプの列挙で、推奨されます。空の場合、アーキテクチャはデフォルトでamd64になります。
variant
属性
アーキテクチャバリアントを定義します。これは、armアーキテクチャ (非規範的) と組み合わせて最も一般的に使用され、armv7、armv8 など (非規範的) を区別するために使用できます。
version
属性
オペレーティングシステムのバージョンを定義します。これは、Windows オペレーティングシステム (非規範的) と組み合わせて最も一般的に使用され、1809、1903 など (非規範的) を区別するために使用できます。
Clone
オブジェクト
Clone
オブジェクトは、パイプラインのクローン動作を定義します。
1 class Clone {
2 depth: number;
3 disable: boolean;
4 }
depth
属性
クローンの深さを構成します。これはオプションのnumber
です。空の場合、完全なリポジトリが複製される可能性があります (非規範的)。
disable
属性
リポジトリのクローン作成を無効にします。これはオプションのboolean
値です。独自のカスタムクローンロジック (非規範的) の実装を無効にする必要がある場合に役立ちます。
Step
オブジェクト
Step
オブジェクトは、パイプラインステップを定義します。
1 class Step {
2 name: string;
3 failure: Failure;
4 commands: string[];
5 environment: [string, string];
6 when: Conditions;
7 depends_on: string[];
8 }
name
属性
ステップの名前です。この値は必須であり、[a-zA-Z0-9_-] と一致する必要があります。この値はユーザーインターフェイス (非規範) に表示され、ステップ (非規範) を識別するために使用されます。
failure
属性
システムが障害を処理する方法を定義します。デフォルト値は、失敗したステップが常にパイプライン全体に失敗することを、always
ignore
の値は、失敗が無視されることを示します。この属性は列挙型のFailure
で、オプションです。
commands
属性
ホストマシンで実行されるシェルコマンドのリストを定義します。 string
型の配列で、必須です。
environment
属性
パイプラインステップをスコープとする環境変数のリストを定義します。この属性のタイプは[string, string]
で、オプションです。
when
セクション
ステップをスキップするかどうかを決定するために使用される条件です。この属性のタイプはConditions
で、オプションです。
depends_on
属性
指定されたステップが完了状態になるまでステップの実行を延期するために使用される、ステップの依存関係のリストを定義します。この属性はstring
型で、オプションです。
Conditions
オブジェクト
Conditions
オブジェクトは、一連の条件を定義します。いずれかの条件がtrueと評価された場合、その親オブジェクトはスキップされます。
1 class Conditions {
2 action: Constraint | string[];
3 branch: Constraint | string[];
4 cron: Constraint | string[];
5 event: Constraint | Event[];
6 instance: Constraint | string[];
7 ref: Constraint | string[];
8 repo: Constraint | string[];
9 status: Constraint | Status[];
10 target: Constraint | string[];
11 }
action
属性
ビルドアクションに基づいて一致基準を定義します。ビルドアクションは、Webhookアクション (非規範的) と同義です。この属性は、Constraint
string
タイプの配列で、オプションです。
branch
属性
gitブランチに基づいて一致基準を定義します。この属性は、Constraint
string
タイプの配列で、オプションです。
cron
属性
ビルドをトリガーしたcronジョブに基づいて一致条件を定義します。この属性は、Constraint
string
タイプの配列で、オプションです。
event
属性
ビルドイベントに基づいて一致基準を定義します。ビルドイベントはWebhookイベントと同義です (非規範的)。この属性はConstraint
Event
タイプの配列で、オプションです。
instance
属性
インスタンスのホスト名に基づいて一致基準を定義します。この属性は、Constraint
string
タイプの配列で、オプションです。
ref
属性
git参照に基づいて一致基準を定義します。この属性は、Constraint
string
タイプの配列で、オプションです。
repo
属性
リポジトリ名に基づいて一致基準を定義します。この属性は、Constraint
string
タイプの配列で、オプションです。
status
属性
パイプラインのステータスに基づいて一致基準を定義します。この属性は、Constraint
Status
タイプの配列で、オプションです。
target
属性
ターゲット環境に基づいて一致基準を定義します。ターゲット環境は通常、プロモートまたはロールバックイベントによって定義されます (非規範的)。この属性は、Constraint
string
タイプの配列で、オプションです。
Constraint
オブジェクト
Constraint
オブジェクトは、パターンマッチング条件を定義します。パターンマッチングがfalseと評価された場合、親オブジェクトはスキップされます。
1 class Constraint {
2 exclude: string[];
3 include: string[];
4 }
include
属性
一致するパターンのリストです。一致するパターンがない場合、親オブジェクトはスキップされます。 string
型の配列で、オプションです。
exclude
属性
一致するパターンのリストです。いずれかのパターンが一致する場合、親オブジェクトはスキップされます。 string
型の配列で、オプションです。
Concurrency
オブジェクト
Concurrency
オブジェクトは、名前付きパイプラインの同時実行制限を定義します。
1 class Concurrency {
2 limit: number;
3 }
Workspace
オブジェクト
Workspace
オブジェクトは、ソースコードが複製されるパス (非規範的) および各パイプラインステップのデフォルトの作業ディレクトリ (非規範的) を定義します。
1 class Workspace {
2 path: string;
3 }
列挙
Event
列挙型
Event
enum は、パイプラインイベントのリストを提供します。この値は、パイプラインをトリガーしたイベントを表します。
1 enum Event {
2 cron,
3 custom,
4 promote,
5 pull_request,
6 push,
7 rollback,
8 tag,
9 }
Status
列挙型
Status
列挙型は、パイプラインステータスのリストを提供します。パイプラインがまだ実行されている場合でも、デフォルトのパイプライン状態はsuccess
です。
1 enum Status {
2 failure,
3 success,
4 }
Failure
列挙型
Failure
enumは、失敗動作のリストを定義します。この値はalways
で、失敗すると親プロセスが失敗することを示します。値ignore
は、失敗が静かに無視されることを示します。
1 enum Failure {
2 always,
3 ignore,
4 }
OS
列挙型
OS
列挙型は、サポートされているオペレーティングシステムのリストを提供します。
1 enum OS {
2 darwin,
3 dragonfly,
4 freebsd,
5 linux,
6 netbsd,
7 openbsd,
8 solaris,
9 windows,
10 }
Arch
列挙型
Arch
enumはサポートされているチップアーキテクチャのリストを提供します。
1 enum Arch {
2 386,
3 amd64,
4 arm64,
5 arm,
6 }