Omnibus GitLab 開発者向けドキュメント
- 開発者セットアップ
- Omnibus GitLabアーキテクチャ
- Omnibus GitLabへの新しいサービスの追加
- パッチの作成
- リポジトリ、ブランチ、CIパイプライン
- リリースプロセス
- 独自のパッケージの構築
- カスタムブランチからのパッケージのビルド
- 非推奨メッセージの追加
- に属性を追加します。
public_attributes.json
gitlab-ctl
コマンドの追加- PostgreSQLバージョンの管理
- 同梱Chefのバージョンアップ
開発環境の構築
ローカル開発用の環境構築については、開発環境の構築に関するドキュメントを参照してください。
アーキテクチャの理解
このプロジェクトの様々なコンポーネントの完全な説明と、それらがどのように連携しているかについては、アーキテクチャ・ドキュメントをチェックしてください。
ライティングテスト
内部クックブックのいかなる変更もまた、仕様を必要とします。 特定の機能/バグのテストとは別に、提出されたマージリクエストがより多くのテストを含んでいる場合、大いに感謝されるでしょう。 これは、テストカバレッジが開発とともに成長することを保証するためです。
しかし、テストを実装するためのイシューを作成し、最初にコードを書いた人に割り当てなければなりません。
テストを実行するには、以下のコマンドを実行します(実行する前にbundle install
を実行する必要があるかもしれません)。
bundle exec rspec
マージリクエストガイドライン
新しい機能や、Omnibus GitLab のイシュー・トラッカーに登録されていないイシューに取り組んでいる場合は、イシューを作成し、自分がその課題に取り組んでいることを伝えたほうがよいでしょう。 また、他の人がそのイシューについて意見をくれるかもしれませんし、それがあなたの作業の助けになるかもしれません。
リクエストをマージすると、指定されたイシューが自動的にクローズされるように、変更をブランチ ⇦
良いマージリクエストは、適用可能性に基づいて、以下のコンポーネントを持っていることが期待されます:
- この変更が必要な理由を説明するマージリクエストの完全な説明
- 機能/バグ修正の実装コード
- ライティングテストで説明されているように、テスト
- 変更を説明する文書
- マージリクエストによってユーザー側の設定に変更が生じる場合は、次のように更新してください。
gitlab.rb.template
- 必要に応じて、変更を通知するためのChangelogエントリ。
注意:自動テストを実行するために、あなたのフォークで共有ランナーが有効になっていることを確認してください:
- 設定 -> CI/CDに移動します。
- ランナーの設定を拡大
- 共 有 ラン ナ ー が 有 効 に な っ て い な い 場 合 は 、”Enable shared Runner(共 有 ラン ナ ー を 有 効 に す る )” と い う ボ タ ン を ク リ ッ ク し て く だ さ い 。
単一のソフトウェア依存関係に対する変更の検証
パッケージ全体を毎回ビルドし直すのではなく、ひとつのソフトウェアだけをビルドしておくと便利なことがあります。 たとえば、新しいソフトウェア定義を追加するときなどです。 この方法を使えば、そのソフトウェアと依存関係だけを含む Omnibus パッケージをすばやくビルドすることができます。 ソフトウェア単体でのビルドを確認したら、それを Omnibus GitLab ビルドに追加してそこで確認します。 これを使うには
- 開発者の環境設定
-
simple.rbファイルをプロジェクトにコピーします。
cp doc/development/examples/simple.rb config/projects/
- テストするソフトウェアに合わせて、
config/projects/simple.rb
のdependency
を変更してください。 -
を実行してシンプルなプロジェクトをビルドします。
bundle exec omnibus build simple
インストール/アップグレード中の変更のテスト
再設定プロセスそのものではなく、インストール/アップグレードプロセスの変更に取り組んでいる場合は、scripts/repack-debツールを使って既存の GitLab deb にローカルブランチの変更を加えて素早くリパックすることができます。 これは、既存の deb ファイルをローカルブランチの内容を含む新しい deb にリパックします。
config/templates/package-scripts
files/gitlab-cookbook/
files/gitlab-ctl-commands
files/gitlab-ctl-commands-ee