パイプラインの基本
仕組み
bitbucket-pipelines.ymlリポジトリルートの設定ファイル
Docker コンテナ各ステップが独自のコンテナで実行
トリガープッシュ、PR、タグ、スケジュール、または手動
ビルド時間クォータはプランによって異なる
パイプラインの有効化
# リポジトリ設定 → Pipelines → 有効化 # bitbucket-pipelines.yml をリポジトリルートに追加 # 最初のプッシュでパイプラインが起動
bitbucket-pipelines.yml
最小構成
image: node:20 pipelines: default: - step: script: - npm install - npm test
ブランチ固有のパイプライン
pipelines: branches: main: - step: script: - npm run build - npm run deploy
タグと PR のパイプライン
pipelines: tags: 'v*': - step: script: - npm run release pull-requests: '**': - step: script: - npm test
ステップ
ステップオプション
nameステップの表示名
imageグローバルの Docker イメージを上書き
script実行するシェルコマンドのリスト
size1x(4GB)または 2x(8GB)のメモリ
max-timeタイムアウト(分)デフォルト 120
triggermanual で手動実行専用ステップ
並列ステップ
- parallel: - step: name: "Lint" script: - npm run lint - step: name: "Test" script: - npm test
手動ステップ
- step: name: "Deploy to Production" trigger: manual script: - ./deploy.sh prod
変数
変数の種類
リポジトリ変数設定 → Pipelines → Variables
デプロイ変数デプロイ環境にスコープされる
セキュア変数暗号化され、ログでマスク
パイプライン変数YAML にインラインで定義
変数の使用
pipelines: default: - step: script: - echo $MY_VAR - docker login -u $DOCKER_USER -p $DOCKER_PASS
組み込み変数
$BITBUCKET_COMMIT完全なコミット SHA
$BITBUCKET_BRANCHブランチ名
$BITBUCKET_TAGタグ名(タグパイプライン)
$BITBUCKET_BUILD_NUMBERインクリメントするビルド番号
$BITBUCKET_REPO_SLUGリポジトリスラッグ
キャッシュ
定義済みキャッシュ
- step: caches: - node # ~/.npm - pip # ~/.cache/pip - docker # Docker レイヤーキャッシュ script: - npm install - npm test
カスタムキャッシュ
definitions: caches: gradle: ~/.gradle/caches mylibs: vendor/libs pipelines: default: - step: caches: - gradle script: - ./gradlew build
キャッシュの動作
有効期限7日後に期限切れ
スコープリポジトリ内のすべてのパイプラインで共有
クリアPipelines → Caches → Delete
アーティファクト
ステップ間でファイルを渡す
- step: name: "Build" script: - npm run build artifacts: - dist/** - step: name: "Deploy" script: - ls dist/ # アーティファクトが利用可能 - ./deploy.sh
アーティファクトオプション
artifacts渡すファイルのグロブパターン
ダウンロード後続のステップで自動的に利用可能
最大サイズステップあたり 1 GB
保持期間ビルド後 14 日間利用可能
デプロイ
デプロイ環境
- step: name: "Deploy Staging" deployment: staging script: - ./deploy.sh staging - step: name: "Deploy Production" deployment: production trigger: manual script: - ./deploy.sh prod
環境の種類
testテスト環境
stagingステージング環境
production本番環境、ダッシュボードで追跡
よくあるパターン
Docker ビルドとプッシュ
- step: services: - docker script: - docker build -t myapp:$BITBUCKET_COMMIT . - docker login -u $DOCKER_USER -p $DOCKER_PASS - docker push myapp:$BITBUCKET_COMMIT
サービスコンテナ
definitions: services: postgres: image: postgres:16 variables: POSTGRES_DB: testdb POSTGRES_PASSWORD: secret pipelines: default: - step: services: - postgres script: - npm test
パイプを使った条件付きステップ
- step: name: "Deploy to S3" script: - pipe: atlassian/aws-s3-deploy:1.1.0 variables: AWS_ACCESS_KEY_ID: $AWS_KEY AWS_SECRET_ACCESS_KEY: $AWS_SECRET S3_BUCKET: my-bucket LOCAL_PATH: dist/