mcpField
P
pipeline-operations

pipeline-operations

github.com/acquiaクラウド・DevOps10115 回インストール今日更新
リポジトリ

pipeline-operations について

pipeline-operationsは、Acquia Pipelines CLIでAcquia CloudのCI/CDジョブを運用するためのスキルです。ビルドの開始、状態やログの確認、ジョブの停止、パイプライン変数とGitHub接続の設定を扱います。

主な機能

  1. 01ブランチやリポジトリのビルド開始
  2. 02ジョブ状態の確認と一覧表示
  3. 03ビルドログの表示やリアルタイム追跡
  4. 04実行中ジョブの停止
  5. 05パイプライン変数とSSHキーの暗号化
  6. 06GitHubリポジトリの接続・切断

活用シーン

  1. 01ブランチのビルドを開始
  2. 02ビルド状態とライブログを確認
  3. 03実行中のパイプラインジョブを停止
  4. 04パイプライン設定で使う機密値を保護

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/acquia/acquia-skills --skill pipeline-operations

インストール後、Claude Code で/pipeline-operationsを入力して読み込まれたか確認します。

詳細

Acquia Pipelines CLI を使用したパイプライン運用

次の場合に使用します:

  • パイプラインビルドを開始する
  • パイプラインジョブのステータスを確認する、またはログをストリーミングする
  • 実行中のジョブを終了する
  • パイプライン変数を暗号化する、または GitHub に接続する

Pipelines CLI を使用して、Acquia Cloud 上の CI/CD パイプラインジョブを開始、監視、管理します。

インストール、認証、アプリケーション ID の確認については、はじめに をご覧ください。


パイプラインジョブの開始

重要: pipelines start は即座に実行されます。確認プロンプトは表示されません。実行前にアプリケーション ID と対象ブランチを確認してください。

開始前に確認する
# Confirm the application ID
pipelines list-applications

# Check whether a job is already running on the branch
pipelines status --application-id=1g2i3b4b5o6u7s --job-id=latest

正しいアプリケーションとブランチであることを確認してから、start を実行してください。

現在のブランチで開始する

Git リポジトリ内から実行します:

pipelines start --application-id=1g2i3b4b5o6u7s

CLI が現在のブランチを自動的に検出します。

特定のブランチで開始する
pipelines start \
  --application-id=1g2i3b4b5o6u7s \
  --vcs-path=feature/my-branch
開始してデプロイブランチにアーティファクトを書き込む
pipelines start \
  --application-id=1g2i3b4b5o6u7s \
  --vcs-path=feature/my-branch \
  --deploy-vcs-path=deploy/my-branch

ビルドが成功すると、ビルドアーティファクトが deploy/my-branch にプッシュされます。

環境変数を指定して開始する
pipelines start \
  --application-id=1g2i3b4b5o6u7s \
  --vcs-path=main \
  -D MY_VAR=foo \
  -D ANOTHER_VAR=bar
開始してログをすぐにストリーミングする
pipelines start --application-id=1g2i3b4b5o6u7s --tail
ログストリーミングの遅延を指定して開始する

ビルドが出力を生成するまで少し時間がかかる場合に便利です:

pipelines start --application-id=1g2i3b4b5o6u7s --tail --delay=5
再試行オプションを指定して開始する

失敗時にログストリーミングを再試行する回数を指定します:

pipelines start \
  --application-id=1g2i3b4b5o6u7s \
  --retries=3 \
  --delay=5
外部(Acquia 以外)のリポジトリから開始する

--source-vcs-uri を使用して GitHub またはその他の外部リポジトリからソースコードを取得し、アクセスに使用する SSH 秘密鍵を --source-key-path で指定します:

pipelines start \
  --application-id=1g2i3b4b5o6u7s \
  [email protected]:myorg/myrepo.git \
  --source-key-path=~/.ssh/id_rsa \
  --vcs-path=main

注: .pub ファイルではなく、秘密鍵のパスを指定してください。

デバッグ用にコンテナを起動したままにして開始する

ジョブ完了後もビルドコンテナを実行したままにして、SSH で接続してデバッグできるようにします:

pipelines start --application-id=1g2i3b4b5o6u7s --keep-process-alive

ビルド開始前に確認を求められます。

アプリケーション ID の代わりにコードベース ID を使用して開始する
pipelines start \
  --codebase-id=abcd1234-5678-90ab-cdef-000000000000 \
  --vcs-path=main

成功時の出力:

