openharmony-ci について
openharmony-ci は OpenHarmony のプルリクエストに対する CI 結果を確認するスキルです。付属スクリプトが最新の DCP イベントを特定してジョブ状態を集計し、通常は失敗したジョブのログだけを取得します。
主な機能
- 01PR から DCP イベントを特定
- 02全体およびジョブ別の状態を集計
- 03失敗ジョブのログを標準で取得
- 04JSON 出力とログのダウンロード
活用シーン
- 01GitCode のプルリクエストで CI 状態を確認
- 02失敗ジョブのログやアーティファクトを調査
- 03状態のみ、または機械可読なレポートを取得
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ openharmonyinsight/ openharmony-skills --skill openharmony-ciインストール後、Claude Code で/openharmony-ciを入力して読み込まれたか確認します。
同梱ファイルagents/openai.yamlscripts/openharmony_ci.py
詳細
OpenHarmony CI
概要
まず、同梱されているスクリプトを使用します。このスクリプトは、OpenHarmony の PR から最新の DCP イベントを特定し、ジョブごとの CI ステータスを要約します。また、明示的な指示がない限り、失敗したジョブのログのみを取得します。
権限の事前確認
- このワークフローでは、デフォルトでネットワークが必要です。
--pr、--pr-url、--event-id、アーティファクトのパス、CI ログの URL を指定して同梱スクリプトを実行する前に、あらかじめネットワーク権限をリクエストしてください。- 必要に応じて、権限のリクエストで接続先として GitCode(
oh-gc)、dcp.openharmony.cn、cidownload.openharmony.cnを挙げてください。 - ネットワークが必要であることを確認するためだけに、最初の実行を意図的に試みないでください。このワークフローから、失敗することは通常予測できます。
主な手順
同梱スクリプトを実行します。
python3 scripts/openharmony_ci.py --pr <pr_number> --repo <repo>
このスクリプトは、サンドボックス環境で ~/.cache への書き込みを試みないよう、デフォルトで oh-gc に XDG_CACHE_HOME=/tmp/openharmony-ci-cache を設定します。別のキャッシュ場所が必要な場合は、スクリプトの実行前に XDG_CACHE_HOME を設定してください。スクリプトはその値を使用します。
サポートされている入力:
--pr <number>--pr-url <gitcode_pr_url>--event-id <dcp_event_id>
便利なフラグ:
--log-mode auto失敗したジョブのログのみを取得します。これがデフォルトであり、通常はこのモードを使用してください。--log-mode neverステータスのみを取得します。--log-mode alwaysアーティファクトまたはログへのリンクがあるすべてのジョブのログを取得します。--json機械可読な形式で出力します。--download-dir <dir>ダウンロードしたログのアーカイブやファイルをローカルに保存します。
注意事項
- GitCode の PR からタスクを開始する場合は、
--prまたは--pr-urlを優先してください。 - このスクリプトは
oh-gcでopenharmony_ciコメントを読み取り、最新の DCP イベント ID を抽出してから、DCP API にクエリします。 - サンドボックス環境または制限された環境では、主な手順で外部サービスに依存するため、スクリプトを実行する前にネットワークアクセスをリクエストしてください。
- 制限された環境では、生の
oh-gc呼び出しよりも同梱スクリプトを優先してください。このスクリプトは、書き込み可能な一時ディレクトリにoh-gcのキャッシュをすでにリダイレクトしています。 - 合否はラベルだけでなく、DCP イベントのデータに基づいて判断してください。
- 失敗したジョブが複数ある場合は、すべて報告してください。
- 開始時刻が記録されていても終了結果がないジョブは、失敗ではなく
runningとして扱ってください。 - 失敗した場合は、アーティファクトの一覧をたどってログを自動的に確認してください。
build.logが別の URL にリダイレクトされることがあり、build.log.zipが実際には tar アーカイブである場合もあります。 - 最終回答では、DCP の
overall結果と、ジョブごとの失敗の両方を報告してください。overall=successでも一部のジョブがskipまたはfailedとマークされている場合は、単一の判定にまとめず、その旨を明記してください。 - 失敗したジョブに
skip buildなどの理由が表示されている場合は、その理由をそのまま記載し、DCP の全体結果も失敗でない限り、PR 全体が失敗したかのように示さないでください。
フォールバック
スクリプトを使用できない場合は、手動の手順に切り替えます。
- 最新の
openharmony_ciビルド開始コメントから DCP イベント ID を抽出します。 https://dcp.openharmony.cn/api/codecheckAccess/ci-portal/v1/event/<event_id>にクエリします。- 失敗したジョブに
Artifactsがある場合は、https://dcp.openharmony.cn/api/dataService/ci-portal/v1/files?directoryUrl=<ArtifactsPath>にクエリします。 - 選択したログを
https://cidownload.openharmony.cn/<path>からダウンロードします。
簡単な例
python3 scripts/openharmony_ci.py --pr 82764 --repo openharmony/arkui_ace_engine
python3 scripts/openharmony_ci.py --pr-url 'https://gitcode.com/openharmony/arkui_ace_engine/pull/82764' --json
python3 scripts/openharmony_ci.py --event-id 69c51ede64650f998b1d01a4 --log-mode auto
XDG_CACHE_HOME=/tmp/custom-oh-gc-cache python3 scripts/openharmony_ci.py --pr 82764 --repo openharmony/arkui_ace_engine
コメント
Markdown 対応