pipeline について
pipelineは、Albatros Pilotサーバー上のデプロイワークフローを設定、運用するスキルです。ビルド検査やヘルスチェック、障害対応を扱い、デプロイ失敗時は旧サイトを稼働状態に保ちます。
主な機能
- 01ビルドとデプロイのワークフロー設定
- 02デプロイ後のヘルスチェック
- 03ワークフローの手動実行
- 04障害診断とロールバックの案内
- 05ワークフロー状態の確認
活用シーン
- 01mainへのプッシュ後のデプロイ設定
- 02デプロイ結果と公開サイトの確認
- 03ビルドまたはデプロイ失敗の調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ dischen87/ albatros-skills --skill pipelineインストール後、Claude Code で/pipelineを入力して読み込まれたか確認します。
詳細
パイプライン:品質管理付きのベルトコンベア
イメージ
工場では、誰かが部品を一つずつトラックまで運ぶことはありません。ベルトコンベアがあります。
- 検査ステーション: 部品を組み立てます。うまくいかなければ、ベルトコンベアが止まり、何も出荷されません。
- 出荷: 新しい部品を取り付けて、すぐに確認します。動いていますか? 動いていなければ、古い部品に戻します。
- 最終検査: 道路から、ページが応答するかを確認します。
あなたの場合、港に記録を送ると(スキル git-logbuch)、ベルトコンベアが動き始めます。ベルトコンベアの作業員はあなたのもとにいます。あなた自身のサーバーで動き、そこでだけ作業します。専門用語では、これを CI/CD、ベルトコンベアを ワークフロー、作業員を Runner と呼びます。
このイメージの使い方: 質問をしたりコマンドを示したりする前に、最初の返答で相手にこのイメージを伝えてください。相手がすぐに解決策を求めている場合も同様です。
話し方
- 質問するだけにしない: プロジェクトや情報が不足していても、具体的な手順を示すか、仮定を明記した草案(
[仮定:…])としてファイルを書いてください。不足している情報については、最後に質問してください。 - 相手には「あなた」と呼びかけます。ワークフローファイルを動かす前に、相手と一緒にステーションごとに確認してください。
- ベルトコンベアに、相手の鍵や秘密情報は必要ありません。作業員はすでに相手のサーバーにいます。自宅の鍵をベルトコンベアに置くことは決してありません。
- ベルトコンベアが赤になったら、原因を修正してください。検査を無効にしてはいけません。
手順
1. すでにあるもの
Light にはベルトコンベアがありません。 Albatros はプッシュのたびに、ビルドも検査もせず、main の seite/ フォルダーをそのまま公開します。それでも、このイメージは説明してください。品質管理付きのベルトコンベアは Pilot(upgrade_link、ステージ pilot)の機能です。テンプレートに含まれる deploy.yml ファイルは、Light では動作しません。Pilot に切り替えると、Albatros がベルトコンベアを有効にして、あなたのサーバーからページを配信できるよう、すぐに一度実行します。ミッション flugschule-05-pipeline は Pilot のものです。
Pilot の場合: konto_status には、サーバー名、港のアドレス([email protected]:{name}/projekt.git)、作業員の準備状況が表示されます。相手に尋ねる必要はありません。Albatros のテンプレートには .github/workflows/deploy.yml、compose.yaml、Dockerfile が最初から含まれています。相手と一緒にそれらを読み、以下の基本構成と比較してください。ファイルがない場合は、フォルダーがまだ空でも作成し、その後、不足しているもの(港のログブック、ページの内容)を伝えてください。
Web サーバーのコンテナ名は webseite で、サーバー上のポート 80 をリッスンします。Albatros は https://{name}.aufwind.sh からそこへ転送します。新しいサーバーでは、歓迎ページ(サービス willkommen)がポート 80 を使用しています。ベルトコンベアは初回起動前にこれを無効にします。手動で一度起動する場合は、まず sudo systemctl disable --now willkommen を実行してください。
compose.yaml(基本構成):
services:
webseite:
container_name: webseite
build: .
restart: unless-stopped
ports:
- "80:80"
healthcheck: # «läuft» heisst noch nicht «funktioniert»
test: ["CMD", "wget", "-qO-", "http://127.0.0.1/"]
interval: 10s
retries: 6
2. ワークフローファイル
.github/workflows/deploy.yml(港はこのフォルダーを GitHub と同じように読み込みます):
name: Fliessband
on:
push:
branches: [main]
workflow_dispatch: # Knopf «Run workflow» für einen Lauf von Hand
jobs:
fliessband:
runs-on: albatros # der Arbeiter auf deinem eigenen Server, er macht einen Auftrag nach dem anderen
defaults:
run:
shell: bash
env:
SHA: ${{ github.sha }}
SEITE: https://${{ github.repository_owner }}.aufwind.sh
steps:
- name: Bauen und ausliefern, notfalls zurück
run: |
set -euo pipefail
cd ~/projekt # hier wohnt deine Seite, der Stand kommt immer aus dem Logbuch
ALT=$(git rev-parse HEAD)
git fetch -q origin main && git reset -q --hard "$SHA"
# Station 1: bauen. Klappt das nicht, bleibt die alte Seite online.
if ! docker compose build; then
git reset -q --hard "$ALT"
echo "Bau fehlgeschlagen, die alte Seite bleibt online" >&2
exit 1
fi
# Station 2: ausliefern, mit dem Gesundheitscheck aus compose.yaml
sudo systemctl disable --now willkommen 2>/dev/null || true # Begrüssungsseite gibt Port 80 frei
if ! docker compose up -d --wait --wait-timeout 120; then
echo "Neue Version ist nicht gesund, zurück auf $ALT" >&2
docker compose logs --tail 30 >&2 || true
git reset -q --hard "$ALT"
docker compose up -d --build --wait --wait-timeout 120 || true
exit 1
fi
echo "läuft: $SHA"
- name: Endkontrolle über die öffentliche Adresse
run: |
for i in 1 2 3 4 5; do
code=$(curl -s -o /dev/null -w '%{http_code}' --max-time 10 "$SEITE" || true)
[ "$code" = 200 ] && exit 0
sleep 3
done
echo "$SEITE antwortet $code statt 200" >&2
exit 1
ステーションごとに説明してください。サーバー上で手動変更はしません。常にログブックから反映されます。その際、サーバー上の .env は変更されません(スキル sicherheit)。手順で秘密情報が必要になった場合は、港の保管庫(リポジトリの「設定」→「Actions」→「Secrets」)に保存し、ワークフローでは env: 経由でコマンドに渡してください。${{ secrets.… }} を run 行に直接書いてはいけません。
3. 初回の実行
- ログブックに記録してプッシュします(スキル
git-logbuch)。 - ブラウザーで実行状況を確認します:
https://code.aufwind.sh/{name}/projekt/actions。 - 緑になったら、ブラウザーでページを開きます。変更が反映されています。
4. 作業中の検査を確認する
相手に、ビルドが失敗するようなミス(例:Dockerfile のタイプミス)を意図的に入れてもらい、プッシュしてもらいます。ベルトコンベアは赤になり、古いページはオンラインのままです。ミスを元に戻してプッシュし、緑になることを確認します。これで、ベルトコンベアが自分を守ってくれることがわかります。
5. ミッションを確認する
mission_pruefen に flugschule-05-pipeline を指定します。確認では、最後の deploy.yml の実行が港で成功しているか、コンテナ webseite が稼働しているか、ページが応答するかをチェックします。
バンドが赤い場合
- どのステーションですか? ブラウザーで「Actions」を開き、赤い実行を選びます。相手に最後の行をチャットにコピーしてもらいます。サーバー上では、次のコマンドで自分でも確認します:
ssh {name}@aufwind.sh 'cd ~/projekt && git log --oneline -1 && docker compose ps && docker compose logs --tail 30'。一緒に読み、原因を一文で説明します。 - 実行が待機中で、開始されません: 作業者が引き受けていません。ファイルに正確に
runs-on: albatrosと書かれていますか?konto_statusで作業者の準備状況を確認できます。そうでなければcoach_fragenを使います。 git fetchでPermission deniedが表示される: サーバーに港を読み取る権限がありません。これは Albatros が設定するため、coach_fragenを使います。- ビルドが赤い:
Dockerfileまたはページにエラーがあります。古いページはオンラインのままです。 - デプロイが赤い(「正常でない」): コンテナは起動しますが、応答しません。実行時の
docker compose logsの行を見れば理由がわかります。古いバージョンに戻ります。 - 最終確認が赤く、ほかは緑: サーバーではページが動いていますが、アドレスからアクセスできません。コンテナのポートを確認し(
docker ps)、スキルzurueck-auf-gesternを使います。 - バンドを緑にするために、確認を削除してはいけません。
最後のメッセージ
このステップの最後のメッセージは、「品質管理付きの流れ作業ライン」というイメージについて、要点をもう一度伝える一文で始めます。その後、達成したこと、成果物の場所、未完了のこと、次に行うことを伝えます。