概要
GitLab は、Git リポジトリ管理・CI/CD・課題管理・コードレビュー・セキュリティスキャンまでを一体化した DevSecOps プラットフォームです。オンプレミス(Self-Managed)と SaaS(GitLab.com)の両方に対応します。
主な強み
- リポジトリ〜デプロイまでの一気通貫な体験
- GitLab CI によるパイプライン自動化(YAML定義)
- Issue / MR / Wiki / パッケージ / コンテナレジストリ 統合
- セルフホストで権限・ネットワークを手元で制御可能
- ホスティング
- SaaS / Self-Managed
- 代表機能
- Projects, Groups, CI/CD, Runner, MR, Issue, Milestone
- 用途
- Web / モバイル / バックエンド / IaC / データ基盤
- 認証
- SAML / LDAP / OIDC / SCIM(エディション依存)
基本
初期セットアップ(SaaS想定)
- GitLab.com にサインアップ → Group / Project を作成
- プロジェクトの
SSHまたはHTTPURL を取得 - ローカルで Git を設定し、初回 push
# SSH鍵作成(未作成なら)
ssh-keygen -t ed25519 -C "you@example.com"
cat ~/.ssh/id_ed25519.pub # 公開鍵を GitLab に登録
# 新規プロジェクトを clone
git clone git@gitlab.com:your-group/your-project.git
cd your-project
# 初回コミット
git add .
git commit -m "chore: initial commit"
git push -u origin main
GitLab CI の最小構成
.gitlab-ci.yml をリポジトリ直下に置くと push をトリガにパイプラインが動きます。
# .gitlab-ci.yml
stages: [build, test, deploy]
variables:
NODE_ENV: production
build:
stage: build
image: node:20
script:
- npm ci
- npm run build
artifacts:
paths:
- dist/
test:
stage: test
image: node:20
script:
- npm test -- --ci
deploy:
stage: deploy
image: alpine:3.20
rules:
- if: '$CI_COMMIT_BRANCH == "main"'
script:
- echo "Deploy with rsync or kubectl here"
基礎
Runner の種類
- Shared Runner(SaaS 共有)
- Group/Project Runner(専用)
- Self-Managed Runner(オンプレ・VM・K8s)
# Linux での GitLab Runner インストール例(自己管理)
curl -L --output gitlab-runner.deb https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_amd64.deb
sudo dpkg -i gitlab-runner.deb
sudo gitlab-runner register # トークンは GitLab 画面から
MR(Merge Request)フロー
- 課題(Issue)→ ブランチ切り出し
- コミット / Push → CI が実行
- レビュー / アサイン / ラベル運用
- Squash & Merge / Rebase Merge を選択
# ブランチ命名例
git switch -c feat/login-oauth2
# 変更 → コミット → Push
git push -u origin feat/login-oauth2
応用
モノレポとパイプラインの最適化
rules:changesで差分ディレクトリのみビルドneeds:でジョブ依存を明示して並列化workflow: rules:でブランチ/タグごとに実行可否を制御
# .gitlab-ci.yml(差分ビルド例)
stages: [lint, build, test]
lint:
stage: lint
image: node:20
script: [ "npm run lint" ]
rules:
- changes:
- apps/web/**/*
- packages/ui/**/*
build_web:
stage: build
image: node:20
script: [ "npm ci", "npm run build -w apps/web" ]
rules:
- changes: [ "apps/web/**/*" ]
needs: [lint]
test_web:
stage: test
image: node:20
script: [ "npm test -w apps/web -- --ci" ]
needs: [build_web]
セキュリティ(SAST/DAST/Container)
GitLab Ultimate などではテンプレートの include で各スキャナを簡単導入できます。
include:
- template: Security/SAST.gitlab-ci.yml
- template: Security/Dependency-Scanning.gitlab-ci.yml
- template: Security/Container-Scanning.gitlab-ci.yml
- template: Security/DAST.gitlab-ci.yml
発展
環境ごとのデプロイとレビューアプリ
environments を使って Review Apps を作成し、MRごとにプレビューURLを発行できます。
deploy_review:
stage: deploy
image: node:20
script:
- npm ci && npm run build
- ./scripts/deploy_review.sh "$CI_ENVIRONMENT_SLUG"
environment:
name: review/$CI_COMMIT_REF_SLUG
url: https://review.example.com/$CI_COMMIT_REF_SLUG/
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
マルチプロジェクト・パイプライン / 子パイプライン
trigger_build:
stage: build
trigger:
include: path/to/child/.gitlab-ci.yml
strategy: depend
最新情報
/data/news.json 読み込み| 日付 | タイトル | リンク |
|---|---|---|
| FANBOXで『開発テスター募集』を公開しました | Open | |
| 技術ドキュメント『Cluster Creator Kit研究ラボ』を公開 | Open | |
| アニメーションラボ トップページ公開 | Open | |
| スクランブルスクール|新学期特設ページ公開 | Open | |
| スクランブルスクール|選挙管理委員会 特設ページ更新 | Open | |
| スクランブルシティー|ワールドマップ機能を追加 | Open | |
| スクランブルシティー|市民データベースβ版公開 | Open | |
| スクランブルストーリー|新連載『青龍の姫』スタート | Open | |
| スクランブルストーリー|物語アーカイブ機能を実装 | Open | |
| プログラミングラボ|JSON入門ページを公開 | Open | |
| プログラミングラボ|SVGジェネレーターを公開 | Open | |
| 青空プログラミング|ページ公開 | Open | |
| 青空プログラミング|子ども向けアルゴリズム講座スタート | Open | |
| スクランブルラジオ|ページ公開 | Open | |
| スクランブルシティー|施設ガイド(街の歩き方)を追加 | Open | |
| スクランブルストーリー|キャラクター一覧ページを公開 | Open | |
| プログラミングラボ|ロゴデザイン学習ページを公開 | Open | |
| 青空プログラミング|「ミニゲームで学ぶJavaScript」公開 | Open | |
| スクランブルスクール|部活動ページを追加 | Open | |
| スクランブルシティー|市民データベース 検索機能を改善 | Open | |
| スクランブルストーリー|アーカイブにタグフィルターを追加 | Open | |
| プログラミングラボ|Web Audio 実験ページを追加 | Open | |
| 青空プログラミング|「Canvasで背景演出」レッスン公開 | Open | |
| 🎨 サンストライプ イラスト工房 | Open |
仕事の現場
- 権限設計: Group / Project / Subgroup とロール(Maintainer/Developer/Reporter)
- ブランチ戦略: trunk-based / GitFlow(組織のリリース周期に合わせる)
- コード所有者: CODEOWNERS で必須レビュア設定
- 監査・可観測性: Protected branch/tag, Audit events, Environments
# CODEOWNERS 例
/apps/web/* @frontend-team
/apps/api/* @backend-team
/.gitlab-ci.yml @devops
Web開発 / アプリ開発
Web(Node/Next.js)
# .gitlab-ci.yml(Next.js ビルド + 静的出力)
image: node:20
pages:
stage: deploy
script:
- npm ci
- npm run build
- npm run export
- mv out public
artifacts:
paths: [ public ]
only:
- main
モバイル(iOS/Android)
# 署名やキャッシュは別途設定
stages: [build, test]
android:
stage: build
image: gradle:8.7-jdk17
script:
- ./gradlew assembleRelease
ios:
stage: build
tags: ["mac"] # Mac ランナー
script:
- xcodebuild -workspace App.xcworkspace -scheme App -configuration Release -sdk iphoneos
GitLab / GitHub
| 観点 | GitLab | GitHub |
|---|---|---|
| CI/CD | 標準機能(Runner/テンプレ豊富) | Actions(Marketplace充実) |
| セルフホスト | 強い(Self-Managed) | Enterprise Server(別製品) |
| 課題〜MR連携 | 同一UIで一気通貫 | Issues/PR + Projects |
| 料金/エディション | Free〜Ultimate | Free〜Enterprise |
| パッケージ/コンテナ | 統合レジストリ | GHCR/Packages |
知っておくといい(知識・技能・用語)
- Protected Branch / Tag
- Environment / Review Apps
- Merge Method(Merge commit / Squash / Rebase)
- Include:Templates(SAST / 依存関係スキャン)
- Rules / Needs / Artifacts / Cache
# 依存キャッシュ例
cache:
key: "$CI_COMMIT_REF_SLUG"
paths:
- node_modules/
例
PHP(本サイト向け)ビルド無しCI
# .gitlab-ci.yml
stages: [lint, deploy]
lint:
image: php:8.3-cli
stage: lint
script:
- php -v
- find . -name "*.php" -print0 | xargs -0 -n1 -I{} php -l "{}"
deploy:
stage: deploy
image: alpine:3.20
rules:
- if: '$CI_COMMIT_BRANCH == "main"'
script:
- apk add --no-cache rsync openssh
- rsync -avz --delete ./ user@server:/path/to/sunstripe.main.jp/programming/GitLab/
Issue / MR テンプレ
# .gitlab/issue_templates/bug.md
## 期待 vs 実際
- 期待:
- 実際:
## 再現手順
1.
2.
3.
## 環境
- ブラウザ/OS:
- バージョン:
# .gitlab/merge_request_templates/feature.md
## 目的
## 変更点
## 動作確認
## 影響範囲
## スクショ/録画
関連リンク
- GitLab Releases:
about.gitlab.com/releases/ - CI/CD Templates:
about.gitlab.com/handbook/engineering/ci-cd/ - Runner Docs:
docs.gitlab.com/runner/ - DevSecOps:
about.gitlab.com/topics/devsecops/
※ 公式URLは各自の環境で確認のうえご利用ください。
より具体的に
このページ構成は Sunstripe / Programming Lab 共通テンプレを前提にしています。必要に応じて /includes/*.php の読み込みや、ナビゲーション・フッタを差し込み可能です。
設置メモ
- パス:
/programming/GitLab/index.php - 任意データ:
/data/news.json(上記形式) - 権限:
644(ファイル)、755(ディレクトリ)