GitLabは、コード管理からテスト、ビルド、デプロイまでを一貫して支援するオープンソース型DevOpsプラットフォームです。単なるコードレポジトリだけでなく、itters, Merge Request、Issue、Package Registry、Security Scanningなど、開発ライフサイクル全般にわたる機能を内蔵しています。これにより、チームはトランスフォーメーションを効率化し、品質向上とデリバリー速度の両立を図ることができます。
導入・セットアップ
オンプレミス環境(Ubuntu / Debian向け)
以下の手順でGitLab EE(Enterprise Edition)をローカル環境に構築可能です。
# 必須パッケージのインストール
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
# GitLab公式リポジトリの追加
curl -sL https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
# GitLab EE本体のインストール(外部URLを設定)
sudo EXTERNAL_URL="https://gitlab.example.com" apt-get install gitlab-ee
インストール完了後、sudo gitlab-ctl reconfigureで初期設定が自動実行されます。これにより、Nginx、PostgreSQL、Redis、GitLab-Runnerが統合された環境が構築されます。
クラウド版の利用
GitLab.comでは、個人アカウントで無料 edition(GitLab Free)が使用可能です。サインアップ後、ほぼ30秒以内にプロジェクトの作成と初期設定が完了します。有料プランにすることでAdvanced SecurityやGroup Jesselingなどの高度機能が追加されます。
最初のプロジェクト作成
- GitLabのWeb UIにログインし、「New Project」をクリック
- 以下のいずれかのテンプレートまたはオプションを選択:
- Create from template(Go、Node.js、Pythonなどのプロジェクト スケルトン)
- Import project(GitHub、Bitbucketなどからの移行)
- Create blank project(空のレポジトリ)
- 名称、説明、可視レベル(Public / Internal / Private)を設定
カジュアルなGit操作の流れ
リモートリポジトリをローカルにクローンし、変更を反映するまでの典型例です。
# クローンの取得
git clone https://gitlab.com/<あなたのユーザー名>/sample-app.git
# 新規ブランチの作成と切り替え
git checkout -b feature/user-auth
# ファイル変更後、ステージへ
git add src/auth/module.js
# コミットメッセージの記述
git commit -m "feat: ユーザー認証ロジックを追加"
# リモートへプッシュ
git push origin feature/user-auth
CI/CDパイプラインの定義
GitLabでは、.gitlab-ci.ymlというYAML形式の設定ファイルにより、ビルド・テスト・デプロイのワークフローを宣言的に記述します。以下はNode.jsプロジェクトを対象とした最低限のワークフローです。
image: node:20-alpine
stages:
- verify
- build
- deploy
variables:
NODE_ENV: "production"
before_script:
- npm ci --cache .npm --prefer-offline
lint_check:
stage: verify
script:
- npm run lint
unit_test:
stage: verify
script:
- npm test
build_package:
stage: build
script:
- npm run build
artifacts:
paths:
- dist/
expire_in: 1 week
deploy_staging:
stage: deploy
script:
- echo "Deploying to staging environment..."
- ./scripts/deploy.sh staging
environment:
name: staging
url: https://staging.example.com
rules:
- if: $CI_COMMIT_BRANCH == "develop"
deploy_production:
stage: deploy
script:
- echo "Deploying to production environment..."
- ./scripts/deploy.sh production
environment:
name: production
url: https://www.example.com
rules:
- if: $CI_COMMIT_BRANCH == "main"
when: manual
この定義により、プルリクエスト作成時に自動でLSPとテストが実行され、developブランチへのマージでステージング環境へ自動デプロイ、mainブランチへのマージは手動承認で本番環境へ推出されるようになります。
まとめ
GitLabは、開発者側から見たUIの直感性、運用者側から見たCI/CDの柔軟性、セキュリティ管理の厳密性のバランスを取ったプラットフォームです。標準機能だけで十分な現場が多く、個別ツールの組み合わせによる複雑なCI/CD環境を構築する可能性も容易に実現できます。