Successfully started a build:
VCS path: main
Target deployment branch: pipelines-build-main
Job ID: job-abc12345

ジョブのステータス確認

最新ジョブのステータスを確認する
pipelines status --application-id=1g2i3b4b5o6u7s --job-id=latest
特定のジョブのステータスを確認する
pipelines status \
  --application-id=1g2i3b4b5o6u7s \
  --job-id=job-abc12345
特定のブランチにおける最新ジョブのステータスを確認する
pipelines status \
  --application-id=1g2i3b4b5o6u7s \
  --job-id=latest:main

出力:

Job ID: job-abc12345
Status: succeeded
Summary:
Site: my-site
VCS path: main
Submitted: 2024-02-20 10:15:00 (UTC)
Started: 2024-02-20 10:15:05 (UTC)
Finished: 2024-02-20 10:18:34 (UTC)

ステータスの値:succeeded、aborted、system failure、build error、queued、running、paused。

機械可読な JSON 出力
pipelines status \
  --application-id=1g2i3b4b5o6u7s \
  --job-id=latest \
  --format=json

ログの表示

最新ジョブのログを表示する
pipelines logs \
  --application-id=1g2i3b4b5o6u7s \
  --job-id=latest
特定のジョブのログを表示する
pipelines logs \
  --application-id=1g2i3b4b5o6u7s \
  --job-id=job-abc12345
ログをリアルタイムでストリーミングする(末尾を追跡する)
pipelines logs \
  --application-id=1g2i3b4b5o6u7s \
  --job-id=latest \
  --tail
ログをファイルに保存する
pipelines logs \
  --application-id=1g2i3b4b5o6u7s \
  --job-id=latest > pipeline.log 2>&1

ジョブの一覧表示

pipelines list-jobs 1g2i3b4b5o6u7s

出力には、最近のジョブの ID、ステータス、ブランチが一覧表示されます。


ジョブの終了

実行中のジョブをキャンセルします:

pipelines terminate-job \
  --application-id=1g2i3b4b5o6u7s \
  --job-id=job-abc12345

パイプライン変数の暗号化

acquia-pipelines.yml で使用する機密値を暗号化します:

pipelines encrypt

機密データの入力を求められます。暗号化された出力を acquia-pipelines.yml ファイルに貼り付けてください。


コンテナ設定

Acquia Pipelines のコンテナ設定は、リポジトリのルートにある acquia-pipelines.yml で定義します。pipelines start コマンドはこのファイルを自動的に読み込みます。 コンテナ設定用の CLI フラグはありません。


最小限の設定構造
version: 1.1.0

events:
  build:
    steps:
      - build:
          type: script
          script:
            - composer install

PHP バージョンを設定する

services キーを使用して、ビルドコンテナの PHP バージョンを固定します:

version: 1.1.0

services:
  - php:
      version: 8.2

events:
  build:
    steps:
      - composer:
          type: script
          script:
            - composer install --no-progress

サポートされるバージョンは Acquia Cloud のサブスクリプションによって異なります。一般的な値:8.1、8.2、8.3。


MySQL サービスを追加する

ビルドでデータベースが必要な場合は、services の下に mysql を含めます:

version: 1.0.0

services:
  - mysql

events:
  build:
    steps:
      - build:
          type: script
          script:
            - mysql -u root -proot -e "CREATE DATABASE mydb"
            - composer install --no-interaction

MySQL は、資格情報 root:root で 127.0.0.1:3306 にて利用できます。


環境変数を設定する

variables.global セクションで、平文の変数を宣言します:

version: 1.1.0

variables:
  global:
    APP_ENV: ci
    PHP_MEMORY_LIMIT: 512M

events:
  build:
    steps:
      - build:
          type: script
          script:
            - composer install

機密値の場合は、まず CLI で暗号化してから結果を貼り付けます:

pipelines encrypt
# Paste your secret value when prompted
# Copy the output — a long encoded string

次に、YAML で参照します:

variables:
  global:
    MY_SECRET:
      secure: <paste encrypted output here>

復号された値は、ビルドステップ内で $MY_SECRET として利用できます。


プライベートな依存関係用に SSH キーを追加する

ビルドでプライベートリポジトリを取得する場合は、暗号化された SSH キーを追加します。

# Encrypt your private key
cat ~/.ssh/id_rsa | pipelines encrypt

YAML の ssh-keys で参照します。

version: 1.1.0

ssh-keys:
  my-deploy-key:
    secure: <encrypted private key>

events:
  build:
    steps:
      - build:
          type: script
          script:
            - composer install

