🚀 Dockerを使ってパイプライン設定をローカルでテストできるBitbucket Pipelinesのローカルランナー
Bitbucket Pipelines Local Runner (bbpl) は、開発者がリポジトリにプッシュすることなく、Bitbucket Pipelinesの設定をローカルで実行・テストできるコマンドラインツールです。このツールは、開発プロセスの早い段階で問題を発見し、CI/CDのフィードバックループを短縮するのに役立ちます。
- 🐳 Docker統合 - 分離されたDockerコンテナでパイプラインを実行
- ⚡ 高速フィードバック - リポジトリにコミットすることなくパイプラインの変更をテスト
- 💾 キャッシュ管理 - 実行を高速化するビルドキャッシュをサポート
- 📦 アーティファクト処理 - パイプラインアーティファクトの保存と復元
- 🔍 設定検証 -
bitbucket-pipelines.ymlの構文と構造を検証 - 🧪 ドライランモード - コマンドを実行せずにパイプライン実行をプレビュー
- 📊 包括的ログ - 複数の詳細レベルでの詳細な実行ログ
- ⚙️ 環境変数 - 環境変数管理の完全サポート
- 🔄 並列実行 - 並列パイプラインステップのサポート
npm install -g bitbucket-pipelines-local-runnerまたはnpxで直接実行:
npx bitbucket-pipelines-local-runner# デフォルトパイプラインを実行
bbpl run
# 特定のパイプラインを実行
bbpl run --pipeline custom/deployment
# ブランチ固有のパイプラインを実行
bbpl run --branch develop
# 設定を検証
bbpl validate
# 利用可能なパイプラインを一覧表示
bbpl list
# 設定を初期化
bbpl initDockerコンテナを使用してパイプラインをローカルで実行します。
bbpl run [options]
オプション:
-p, --pipeline <name> パイプライン名 (default、branch、またはcustom)
-b, --branch <name> ブランチ固有パイプライン用のブランチ名
-c, --custom <name> カスタムパイプライン名
-v, --verbose 詳細ログを有効にする
-d, --dry-run コマンドを実行せずにドライランを実行
--config <path> 設定ファイルのパス
--env-file <path> 環境変数ファイルのパス例:
# デフォルトパイプラインを実行
bbpl run
# 詳細ログ付きでカスタムパイプラインを実行
bbpl run --custom deployment --verbose
# テスト用のドライラン
bbpl run --dry-run --verbose
# カスタム設定と環境ファイルを使用
bbpl run --config .bbpl-config.yml --env-file .env.productionbitbucket-pipelines.yml設定ファイルを検証します。
bbpl validate [options]
オプション:
-v, --verbose 詳細ログを有効にする
--config <path> 設定ファイルのパス設定内のすべての利用可能なパイプラインを表示します。
bbpl list [options]
オプション:
-v, --verbose 詳細ログを有効にするローカルキャッシュとアーティファクトをクリーンアップします。
bbpl clean [options]
オプション:
-v, --verbose 詳細ログを有効にする
--cache キャッシュのみをクリア
--artifacts アーティファクトのみをクリア初期ローカルランナー設定ファイルを作成します。
bbpl init [options]
オプション:
-v, --verbose 詳細ログを有効にするプロジェクトルートに.bitbucket-pipelines-local.ymlを作成します:
docker:
registry:
url: "docker.io"
username: "${DOCKER_USERNAME}"
password: "${DOCKER_PASSWORD}"
defaultImage: "node:18"
networkName: "bbpl-network"
resourceLimits:
memory:
"1x": "4g"
"2x": "8g"
cpu:
"1x": "2"
"2x": "4"
cache:
baseDir: ".bbpl-cache"
enabled: true
artifacts:
baseDir: ".bbpl-artifacts"
enabled: true
logging:
level: "info"
format: "text"
showDockerCommands: false
showTimestamps: true
environment:
bitbucketVariables:
BITBUCKET_REPO_SLUG: "my-repo"
BITBUCKET_WORKSPACE: "my-workspace"
envFile: ".env"このツールは標準的なBitbucket環境変数をサポートします:
BITBUCKET_BRANCHBITBUCKET_COMMITBITBUCKET_BUILD_NUMBERBITBUCKET_REPO_SLUGBITBUCKET_WORKSPACEBITBUCKET_REPO_FULL_NAME
- Node.js >= 18.0.0
- Docker Engine
- npmまたはyarn
# リポジトリをクローン
git clone https://github.com/yohi/BitbucketPipelinesLocalRunner.git
cd BitbucketPipelinesLocalRunner
# 依存関係をインストール
npm install
# プロジェクトをビルド
npm run build
# 開発モードで実行
npm run dev
# テストを実行
npm testnpm run build # TypeScriptをコンパイル
npm run dev # ts-nodeで開発モード
npm start # コンパイル済みバージョンを実行
npm test # Jestテストを実行
npm run test:watch # ウォッチモードテスト
npm run test:e2e # エンドツーエンドテスト
npm run lint # ESLintチェック
npm run lint:fix # ESLint問題の自動修正
npm run format # Prettierでコードフォーマット
npm run clean # ビルド出力を削除- BitbucketPipelinesRunner - メイン実行エンジン
- DockerManager - Dockerコンテナオーケストレーション
- YAMLParser - パイプライン設定解析
- CacheManager - ビルドキャッシュ管理
- ArtifactManager - アーティファクト処理
- EnvironmentManager - 環境変数管理
- ConfigManager - 設定管理
- PipelineValidator - 設定検証
src/
├── cli.ts # CLIエントリーポイント
├── index.ts # メインモジュールエクスポート
├── core/
│ ├── runner.ts # パイプライン実行エンジン
│ ├── validator.ts # 設定検証
│ └── yaml-parser.ts # YAML解析ロジック
├── managers/
│ ├── artifact-manager.ts # アーティファクト処理
│ ├── cache-manager.ts # キャッシュ操作
│ ├── config-manager.ts # 設定管理
│ ├── docker-manager.ts # Docker操作
│ └── environment-manager.ts # 環境変数
├── interfaces/
│ └── index.ts # TypeScriptインターフェース
└── utils/
└── logger.ts # ログユーティリティ
- リポジトリをフォークする
- フィーチャーブランチを作成する (
git checkout -b feature/amazing-feature) - 変更をコミットする (
git commit -m 'Add amazing feature') - ブランチにプッシュする (
git push origin feature/amazing-feature) - プルリクエストを開く
- TypeScriptのベストプラクティスに従う
- 新機能にテストを書く
- コードフォーマットにESLintとPrettierを使用
- 新機能のドキュメントを更新する
このプロジェクトはMITライセンスの下でライセンスされています - 詳細はLICENSEファイルを参照してください。
- 📫 Issues: GitHub Issues
- 📖 ドキュメント: Project Wiki
- 💬 ディスカッション: GitHub Discussions
- パイプライン管理用のWeb UI
- 人気のCI/CDツールとの統合
- 追加のコンテナランタイムのサポート
- 強化されたキャッシュ戦略
- パイプラインテンプレートとプリセット
❤️ で作られました by yohi