1. 構築しようと思った経緯
社会人になって、そしてエンジニアの仕事に触れて思ったのです。エンジニアの範囲はとんでもなく幅広いと(今更…)。
全部は到底カバーできないと…
なので、基本的な「Git でコード管理」を中心に据えて、そこから横展開させた関係箇所いろいろを構築してみようと考えたのです。
これができれば、プロジェクトにおけるコード実装回りに関係するシステムでは、何をしているかを理解する(気分になれる)と思います。
2. 目指す構成図
全体の構成図と用語説明を記載します。
2.1. 実装したいものの定義
基本的な「Git でコード管理」を中心に据えて横展開させた関係箇所にはなにがあるのでしょうか・・・?
列挙するとこれらのように広がっていくと思います。
-
プロジェクトにおけるバージョン管理は Git でしている →Git を基盤とした Web アプリ
- なにがある →GitHub, GitLab, Bitbucket, GitBucket があると思います。(Subversion?知らない子です)
- 有名どころだと GitHub と GitLab の 2 択になるでしょう。
- 今回は自分で構築することで勉強することが目的
- 「オンプレミス版がある GitLab を採用」
-
GitLab 周りのアプリはどうするか?
- GitLab の機能のなかで、無料枠かつ学習コストが年末年始内に終わりそうなものをさがしてみましょう。
- CI/CD は業界に浸透している機能&学習コストもちょうどいいのではないでしょうか。
- CI/CD は Runner という別環境で実行する。かつ、実行内容によって OS も選択するべき。
- 「GitLab Runner&WindowsOS が必要」
-
全体のマシン構成はどうすべきか
- 最近は SaaS だが、個人利用はひとを選ぶのでは → 仮想マシンを採用したほうがいい気がします。
- 仮想マシンはどうやって?→ 自分の PC で Hyper-V を日常的に使っていたため、記事では Hyper-V を採用します。
- アプリと仮想マシンは 1 対 1 対応?→ 流石にそれは重すぎに思います。
- では?→Docker コンテナ と Windows コンテナを採用してみよう。
- どれをコンテナにするか?→GitLab Runner で管理する環境(Runner)は、扱う言語、前準備の種類、コンパイラなどによって環境を区分分けする必要があるのではないか?
- GitLab は?→ インストールの簡潔さから、GitLab Runner と別仮想マシンに Docker コンテナを使って導入するのはどうか。
- 「GitLab と GitLab Runner(OS2 種類それぞれ)をそれぞれ別仮想マシンにインストールする」
- 「それぞれ Docker コンテナ or Windows コンテナでインストールする」
-
CI/CD ではどんなことをするか
- CI/CD とは、完成したコードに対して、前準備~テスト~ビルド~デプロイをしてくれる仕組みです。
- 年末年始ではテストケースを考えたりするまでの時間自体が足りないでしょう。
- 範囲は → 何かしらの前準備+ビルド がちょうどいいと思います。
- 「CI/CD によって、前準備&ビルドが可能」
-
というわけで機能要件をざっくりと
- Hyper-V で構築された仮想マシンが 3 つ必要
- OS は Linux が 2 つ、Windows が 1 つ
- Linux の GitLab 用仮想マシンには Docker をインストールし、Docker コンテナに GitLab をインストールする
- Linux の GitLab Runner 用仮想マシンには Docker をインストールし、Docker コンテナに GitLab Runner をインストールする(用途ごとにコンテナは分ける)
- Windows の GitLab Runner 用仮想マシンには、Windows コンテナに GitLab Runner をインストールする(用途ごとにコンテナは分ける)
- CI/CD によって、前準備&ビルドが可能
2.2. 構成について
- Hyper-V で構築された VM が 3 つ(GitLab 用、GitLab Runner 用がふたつ)がまず必要です。
- GitLab Runner が使う OS はそれぞれ Windows と Linux(CI/CD に挟む処理に windows or linux のみで行う処理がある場合に備えて)を想定しています。
- GitLab Runner (windows)には Runner ごとの環境をWindows コンテナで用意します。
- GitLab Runner (linux)には Runner ごとの環境を Docker コンテナで用意します。
2.3. 用語説明
| 用語 | 説明 |
|---|---|
| GitLab | git を基盤とした Web アプリ。ソースコードの管理やその他もろもろができます。 |
| Hyper-V | 仮想マシンを作成、管理、実行できるようにするハードウェア仮想化機能を提供する、ハイパーバイザー型のシステムです。 |
| ハイパーバイザー型 | ハイパーバイザーが CPU・メモリに対する操作を直接行う(ホスト型と微妙に違う)仮想化技術です。 |
| GitLab Runner | GitLab の CI/CD パイプラインで定義されたジョブを実行する環境を提供します。 |
| CI/CD | (ここでは GitLab の)リポジトリのマージ等をトリガーにして、自動的にソースの品質チェック~ビルド~デプロイを行う手法を表します。 |
| CI/CD パイプライン | CI/CD を一連の流れとしてまとめたものです。 |
| Windows コンテナ | Docker コンテナの windows 版?(詳細は公式サイト) |
3. ロードマップ
- 1 全体的な説明 ★ 今ここ
- 2 仮想マシンを構築
- 3 GitLab の導入と GitLab Runner の導入
- 4 GitLab Runner 設定
- 5 テストラン
目標
- 2026/01/02 までにはこちらを書きたいなと思ってます。Windowsコンテナに結構手間取ってますね
>_<
