bitbucket-workflow について
コードレビュー、CI/CD、Jiraによる課題管理、Atlassian連携を行うチーム向けのBitbucketワークフローガイドです。リポジトリ管理とデプロイの運用も扱います。
主な機能
- 01プルリクエストとレビューの実践
- 02Bitbucket Pipelinesの設定
- 03Jira課題とコミットの運用
- 04ブランチ権限とマージチェック
- 05デプロイとリポジトリのセキュリティ
活用シーン
- 01プルリクエストレビューの標準化
- 02CI/CDパイプラインの設定
- 03コード変更とJira課題の連携
- 04リポジトリのマージとデプロイの管理
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mindrally/ skills --skill bitbucket-workflowインストール後、Claude Code で/bitbucket-workflowを入力して読み込まれたか確認します。
詳細
Bitbucket ワークフローのベストプラクティス
プルリクエスト、Bitbucket Pipelines、Jira 連携、Atlassian エコシステムのベストプラクティスなど、Bitbucket ワークフローに精通しています。
基本原則
- 適切なレビューのプロセスを整え、すべてのコード変更にプルリクエストを使用します
bitbucket-pipelines.ymlを使用して Bitbucket Pipelines で CI/CD を実装します- Jira 連携を活用し、課題追跡をシームレスに行います
- Gitflow などのブランチモデルに従い、構造化された開発を行います
- ブランチ権限とアクセス制御により、セキュリティを維持します
プルリクエストのベストプラクティス
効果的なプルリクエストの作成
-
PR の対象を絞り、レビューしやすくします
- 1 つの PR につき、機能または修正を 1 つにします
- 説明に背景情報を含めます
-
PR のタイトル規則
- Jira の課題を参照します:
PROJ-123: Add user authentication - 規約に沿った形式を使用します:
feat: implement login page
- Jira の課題を参照します:
-
PR の説明テンプレート
## Summary Brief description of changes and motivation. ## Jira Issue [PROJ-123](https://your-org.atlassian.net/browse/PROJ-123) ## Changes - List of specific changes made ## Testing - How the changes were tested - Manual testing steps ## Checklist - [ ] Tests added/updated - [ ] Documentation updated - [ ] Pipeline passes
Bitbucket でのコードレビュー
- レビュアーを追加する - 適切なチームメンバーを選択します
- タスクを使用する - 対応可能なフィードバックをタスクとして作成します
- 承認または変更をリクエストする - 明確な承認ワークフローを設けます
- 議論を解決する - マージ前にすべてのフィードバックに対応します
マージ戦略
- マージコミット:ブランチの履歴をすべて保持します
- スカッシュ:複数のコミットを 1 つのコミットにまとめます
- ファストフォワード:可能な場合は直線的な履歴にします
Bitbucket Pipelines
基本的なパイプライン設定
image: node:20
definitions:
caches:
npm: ~/.npm
steps:
- step: &build-step
name: Build
caches:
- npm
script:
- npm ci
- npm run build
artifacts:
- dist/**
- step: &test-step
name: Test
caches:
- npm
script:
- npm ci
- npm test
pipelines:
default:
- step: *build-step
- step: *test-step
branches:
main:
- step: *build-step
- step: *test-step
- step:
name: Deploy to Production
deployment: production
trigger: manual
script:
- pipe: atlassian/aws-s3-deploy:1.1.0
variables:
AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION: 'us-east-1'
S3_BUCKET: 'my-bucket'
LOCAL_PATH: 'dist'
develop:
- step: *build-step
- step: *test-step
- step:
name: Deploy to Staging
deployment: staging
script:
- ./deploy.sh staging
パイプラインの機能
並列ステップ
pipelines:
default:
- parallel:
- step:
name: Unit Tests
script:
- npm test:unit
- step:
name: Integration Tests
script:
- npm test:integration
- step:
name: Lint
script:
- npm run lint
条件付きステップ
pipelines:
pull-requests:
'**':
- step:
name: Build and Test
script:
- npm ci
- npm test
condition:
changesets:
includePaths:
- "src/**"
- "package.json"
カスタム Pipe
pipelines:
default:
- step:
name: Deploy
script:
- pipe: atlassian/aws-ecs-deploy:1.6.0
variables:
AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION: 'us-east-1'
CLUSTER_NAME: 'my-cluster'
SERVICE_NAME: 'my-service'
TASK_DEFINITION: 'task-definition.json'
テスト用サービス
definitions:
services:
postgres:
image: postgres:15
variables:
POSTGRES_DB: test_db
POSTGRES_USER: test_user
POSTGRES_PASSWORD: test_pass
redis:
image: redis:7
pipelines:
default:
- step:
name: Integration Tests
services:
- postgres
- redis
script:
- npm ci
- npm run test:integration
キャッシュ
definitions:
caches:
npm: ~/.npm
pip: ~/.cache/pip
gradle: ~/.gradle/caches
pipelines:
default:
- step:
caches:
- npm
script:
- npm ci
- npm run build
Jira 連携
スマートコミット
コミットメッセージから Jira の課題を更新できるように、スマートコミットを有効にします:
PROJ-123 #comment Fixed the login redirect issue
PROJ-123 #time 2h 30m
PROJ-123 #done
ブランチの命名
ブランチ名に Jira の課題キーを含めます:
feature/PROJ-123-user-authenticationbugfix/PROJ-456-fix-login-redirect
これにより、ブランチが課題に自動的にリンクされます。
自動化ルール
Jira の自動化を設定します:
- ブランチ作成時に課題を「進行中」に移動する
- PR 作成時に課題を「レビュー中」に移動する
- PR マージ時に課題を「完了」に移動する
ブランチモデル
Bitbucket での Gitflow
pipelines:
branches:
main:
- step:
name: Deploy Production
deployment: production
script:
- ./deploy.sh production
develop:
- step:
name: Deploy Staging
deployment: staging
script:
- ./deploy.sh staging
'release/*':
- step:
name: Release Build
script:
- npm run build:release
'feature/*':
- step:
name: Feature Build and Test
script:
- npm ci
- npm test
'hotfix/*':
- step:
name: Hotfix Build
script:
- npm ci
- npm test
ブランチ権限
リポジトリの[設定]>[ブランチ権限]で設定します:
メインブランチ:
- 直接プッシュを禁止する
- プルリクエストを必須にする
- 1 人以上の承認を必須にする
- ビルドの成功を必須にする
- すべてのタスクの解決を必須にする
開発ブランチ:
- プルリクエストを必須にする
- 1 人以上の承認を必須にする
- ビルドの成功を必須にする
リポジトリ管理
デフォルトのレビュアー
一貫したコードレビューのために、デフォルトのレビュアーを設定します:
- チームリーダーをデフォルトのレビュアーに追加する
- CODEOWNERS のようなパターンを使用する
マージチェック
マージチェックを有効にします:
- 承認の最小数
- 未解決のタスクがないこと
- ビルドの成功
- 変更リクエストがないこと
アクセスレベル
- 管理者:すべての操作が可能
- 書き込み:プッシュとマージが可能
- 読み取り:クローンと閲覧が可能
セキュリティのベストプラクティス
リポジトリ変数
リポジトリの[設定]>[Pipelines]>[変数]で、セキュアな変数を設定します:
# Reference in pipeline
script:
- echo "Deploying with token"
- ./deploy.sh --token=$DEPLOY_TOKEN
変数のオプション:
- 保護:ログ上でマスキングされます
- デプロイに必須
IP の許可リスト
デプロイ環境へのパイプラインアクセスを、特定の IP 範囲に制限します。
アクセストークン
個人用トークンの代わりに、リポジトリまたはプロジェクトのアクセストークンを使用します:
- 特定のリポジトリにスコープを限定できる
- より簡単にローテーションできる
- より優れた監査証跡を確保できる
デプロイ環境
環境設定
pipelines:
branches:
main:
- step:
name: Deploy to Production
deployment: production
script:
- ./deploy.sh
リポジトリの[設定]>[デプロイ]で環境を設定します:
- 環境ごとに環境変数を設定する
- デプロイ権限を設定する
- デプロイ履歴を表示する
デプロイ権限
- 本番環境へのデプロイに特定のユーザーの承認を必須にする
- デプロイ可能な時間帯を設定する
- デプロイ凍結期間を有効にする
Atlassian エコシステムとの連携
Confluence 連携
- リポジトリを Confluence のスペースにリンクする
- コードスニペットを埋め込む
- コミットに応じてドキュメントを自動更新する
Trello 連携
- カードをコミットに関連付ける
- PR のイベントに応じてカードを自動的に移動する
Opsgenie 連携
- パイプラインの失敗時にアラートをトリガーします
- デプロイの問題をオンコール担当者に通知します
ベストプラクティスのまとめ
- Jira キーを含むわかりやすいブランチ名を使用する
- メインブランチのブランチ権限を設定する
- 適切なステージを含む包括的なパイプラインを実装する
- 一般的なタスク(AWS、Docker など)にはパイプを使用する
- Jira の更新にはスマートコミットを有効にする
- 適切な権限を設定してデプロイ環境を構成する
- シークレットにはリポジトリ変数を使用する
- 品質ゲートとしてマージチェックを設定する
- シームレスなワークフローを実現するためにAtlassian 連携を活用する
コメント
Markdown 対応