キーは、ステップの実行前にビルドコンテナーへ自動的に読み込まれます。


複数サービスの例(PHP + MySQL + Node)
version: 1.1.0

services:
  - php:
      version: 8.2
  - mysql

variables:
  global:
    APP_ENV: ci
    DB_URL: mysql://root:[email protected]:3306/mydb
    NPM_TOKEN:
      secure: <encrypted token>

events:
  build:
    steps:
      - setup-db:
          type: script
          script:
            - mysql -u root -proot -e "CREATE DATABASE mydb"
      - backend:
          type: script
          script:
            - composer install --no-interaction
      - frontend:
          type: script
          script:
            - nvm install node
            - npm install
            - npm run build

実行を開始する前に設定を検証する

pipelines validate コマンドはありません。よくある問題がないか、手動で確認してください。

# Confirm the file is valid YAML
python3 -c "import yaml,sys; yaml.safe_load(open('acquia-pipelines.yml'))" \
  && echo "Valid YAML" || echo "Parse error"

# Confirm it is committed and pushed — pipelines reads from the remote branch
git status acquia-pipelines.yml
git push

次に、実行を開始してログをストリーミングし、実行時エラーをすぐに検出します。

pipelines start --application-id=<app-id> --tail

GitHub との連携

GitHub リポジトリを接続する
pipelines github:connect
GitHub リポジトリを切断する
pipelines github:disconnect

CI/CD との連携

GitHub Actions — 実行を開始して完了を待つ
# .github/workflows/pipeline.yml
name: Trigger Acquia Pipeline

on:
  push:
    branches: [main]

jobs:
  pipeline:
    runs-on: ubuntu-latest
    steps:
      - name: Install Pipelines CLI
        run: |
          wget https://cloud.acquia.com/pipelines-client/download -O pipelines
          chmod +x pipelines
          sudo mv pipelines /usr/local/bin/pipelines

      - name: Configure credentials
        run: |
          echo "${{ secrets.PIPELINES_CONFIG }}" > ~/.pipelines-config

      - name: Start pipeline
        run: |
          pipelines start \
            --application-id=${{ vars.ACQUIA_APP_ID }} \
            --vcs-path=main \
            --tail
スクリプトでステータスをポーリングする
#!/bin/bash
set -e

APP_ID="1g2i3b4b5o6u7s"
BRANCH="main"

echo "Starting pipeline..."
pipelines start --application-id=$APP_ID --vcs-path=$BRANCH

echo "Waiting for job to complete..."
while true; do
  STATUS=$(pipelines status \
    --application-id=$APP_ID \
    --job-id=latest:$BRANCH \
    --format=json | python3 -c "import sys,json; print(json.load(sys.stdin)['status'])")

  echo "Status: $STATUS"

  case "$STATUS" in
    succeeded)
      echo "Pipeline succeeded!"
      exit 0
      ;;
    "build error"|aborted|"system failure")
      echo "Pipeline failed: $STATUS"
      pipelines logs --application-id=$APP_ID --job-id=latest:$BRANCH
      exit 1
      ;;
  esac

  sleep 15
done

ベストプラクティス

  1. 開始前に確認する — pipelines start を実行する前に、必ず pipelines list-applications を実行してアプリ ID を確認します。
  2. 開発中は --tail を使用する — ログをすぐにストリーミングし、別途 logs を呼び出さなくても失敗を検出できるようにします。
  3. 認証情報を安全に保管する — pipelines configure を使用して認証情報を保管します。環境変数やスクリプトに直接記述しないでください。
  4. 重複実行を避ける — 再実行する前に pipelines status --job-id=latest を確認し、ビルドの重複を避けます。
  5. 機密情報を暗号化する — acquia-pipelines.yml で参照するシークレットには、pipelines encrypt を使用します。

トラブルシューティング

エラー原因解決策
Unable to authenticate認証情報が設定されていないか、有効期限が切れていますpipelines configure を再度実行します
No pipeline configuration foundリポジトリに acquia-pipelines.yml がありませんビルド定義ファイルを追加してプッシュします
The vcs branch does not exist in remoteブランチが Acquia リモートにプッシュされていません先にブランチをプッシュします:git push acquia feature/my-branch
The build file has local uncommitted changesacquia-pipelines.yml に未保存の変更がありますビルドファイルをコミットしてプッシュします
Badly formed jobジョブ ID が無効か、有効期限が切れていますpipelines list-jobs を使用して有効なジョブ ID を探します

コメント