- 個人プロジェクト管理とCI/CD統合を中心に、GitLabを長期間使ってきた経験を紹介
- 初期には無料のプライベートリポジトリ提供がGitHubに対する大きな利点であり、その後もワークフローが完全に定着
- Container Registry機能を最も頻繁に活用しており、別途Docker Hubアカウントやトークンを管理せずにイメージを保存可能
- GitLab CIの設定ファイルベースのパイプライン、無料の共有ランナー、豊富なドキュメントなどが主な強みとして挙げられている
- 一方で、Webインターフェースの速度低下と機能過多が欠点として指摘されており、GitHubとGitLabを目的別に併用する方法が最も効率的
GitLabを使うようになった背景
- GitHubがプライベートリポジトリに料金を課していた時期に、GitLabが無料のプライベートリポジトリを提供していたため使い始めた
- その後GitHubが無料ポリシーを導入したが、すでにCIパイプライン・Dockerイメージ・デプロイスクリプトなどがGitLab中心で構築されており、移行の必要性はなくなった
Docker Registry機能
- すべてのGitLabプロジェクトにはContainer Registryが標準で含まれている
- ローカルまたはCIでイメージをビルドしてプッシュし、必要な場所でプルして使うというシンプルな流れ
- 別途Docker Hubアカウントやトークン管理が不要で、プル制限を気にする必要もない
- 個人プロジェクトには十分な機能であり、10GBの容量制限も実際には問題にならない
- 古いタグの整理とレイヤー共有によって、容量効率を維持できる
CI/CD環境
- GitLab CIは初期から**「設定ファイルベースのCI」**という概念を実装していた
.gitlab-ci.ymlファイルを追加するだけでパイプラインが自動実行される
- 設定がバージョン管理されるため、過去のパイプライン状態も追跡可能
- 基本パイプラインはイメージのビルド・プッシュ・選択的デプロイで構成
- 共有ランナーは無料だが速度は遅く、必要ならセルフホストランナーをVPSに簡単に導入できる
- CI/CDドキュメントは非常に充実しており、いったんパターンを習得すれば既存設定のコピー再利用で効率的に管理できる
不便な点
- Webインターフェースの速度が遅く、マージリクエスト・パイプライン・ログの切り替え時に待ち時間が発生する
- 最近やや改善したようだが、それでもGitHubより遅い
- 機能過多の問題がある
- 課題管理、Wiki、パッケージレジストリ、セキュリティスキャンなど多様な機能があるが、実際の利用率は約10%程度
- ただし、必要になったときにすでに組み込み機能を活用できるという潜在的な利点もある
コストとワークフロー
- 約12個の個人プロジェクトを無料で運用しており、アクティブなプロジェクトから停止した実験まで含まれる
- GitLabはプライベートな作業空間、GitHubは公開プロジェクトの共有空間として使い分けている
- GitHubはコラボレーションと可視性の確保に、GitLabは実験と自動化管理にそれぞれ適している
- 2つのプラットフォームを併用する構成が、ワークフローのバランスと効率性を保つ方法として機能している
3件のコメント
GitLab は CI/CD が優れているという評価がありますよね。
でも私は無料アカウントの制限があるので、日本語に対応していたとしても GitHub に手が伸びるんですよね。
Forgejo とそのベースである Gitea は GitHub の模倣品っぽい感じがして、あまり使う気になりません。
私たちはGiteaを使っていますが、そのクローンのようなUIイメージのおかげで学習コストが低く、導入しました。
GitLabは機能が多すぎて難しく、重いというフィードバックが多くありました。
Hacker Newsの意見
カスタマーサポート担当者はいなくなり、すべての問い合わせが営業チーム経由になっていて、ほとんどの機能が高価なUltimateプランに縛られている
“AI”ではない機能は、何年も同じ問題を抱えたまま放置されている
そのせいで今では営業メールが来るたびに、「いつになったら昔のような開発スピードが戻るんだろう?」というゲームをするようになった
2015〜2020年ごろは楽しく使っていたが、すべての機能が荒削りで、完成度よりも機能チェックリストを埋めることに集中していた
小さなチームが大企業と競争するには、仕方のない選択だったのかもしれない
10年経っても変わらず、GiteaやForgejoはずっと速いし、Go 1.26のリリース後はさらに良くなるはずだ
特にIssue検索が遅すぎて、もう二度と使う気にならない
2018年にBitbucketとConfluenceからGitLab Cloudへ移行したが、Atlassian製品のほうがずっと遅くて複雑だった
GitLabは軽くて速く感じられ、今でも大半はうまく動いている
最近Jira Cloudを使ってみたが、もっと遅くて使いづらかった
本当に驚くような挙動だ
サーバーの消費電力が10%減り、GitLabは不要な機能が多すぎてUIが窮屈だった
Forgejoはシンプルで、プロジェクトごとに機能を隠せる
ただし自動更新はなく、完成度は低めで、一部機能はちゃんと動かない
Jekyllテーマなのか自作なのかはわからないが、見て回ること自体が楽しかった
必要なCI、Issueトラッキングなどはそのまま維持しつつ、インターフェースは即座に読み込まれ、不要な機能もない
GitLab CIの文法のほうが好みだったが、ForgejoのAPIはあまり洗練されていない
それでもDBに直接アクセスできるので、カスタムスクリプトで対処できる
Kubernetesクラスターを立ち上げ、ForgejoとArgoを接続してテストしている
MicrosoftではなくCodebergのリソースを使うのが正しいのかよくわからない
CIはWoodpeckerというプロジェクトが担当しているようだが、GitLab CIと比べてどうなのか気になる
GitLabはGerritほどではないがスタック型MRをサポートしていて、force push後でもコメントを見られる
GitHub式の巨大PR中心文化は、生産性とレビュー文化を損なうと思う
LDAP同期設定のような管理機能には改善の余地があるが、CI/CDの文法はおおむね便利だ
2021〜2024年に毎日使っていて、バグ日誌を別に記録するほどだった
関連する経験は以前のコメントに残してある
GitHubのシンプルなIssueトラッカーのほうがずっと使いやすい
プロジェクト管理者はGitLabを好むかもしれないが、ユーザーの立場ではGitHubのほうが良いと感じる
今はGitHubを使っているが、はるかに簡単で効率的だ
GitLabは本当に嫌いだ
Dockerイメージの場合、レイヤーごとの制限があるだけで、全体容量はずっと大きくできる
関連ドキュメント: Storage Usage Quotas, Container Registry Issue
70GBのInterstellar REMUXを上げてみたい
「何かをしようとする → エラー → 検索 → 3〜8年前の公式バグレポートを発見」というパターンが繰り返される
多くの機能が80/20の完成度にとどまっていて、MRビューは遅すぎてつらい
関連する内容は以前のコメントに残してある
Maven、NPM、PythonパッケージレジストリをCIパイプラインに統合できる点は気に入っている
ただし機能が多すぎて、どの画面も2倍は遅い
その後Azure DevOpsに変わったが、遅くて品質ゲートも弱い
ビルドサーバーがVMに変わってからはIOPS制限のせいでビルドが遅くなった
GitLabに戻りたいし、性能改善に貢献してもいいと思っている