どこに貢献するか

Screwdriver はモジュールアーキテクチャを採用しているので、様々な機能がリポジトリに分割されています。

Screwdriver を使用した継続的デリバリーのワークフロー全体を理解するために、 architecture diagram を確認してください。次節以降の説明が、どこにどんなコードがあるのかを特定するのに役立つでしょう。

Screwdriver API

screwdriver リポジトリは screwdriver の核となる API エンドポイントを提供しているリポジトリです。API は hapijs framework をベースにしており、数々のプラグインとして実装されています。

Launcher

launcher はステップの実行や、ビルドコンテナ内部の管理を行います。Go で書かれており、ビルドコンテナにバイナリとしてマウントされます。

Executors

Executor は、全ての与えられたジョブについてビルドコンテナを管理するのに使用されます。いくつかの executor が実装されていて、共通のインターフェースに従うように設計されています。Executor の実装は node で書かれています。

executor router は、ビルドを特定の executor へルートするための一般的な executor です。

Models

オブジェクトモデルにより、データストア(データベース)へ保存されるデータの定義がされています。これは2つの部分からなります。

Datastores

API と データストレージの間のインターフェースとして実装されています。nodejs で書かれたいくつかの実装があります。

Artifacts

Artifact Store (上記のデータストアと混同しないよう注意) はログの出力や、shared step、テンプレート、テストカバレッジやその他ビルド中に生成された artifacts を保存するために使用されます。log service は Launcher からログを読み取り、 store へアップロードする Go のツールです。artifact-bookend は artifacts を store へアップロードするのに使用されます。

Source Code Management

SCM の実装は API と SCM の間のインターフェースとして使用されます。nodejs で書かれたいくつかの実装があります。

Templates

テンプレートは、事前に定義することで screwdriver.yaml 内でジョブの定義を置き換えることの出来るコードスニペットです。テンプレートは、一連の定義されたステップとそれが実行される Docker イメージを含んでいます。

Config Parser

screwdriver.yaml の設定を validate したり parse する node モジュール

Guide & Homepage

Guide はドキュメントです!Screwdriver について知りたいことが全てあります。 HomepageScrewdriver.cd を動かすためのものです。

UI

Ember ベースの Screwdriver のユーザインターフェースです。

Miscellaneous Tools

新規に Screwdriver のリポジトリを作成する

Screwdriver のリポジトリを新しく作成する際の手助けとなるツールもいくつかあります。

新しいリポジトリを作成したら、他の人が追加したリポジトリがどこに該当するか分かるようにこのページを編集してください。

Screwdriver.cd のテストと例

screwdriver-cd-test には多くのサンプルリポジトリ/screwdriver.yaml と Screwdriver.cd の acceptance test があります。