SSHパイプライン

Updated 2 years ago by Admin

このドキュメントでは、sshパイプラインを表すデータ構造を紹介します。 sshパイプラインは、sshプロトコルを使用してリモートサーバーでワークロードを実行する継続的インテグレーションパイプラインです。


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は、sshパイプラインを表すために使用される最上位オブジェクトです。 Pipelineオブジェクトは、 Resourceインターフェースを実装します。

1  class Pipeline : Resource {
2 kind: string;
3 type: string;
4 name: string
5 server Server;
6 platform: Platform;
7 workspace: Workspace;
8 clone: Clone;
9 steps: Step[];
10 trigger: Conditions;
11 }
kind属性

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

type属性

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

serverセクション

リモートサーバーアドレスと認証資格情報です。この属性のタイプはServerで、必須です。

platform

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

workspaceセクション

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

cloneセクション

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

stepsセクション

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

triggerセクション

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


Serverオブジェクト

Serverオブジェクトは、パイプラインの複製動作を定義します。

1  class Clone {
2 host: string | Secret;
3 user: string | Secret;
4 password string | Secret;
5 ssh_key string | Secret;
6 }
host属性

サーバーのホストアドレスを設定します。ホストアドレスにはポート番号が含まれる場合があります。これは必須のstringまたはSecret値です。

user属性

サーバーでの認証に使用されるユーザー名を構成します。これは必須のstringまたはSecret値です。

password属性

サーバーでの認証に使用されるパスワードを構成します。これはオプションのstringまたはSecret値です。

ssh_key属性

サーバーでの認証に使用されるsshキーを構成します。これはオプションのstringまたはSecret値です。


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型の配列で、オプションです。


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列挙型

Eventenumは、パイプラインイベントのリストを提供します。この値は、パイプラインをトリガーしたイベントを表します。

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列挙型

Failureenumは、失敗動作のリストを定義します。この値は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列挙型

Archenumはサポートされているチップアーキテクチャのリストを提供します。

1  enum Arch {
2 386,
3 amd64,
4 arm64,
5 arm,
6 }


How did we do?