mcpField
P
pipeline

pipeline

github.com/dischen87その他09 回インストール今日更新
リポジトリ

pipeline について

pipelineは、Albatros Pilotサーバー上のデプロイワークフローを設定、運用するスキルです。ビルド検査やヘルスチェック、障害対応を扱い、デプロイ失敗時は旧サイトを稼働状態に保ちます。

主な機能

  1. 01ビルドとデプロイのワークフロー設定
  2. 02デプロイ後のヘルスチェック
  3. 03ワークフローの手動実行
  4. 04障害診断とロールバックの案内
  5. 05ワークフロー状態の確認

活用シーン

  1. 01mainへのプッシュ後のデプロイ設定
  2. 02デプロイ結果と公開サイトの確認
  3. 03ビルドまたはデプロイ失敗の調査

インストール

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

$npx skills add https://github.com/dischen87/albatros-skills --skill pipeline

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

詳細

パイプライン:品質管理付きのベルトコンベア

イメージ

工場では、誰かが部品を一つずつトラックまで運ぶことはありません。ベルトコンベアがあります。

  1. 検査ステーション: 部品を組み立てます。うまくいかなければ、ベルトコンベアが止まり、何も出荷されません。
  2. 出荷: 新しい部品を取り付けて、すぐに確認します。動いていますか? 動いていなければ、古い部品に戻します。
  3. 最終検査: 道路から、ページが応答するかを確認します。

あなたの場合、港に記録を送ると(スキル 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. 初回の実行
  1. ログブックに記録してプッシュします(スキル git-logbuch)。
  2. ブラウザーで実行状況を確認します:https://code.aufwind.sh/{name}/projekt/actions。
  3. 緑になったら、ブラウザーでページを開きます。変更が反映されています。
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 を使います。
  • バンドを緑にするために、確認を削除してはいけません。

最後のメッセージ

このステップの最後のメッセージは、「品質管理付きの流れ作業ライン」というイメージについて、要点をもう一度伝える一文で始めます。その後、達成したこと、成果物の場所、未完了のこと、次に行うことを伝えます。

コメント