Kubernetesパイプライン

Updated 2 years ago by Admin

このドキュメントでは、Kubernetesパイプラインを表すデータ構造を紹介します。 Kubernetesパイプラインは、Kubernetesポッド内のコンテナとしてパイプラインステップを実行する継続的インテグレーションパイプラインです。


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は、Kubernetesパイプラインを表すために使用される最上位オブジェクトです。 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 volumes: Volume[];
10 node: [string, string];
11 trigger: Conditions;
12
13 image_pull_secrets: string[]
14 }
kind属性

リソースの種類です。 pipelineに設定する必要があります。

type属性

リソースのタイプです。 kubernetesに設定する必要があります。

platform

パイプラインを実行する必要があるターゲットオペレーティングシステムとアーキテクチャです。この属性のタイプはPlatformで、推奨されます。空の場合、デフォルトのオペレーティングシステムとアーキテクチャはlinuxamd64です。

workspaceセクション

ソースコードが複製される作業ディレクトリと、各パイプラインステップのデフォルトの作業ディレクトリです。この属性のタイプはWorkspace で、オプションです。

cloneセクション

パイプラインクローンの動作を定義し、自動クローンを無効にするために使用できます。この属性はCloneタイプで、オプションです。

stepsセクション

パイプラインステップを定義します。Stepタイプの配列で、必須です。配列は空であってはならず、配列の順序を維持する必要があります。

node属性

パイプラインを特定のランナーまたはランナーのグループにルーティングするために使用されるキーと値のペアを定義します。この属性のタイプは[string, string] で、オプションです。

triggerセクション

パイプラインをスキップするかどうかを決定するために使用される条件です。この属性のタイプはConditionsで、オプションです。

image_pull_secrets属性

プライベートDockerイメージを引用するために使用されるシークレットのリストです。 string型の配列で、オプションです。


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 command: string[];
3 commands: string[];
4 detach: boolean;
5 entrypoint: string[];
6 environment: [string, string | Secret];
7 failure: Failure;
8 image: string;
9 name: string;
10 network_mode string;
11 privileged boolean;
12 pull: Pull;
13 user string;
14 volumes: Volume[];
15 when: Conditions;
16 depends_on: string[]
17 }
commands属性

Dockerコンテナ内で実行されるシェルコマンドのリストを定義します。 ENTRYPOINTとしてデフォルトのコンテナー シェル (非規範的) を使用して実行されます。 string型の配列で、必須です。

command属性

COMMANDを上書きします。これはサービスコンテナでのみ使用する必要があり、 commands属性では使用できません。 [string]タイプの配列で、オプションです。

detach属性

detach属性は、Dockerコンテナを開始してからバックグラウンドで実行するようにシステムに指示します。この値はboolean で、オプションです。

entrypoint属性

ENTRYPOINTを上書きします。これはサービスコンテナでのみ使用する必要があり、 commands属性では使用できません。 [string]タイプの配列で、オプションです。

environment属性

パイプラインステップをスコープとする環境変数のリストを定義します。この属性のタイプは[string, string | Secret]で、オプションです。

failure属性

システムが障害を処理する方法を定義します。デフォルト値は、失敗したステップが常にパイプライン全体に失敗することをalways ignoreの値は、失敗が無視されることを示します。この属性は列挙型のFailureで、オプションです。

image属性

Dockerイメージの名前です。イメージ名にはタグを含める必要があり、指定しない場合はデフォルトで最新のタグになります。この値はstring型で、必須です。

name属性

ステップの名前です。この値は必須であり、[a-zA-Z0-9_-] と一致する必要があります。この値はユーザーインターフェイス (非規範) に表示され、ステップ (非規範) を識別するために使用されます。

network_mode属性

Dockerコンテナが接続されているデフォルトのネットワークを上書きします。たとえば、 hostまたはbridge などです。この属性はstring型で、オプションです。

privileged属性

デフォルトのDockerセキュリティポリシーを上書きし、コンテナにホストマシンへのほぼ完全なアクセスを許可します。この属性はboolean で、オプションです。

pull属性

システムがイメージを引用する方法とタイミングを定義します。この属性はPullの列挙型で、オプションです。

user属性

パイプラインコマンドまたはエントリポイントを実行するときに使用されるデフォルトのユーザー名またはuidを上書きします。この属性は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型の配列で、オプションです。


Secretオブジェクト

Secretは、シークレットの名前付きソースを定義します。

1  class Secret {
2 from_secret: string;
3 }


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 promote,
4 pull_request,
5 push,
6 rollback,
7 tag,
8 }

Status列挙型

Status列挙型は、パイプラインステータスのリストを提供します。パイプラインがまだ実行されている場合でも、デフォルトのパイプライン状態はsuccessです。

1  enum Status {
2 failure,
3 success,
4 }
Pull列挙型

Pull enumは、Dockerイメージをレジストリから引用する必要があるかどうか、およびいつ引用するかを定義します。

1  enum Pull {
2 always,
3 never,
4 if-not-exists,
5 }
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 }


How did we do?