Agent Skills by ALSEL
OpenAIDevOps・インフラ⭐ リポ 0品質スコア 60/100

bitbucket-workflow

Bitbucketのプルリクエスト、Pipelines CI/CD、Jira連携、およびAtlassianエコシステムワークフローのベストプラクティス

description の原文を見る

Bitbucket best practices for pull requests, Pipelines CI/CD, Jira integration, and Atlassian ecosystem workflows

SKILL.md 本文

Bitbucket ワークフローのベストプラクティス

Bitbucket ワークフロー(プルリクエスト、Bitbucket Pipelines、Jira 統合、Atlassian エコシステムのベストプラクティス)の専門家です。

コア原則

  • すべてのコード変更に対して適切なレビュープロセスを備えたプルリクエストを使用します
  • 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
    変更内容と動機の簡潔な説明。
    
    ## Jira Issue
    [PROJ-123](https://your-org.atlassian.net/browse/PROJ-123)
    
    ## Changes
    - 行った具体的な変更のリスト
    
    ## Testing
    - 変更がどのようにテストされたか
    - 手動テストの手順
    
    ## Checklist
    - [ ] テストを追加/更新
    - [ ] ドキュメントを更新
    - [ ] パイプラインがパス
    

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"

カスタムパイプ

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

ブランチパーミッション

リポジトリ設定 > ブランチパーミッションで設定:

Main ブランチ:

  • ダイレクトプッシュなし
  • プルリクエストが必須
  • 最小 1 件の承認が必須
  • ビルド成功が必須
  • すべてのタスク解決が必須

Develop ブランチ:

  • プルリクエストが必須
  • 最小 1 件の承認が必須
  • ビルド成功が必須

リポジトリ管理

デフォルトレビュアー

一貫したコードレビューのためにデフォルトレビュアーを設定:

  • チームリーダーをデフォルトレビュアーとして追加
  • CODEOWNERS のようなパターンを使用

マージチェック

マージチェックを有効化:

  • 最小承認数
  • 未解決のタスクなし
  • ビルド成功
  • 変更リクエストなし

アクセスレベル

  • Admin: 完全なコントロール
  • Write: プッシュとマージ
  • Read: クローンと表示

セキュリティのベストプラクティス

リポジトリ変数

リポジトリ設定 > パイプライン > 変数でセキュア変数を設定:

# パイプラインで参照
script:
  - echo "Deploying with token"
  - ./deploy.sh --token=$DEPLOY_TOKEN

変数オプション:

  • Secured: ログでマスク
  • デプロイに必須

IP 許可リスト

デプロイ環境に対して特定の IP 範囲へのパイプラインアクセスを制限します。

アクセストークン

個人トークンの代わりにリポジトリまたはプロジェクトアクセストークンを使用:

  • 特定のリポジトリにスコープ化
  • ローテーションが簡単
  • より良い監査証跡

デプロイメント環境

環境設定

pipelines:
  branches:
    main:
      - step:
          name: Deploy to Production
          deployment: production
          script:
            - ./deploy.sh

リポジトリ設定 > デプロイメントで環境を設定:

  • 環境ごとに環境変数を設定
  • デプロイパーミッションを設定
  • デプロイ履歴を表示

デプロイメントパーミッション

  • 本番環境への特定ユーザーの承認が必須
  • デプロイウィンドウをセットアップ
  • デプロイフリーズ期間を有効化

Atlassian エコシステム統合

Confluence 統合

  • リポジトリを Confluence スペースにリンク
  • コードスニペットを埋め込む
  • コミットからドキュメントを自動更新

Trello 統合

  • カードをコミットに接続
  • PR イベント時の自動カード移動

Opsgenie 統合

  • パイプライン失敗からアラートをトリガー
  • デプロイの問題についてのオンコール通知

ベストプラクティスの要約

  1. Jira キー付きの説明的なブランチ名を使用
  2. Main ブランチのブランチパーミッションを設定
  3. 適切なステージを備えた包括的なパイプラインを実装
  4. 一般的なタスク(AWS、Docker など)にパイプを使用
  5. スマートコミットを有効化して Jira を更新
  6. 適切なパーミッションを備えたデプロイメント環境を設定
  7. シークレット用のリポジトリ変数を使用
  8. 品質ゲートのマージチェックを設定
  9. Atlassian 統合を活用してシームレスなワークフローを実現

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
d-subrahmanyam
リポジトリ
d-subrahmanyam/deno-fresh-microservices
ライセンス
MIT
最終更新
2026/3/24

Source: https://github.com/d-subrahmanyam/deno-fresh-microservices / ライセンス: MIT

本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: d-subrahmanyam · d-subrahmanyam/deno-fresh-microservices · ライセンス: MIT