gitlab-workflow
GitLabにおけるマージリクエスト、CI/CDパイプライン、Issue管理、DevOpsワークフローのベストプラクティスを提供します。GitLabを活用した開発フローの改善や自動化設定について質問・相談したい場合に活用できます。
description の原文を見る
GitLab best practices for merge requests, CI/CD pipelines, issue tracking, and DevOps workflows
SKILL.md 本文
GitLab ワークフローベストプラクティス
GitLab のワークフロー、マージリクエスト、CI/CD パイプライン、issue トラッキング、DevOps ベストプラクティスの専門家です。
コア原則
- すべてのコード変更にマージリクエストを使用し、徹底的なレビューを実施
.gitlab-ci.ymlによる包括的な CI/CD パイプラインを実装- GitLab Flow または同様の分岐戦略に従う
- GitLab の組み込み DevOps 機能を活用
- 適切なアクセス制御とスキャンによってセキュリティを維持
マージリクエストベストプラクティス
効果的なマージリクエストの作成
-
MR を小さく焦点を絞る
- 1 つの機能または修正につき 1 つの MR
- 大きな変更を小さく、レビュー可能なチャンクに分割
-
MR タイトルの規約
- Conventional Commits を使用:
feat: add user authentication - issue 参照を含める:
feat: add login page (#123)
- Conventional Commits を使用:
-
MR 説明テンプレート
## Summary この MR が実現する内容の簡潔な説明。 ## Changes - 具体的な変更のリスト ## Testing - 変更がどのようにテストされたか - 実行するテストコマンド ## Checklist - [ ] テストを追加/更新した - [ ] ドキュメントを更新した - [ ] パイプラインが成功した ## Related Issues Closes #123 -
issue を適切にリンク
Closes #123を使用してマージ時に自動的に issue をクローズ- クローズなしで参照する場合は
Related to #123を使用
ドラフトマージリクエスト
進行中の作業にはドラフト MR を使用:
- タイトルに
Draft:をプリフィックスするか、ドラフトボタンを使用 - アプローチについて早期フィードバックをリクエスト
- 完了時にレディ状態に変換
CI/CD パイプラインベストプラクティス
基本的なパイプライン構造
stages:
- build
- test
- security
- deploy
variables:
NODE_VERSION: "20"
default:
image: node:${NODE_VERSION}
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- node_modules/
build:
stage: build
script:
- npm ci
- npm run build
artifacts:
paths:
- dist/
expire_in: 1 week
test:
stage: test
script:
- npm ci
- npm test
coverage: '/Coverage: \d+\.\d+%/'
lint:
stage: test
script:
- npm ci
- npm run lint
allow_failure: false
高度なパイプライン機能
パラレルジョブ
test:
stage: test
parallel: 3
script:
- npm ci
- npm test -- --shard=$CI_NODE_INDEX/$CI_NODE_TOTAL
条件付きジョブ
deploy:production:
stage: deploy
script:
- ./deploy.sh production
rules:
- if: $CI_COMMIT_BRANCH == "main"
when: manual
- when: never
environment:
name: production
url: https://example.com
ジョブテンプレート
.test_template: &test_template
stage: test
before_script:
- npm ci
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- node_modules/
unit_tests:
<<: *test_template
script:
- npm run test:unit
integration_tests:
<<: *test_template
script:
- npm run test:integration
services:
- postgres:15
セキュリティスキャン
include:
- template: Security/SAST.gitlab-ci.yml
- template: Security/Dependency-Scanning.gitlab-ci.yml
- template: Security/Secret-Detection.gitlab-ci.yml
- template: Security/Container-Scanning.gitlab-ci.yml
sast:
stage: security
dependency_scanning:
stage: security
secret_detection:
stage: security
マルチ環境デプロイ
.deploy_template:
stage: deploy
script:
- ./deploy.sh $ENVIRONMENT
environment:
name: $ENVIRONMENT
url: https://$ENVIRONMENT.example.com
deploy:staging:
extends: .deploy_template
variables:
ENVIRONMENT: staging
rules:
- if: $CI_COMMIT_BRANCH == "develop"
deploy:production:
extends: .deploy_template
variables:
ENVIRONMENT: production
rules:
- if: $CI_COMMIT_BRANCH == "main"
when: manual
GitLab Flow
ブランチ戦略
- Main ブランチ - 本番対応コード
- フィーチャーブランチ -
feature/descriptionという名前 - 環境ブランチ (オプション) -
staging、production
ワークフロー
- Main からフィーチャーブランチを作成
- 変更を開発およびコミット
- プッシュしてマージリクエストを作成
- レビュー、テスト、反復
- Main にマージ
- 自動または手動でデプロイ
Issue およびプロジェクト管理
Issue テンプレート
.gitlab/issue_templates/ に作成:
Bug.md:
## Description
バグの明確な説明。
## Steps to Reproduce
1. ステップ 1
2. ステップ 2
## Expected vs Actual Behavior
- 期待される動作:
- 実際の動作:
## Environment
- ブラウザ:
- OS:
- バージョン:
/label ~bug ~needs-triage
Feature.md:
## Problem Statement
この機能が解決する問題を説明。
## Proposed Solution
提案するソリューションを説明。
## Acceptance Criteria
- [ ] 受け入れ基準 1
- [ ] 受け入れ基準 2
/label ~feature ~needs-refinement
ラベルとボード
ラベルで整理:
- タイプ:
~bug、~feature、~documentation - 優先度:
~priority::high、~priority::medium、~priority::low - ステータス:
~workflow::ready、~workflow::in-progress、~workflow::review - チーム:
~team::backend、~team::frontend
マイルストーン
- スプリントまたはリリースのためにマイルストーンを使用
- バーンダウンチャートで進捗を追跡
- 完了時にマイルストーンをクローズ
リポジトリ設定
保護されたブランチ
Main に対して設定:
- マージが許可される: メンテナー
- プッシュが許可される: なし
- 承認を要求
- パイプラインの成功を要求
マージリクエスト設定
- ファストフォワードマージまたはマージコミット
- コミットのスクワッシュオプション
- マージ後にソースブランチを削除
- すべてのディスカッションが解決されていることを要求
セキュリティベストプラクティス
CI/CD 変数
# 保護およびマスクされた変数を使用
variables:
DEPLOY_TOKEN:
value: ""
description: "デプロイメント認証トークン"
Settings > CI/CD > Variables で設定:
- 保護: 保護されたブランチでのみ利用可能
- マスク: ジョブログで非表示
アクセス制御
- チーム権限のためにグループを使用
- 最小権限の原則に従う
- 2FA 要件を有効化
- アクセスを定期的に監査
コンプライアンス
コンプライアンス機能を有効化:
- マージリクエスト承認
- プッシュルール
- 監査イベント
- コンプライアンスフレームワーク
Auto DevOps
迅速にセットアップするために、Auto DevOps を有効化:
include:
- template: Auto-DevOps.gitlab-ci.yml
variables:
AUTO_DEVOPS_PLATFORM_TARGET: ECS
POSTGRES_ENABLED: "true"
含まれる機能:
- Auto Build
- Auto Test
- Auto Code Quality
- Auto SAST
- Auto Dependency Scanning
- Auto Container Scanning
- Auto Review Apps
- Auto Deploy
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- mindrally
- リポジトリ
- mindrally/skills
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/mindrally/skills / ライセンス: Apache-2.0
関連スキル
superpowers-streamer-cli
SuperPowers デスクトップストリーマーの npm パッケージをインストール、ログイン、実行、トラブルシューティングできます。ユーザーが npm から `superpowers-ai` をセットアップしたい場合、メールまたは電話でサインインもしくはアカウント作成を行いたい場合、ストリーマーを起動したい場合、表示されたコントロールリンクを開きたい場合、後で停止したい場合、またはソースコードへのアクセスなしに npm やランタイムの一般的な問題から復旧したい場合に使用します。
catc-client-ops
Catalyst Centerのクライアント操作・監視機能 - 有線・無線クライアントのリスト表示・フィルタリング、MACアドレスによる詳細なクライアント検索、クライアント数分析、時間軸での分析、SSIDおよび周波数帯によるフィルタリング、無線トラブルシューティング機能を提供します。MACアドレスやIPアドレスでのクライアント検索、サイト別やSSID別のクライアント数集計、無線周波数帯の分布分析、Wi-Fi信号の問題調査が必要な場合に活用できます。
ci-cd-and-automation
CI/CDパイプラインの設定を自動化します。ビルドおよびデプロイメントパイプラインの構築または変更時に使用できます。品質ゲートの自動化、CI内のテストランナー設定、またはデプロイメント戦略の確立が必要な場合に活用します。
shipping-and-launch
本番環境へのリリース準備を行います。本番環境へのデプロイ準備が必要な場合、リリース前チェックリストが必要な場合、監視機能の設定を行う場合、段階的なロールアウトを計画する場合、またはロールバック戦略が必要な場合に使用します。
linear-release-setup
Linear Releaseに向けたCI/CD設定を生成します。リリース追跡の設定、LinearのCIパイプライン構築、またはLinearリリースとのデプロイメント連携を実施する際に利用できます。GitHub Actions、GitLab CI、CircleCIなど複数のプラットフォームに対応しています。
tracking-application-response-times
API エンドポイント、データベースクエリ、サービスコール全体にわたるアプリケーションのレスポンスタイムを追跡・最適化できます。パフォーマンス監視やボトルネック特定の際に活用してください。「レスポンスタイムを追跡する」「API パフォーマンスを監視する」「遅延を分析する」といった表現で呼び出せます。