Repository navigation
ci: report failed weekly content-smoke and plugin-install runs as issues #8
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Plugin install check | |
| # ROADMAP 1.0 criterion: "Install paths that work and are tested" (#497). | |
| # Builds the plugin-dist tree, validates every manifest with Claude Code's own | |
| # validator in --strict mode, then installs both plugins into a throwaway | |
| # config directory and checks they are listed and enabled. On the weekly run | |
| # it also installs from the published plugin-dist branch, which is what users | |
| # actually add. No account or API key is involved: plugin commands are local. | |
| on: | |
| workflow_dispatch: | |
| schedule: | |
| - cron: "0 10 * * 3" # weekly, Wednesday 10:00 UTC | |
| push: | |
| branches: [main] | |
| paths: | |
| - ".claude-plugin/**" | |
| - ".cursor-plugin/**" | |
| - "live-session/**" | |
| - "skills/**" | |
| - "claude/**" | |
| - "exports/**" | |
| - "scripts/build_plugin_dist.py" | |
| - ".github/workflows/plugin-install.yml" | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - ".claude-plugin/**" | |
| - ".cursor-plugin/**" | |
| - "live-session/**" | |
| - "skills/**" | |
| - "claude/**" | |
| - "exports/**" | |
| - "scripts/build_plugin_dist.py" | |
| - ".github/workflows/plugin-install.yml" | |
| permissions: | |
| contents: read | |
| jobs: | |
| install: | |
| name: Validate and install the plugins (Claude Code) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| env: | |
| CLAUDE_CODE_VERSION: "2.1.296" | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 | |
| - name: Install the Claude Code CLI (pinned) | |
| run: npm install -g "@anthropic-ai/claude-code@${CLAUDE_CODE_VERSION}" | |
| - name: Build plugin-dist and validate it strictly | |
| run: | | |
| set -euo pipefail | |
| python3 scripts/build_plugin_dist.py --out "$RUNNER_TEMP/dist" | |
| for target in "$RUNNER_TEMP/dist" "$RUNNER_TEMP/dist/live-session" \ | |
| "$RUNNER_TEMP/dist/.claude-plugin/marketplace.json"; do | |
| claude plugin validate --strict "$target" | |
| done | |
| - name: Install both plugins from the build into a clean profile | |
| env: | |
| CLAUDE_CONFIG_DIR: ${{ runner.temp }}/claude-cfg-local | |
| run: | | |
| set -euo pipefail | |
| claude plugin marketplace add "$RUNNER_TEMP/dist" | |
| claude plugin install blender-developer-tools@blender-developer-tools | |
| claude plugin install blender-live-session@blender-developer-tools | |
| list=$(claude plugin list) | |
| echo "$list" | |
| for p in blender-developer-tools@blender-developer-tools blender-live-session@blender-developer-tools; do | |
| echo "$list" | grep -qF "$p" || { echo "::error::$p is not listed after install"; exit 1; } | |
| done | |
| - name: Install from the published plugin-dist branch (weekly) | |
| if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' | |
| env: | |
| CLAUDE_CONFIG_DIR: ${{ runner.temp }}/claude-cfg-published | |
| run: | | |
| set -euo pipefail | |
| claude plugin marketplace add "TMHSDigital/Blender-Developer-Tools@plugin-dist" | |
| claude plugin install blender-developer-tools@blender-developer-tools | |
| claude plugin install blender-live-session@blender-developer-tools | |
| claude plugin list | |
| report-scheduled-failure: | |
| # A red weekly cron otherwise goes unnoticed (#482, #538): open an issue, | |
| # or comment on the one already open. | |
| name: Report a failed weekly run | |
| needs: [install] | |
| if: >- | |
| always() && github.event_name == 'schedule' && | |
| (contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| permissions: | |
| issues: write | |
| steps: | |
| - name: Open or update the tracking issue | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| GH_REPO: ${{ github.repository }} | |
| RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
| run: | | |
| set -euo pipefail | |
| title="Weekly plugin install check failed" | |
| body="Scheduled run: $RUN_URL | |
| Building, validating or installing the plugin failed; on the weekly run this includes installing from the published plugin-dist branch, which is what users add. | |
| Opened by plugin-install.yml (report-scheduled-failure). Close it once a weekly run is green." | |
| num=$(gh issue list --state open --search "\"$title\" in:title" --json number --jq '.[0].number // empty') | |
| if [ -n "$num" ]; then | |
| gh issue comment "$num" --body "$body" | |
| echo "commented on #$num" | |
| else | |
| gh issue create --title "$title" --body "$body" --label "bug,ci,priority: high" | |
| fi |