どこに貢献するか

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

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

Screwdriver API

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

Models

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

Datastores

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

Source Code Management

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

scm-router は、指定されたscmにビルドをルーティングする汎用のscmプラグインです。

Notifications

APIは、ユーザーに通知を送ることもできます。

Parsers

Parsersは、Screwdriverの様々なフローを検証し、解析するのに役立ちます。

Templates and Commands

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

コマンドとは、あらかじめ定義されたコードの断片で、screwdriver.yamlのステップ定義を置き換えるために使用できます。コマンドにはすでに定義したコマンドを含めることができます。

Launcher

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

Queue

queue-service は、Screwdriverがビルドをエンキューして処理するための、可用性の高いRESTベースのキューサービスです。 これは、Resqueを利用して、キューイングメカニズムを提供します。

Executors

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

executor-queue は、Redisのキューを介してビルドをルーティングするための汎用 executor です。 executor router は、ビルドを特定の executor へルートするための汎用 executor です。

Artifacts

Artifact Store (上記のデータストアと混同しないよう注意) はログの出力や、shared step、テンプレート、テストカバレッジやその他ビルド中に生成された artifacts を保存するために使用されます。

UI

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

Guide and Homepage

Guide はドキュメントです!Screwdriver について知りたいことが全てあります。 HomepageScrewdriver.cd を動かすためのものです。 Community は オープンソースコミュニティの議事録やドキュメントが保管される場所です。

Miscellaneous Tools

Bootstrap SD

Screwdriverを使い始める際に役立つリポジトリです。

Other

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

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

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

テストと例

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