mcpField
B
bitbucket-workflow

bitbucket-workflow

github.com/mindrally開発287763 回インストール3 週間前に更新
リポジトリ

bitbucket-workflow について

コードレビュー、CI/CD、Jiraによる課題管理、Atlassian連携を行うチーム向けのBitbucketワークフローガイドです。リポジトリ管理とデプロイの運用も扱います。

主な機能

  1. 01プルリクエストとレビューの実践
  2. 02Bitbucket Pipelinesの設定
  3. 03Jira課題とコミットの運用
  4. 04ブランチ権限とマージチェック
  5. 05デプロイとリポジトリのセキュリティ

活用シーン

  1. 01プルリクエストレビューの標準化
  2. 02CI/CDパイプラインの設定
  3. 03コード変更とJira課題の連携
  4. 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 などのブランチモデルに従い、構造化された開発を行います
  • ブランチ権限とアクセス制御により、セキュリティを維持します

プルリクエストのベストプラクティス

効果的なプルリクエストの作成
  1. PR の対象を絞り、レビューしやすくします

    • 1 つの PR につき、機能または修正を 1 つにします
    • 説明に背景情報を含めます
  2. PR のタイトル規則

    • Jira の課題を参照します:PROJ-123: Add user authentication
    • 規約に沿った形式を使用します:feat: implement login page
  3. 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. レビュアーを追加する - 適切なチームメンバーを選択します
  2. タスクを使用する - 対応可能なフィードバックをタスクとして作成します
  3. 承認または変更をリクエストする - 明確な承認ワークフローを設けます
  4. 議論を解決する - マージ前にすべてのフィードバックに対応します
マージ戦略
  • マージコミット:ブランチの履歴をすべて保持します
  • スカッシュ:複数のコミットを 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-authentication
  • bugfix/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 連携
  • パイプラインの失敗時にアラートをトリガーします
  • デプロイの問題をオンコール担当者に通知します

ベストプラクティスのまとめ

  1. Jira キーを含むわかりやすいブランチ名を使用する
  2. メインブランチのブランチ権限を設定する
  3. 適切なステージを含む包括的なパイプラインを実装する
  4. 一般的なタスク(AWS、Docker など)にはパイプを使用する
  5. Jira の更新にはスマートコミットを有効にする
  6. 適切な権限を設定してデプロイ環境を構成する
  7. シークレットにはリポジトリ変数を使用する
  8. 品質ゲートとしてマージチェックを設定する
  9. シームレスなワークフローを実現するためにAtlassian 連携を活用する

コメント