GitLabで始めるDevOps実践:CI/CDワークフローの構築と活用

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などの高度機能が追加されます。

最初のプロジェクト作成

  1. GitLabのWeb UIにログインし、「New Project」をクリック
  2. 以下のいずれかのテンプレートまたはオプションを選択:
  • Create from template(Go、Node.js、Pythonなどのプロジェクト スケルトン)
  • Import project(GitHub、Bitbucketなどからの移行)
  • Create blank project(空のレポジトリ)
  1. 名称、説明、可視レベル(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環境を構築する可能性も容易に実現できます。

タグ: gitlab-ci yaml-pipeline DevOps pipelines-as-code gitlab-runner

6月15日 23:46 投稿