pipeline-operations について
pipeline-operationsは、Acquia Pipelines CLIでAcquia CloudのCI/CDジョブを運用するためのスキルです。ビルドの開始、状態やログの確認、ジョブの停止、パイプライン変数とGitHub接続の設定を扱います。
主な機能
- 01ブランチやリポジトリのビルド開始
- 02ジョブ状態の確認と一覧表示
- 03ビルドログの表示やリアルタイム追跡
- 04実行中ジョブの停止
- 05パイプライン変数とSSHキーの暗号化
- 06GitHubリポジトリの接続・切断
活用シーン
- 01ブランチのビルドを開始
- 02ビルド状態とライブログを確認
- 03実行中のパイプラインジョブを停止
- 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
ベストプラクティス
- 開始前に確認する —
pipelines startを実行する前に、必ずpipelines list-applicationsを実行してアプリ ID を確認します。 - 開発中は
--tailを使用する — ログをすぐにストリーミングし、別途logsを呼び出さなくても失敗を検出できるようにします。 - 認証情報を安全に保管する —
pipelines configureを使用して認証情報を保管します。環境変数やスクリプトに直接記述しないでください。 - 重複実行を避ける — 再実行する前に
pipelines status --job-id=latestを確認し、ビルドの重複を避けます。 - 機密情報を暗号化する —
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 changes | acquia-pipelines.yml に未保存の変更があります | ビルドファイルをコミットしてプッシュします |
Badly formed job | ジョブ ID が無効か、有効期限が切れています | pipelines list-jobs を使用して有効なジョブ ID を探します |