Add a skill for monitoring gitea actions
This commit is contained in:
195
.claude/skills/actions-runs/SKILL.md
Normal file
195
.claude/skills/actions-runs/SKILL.md
Normal file
@@ -0,0 +1,195 @@
|
||||
---
|
||||
name: actions-runs
|
||||
description: Fetch and monitor Gitea Actions CI results for a PR or branch
|
||||
dependencies: tea
|
||||
---
|
||||
|
||||
# Gitea Actions Run Monitoring
|
||||
|
||||
Guide for inspecting CI workflow runs using the `tea actions runs` CLI.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Listing Runs](#listing-runs)
|
||||
- [Viewing a Run](#viewing-a-run)
|
||||
- [Viewing Logs](#viewing-logs)
|
||||
- [Managing Workflows](#managing-workflows)
|
||||
- [Common Workflows](#common-workflows)
|
||||
|
||||
## Listing Runs
|
||||
|
||||
```bash
|
||||
# List recent runs (default: last 30)
|
||||
tea actions runs ls --repo thatguygriff/walkies
|
||||
|
||||
# Filter by branch (use this to find runs for a PR's branch)
|
||||
tea actions runs ls --branch feature/my-branch --repo thatguygriff/walkies
|
||||
|
||||
# Filter by status
|
||||
tea actions runs ls --status failure --repo thatguygriff/walkies
|
||||
tea actions runs ls --status success --repo thatguygriff/walkies
|
||||
tea actions runs ls --status in_progress --repo thatguygriff/walkies
|
||||
# Valid statuses: success, failure, pending, queued, in_progress, skipped, canceled
|
||||
|
||||
# Filter by trigger event
|
||||
tea actions runs ls --event pull_request --repo thatguygriff/walkies
|
||||
tea actions runs ls --event push --repo thatguygriff/walkies
|
||||
|
||||
# Filter by who triggered the run
|
||||
tea actions runs ls --actor thatguygriff --repo thatguygriff/walkies
|
||||
|
||||
# Filter by time range
|
||||
tea actions runs ls --since 24h --repo thatguygriff/walkies
|
||||
tea actions runs ls --since 2026-04-01 --until 2026-04-08 --repo thatguygriff/walkies
|
||||
|
||||
# Increase result limit
|
||||
tea actions runs ls --limit 50 --repo thatguygriff/walkies
|
||||
|
||||
# JSON output for scripting
|
||||
tea actions runs ls --output json --repo thatguygriff/walkies
|
||||
```
|
||||
|
||||
## Viewing a Run
|
||||
|
||||
Get the run ID from `tea actions runs ls`, then:
|
||||
|
||||
```bash
|
||||
# View run summary
|
||||
tea actions runs view 42 --repo thatguygriff/walkies
|
||||
|
||||
# View with jobs table (shows individual job statuses)
|
||||
tea actions runs view 42 --jobs --repo thatguygriff/walkies
|
||||
|
||||
# JSON output (includes job IDs for log fetching)
|
||||
tea actions runs view 42 --output json --repo thatguygriff/walkies
|
||||
```
|
||||
|
||||
## Viewing Logs
|
||||
|
||||
```bash
|
||||
# View logs for all jobs in a run
|
||||
tea actions runs logs 42 --repo thatguygriff/walkies
|
||||
|
||||
# View logs for a specific job
|
||||
tea actions runs logs 42 --job JOB_ID --repo thatguygriff/walkies
|
||||
|
||||
# Follow live logs for an in-progress job (requires --job)
|
||||
tea actions runs logs 42 --job JOB_ID --follow --repo thatguygriff/walkies
|
||||
```
|
||||
|
||||
Get job IDs from `tea actions runs view 42 --output json`.
|
||||
|
||||
## Managing Workflows
|
||||
|
||||
```bash
|
||||
# List all workflow definitions in the repo
|
||||
tea actions workflows ls --repo thatguygriff/walkies
|
||||
|
||||
# Cancel or delete a run
|
||||
tea actions runs delete 42 --repo thatguygriff/walkies
|
||||
```
|
||||
|
||||
## Common Workflows
|
||||
|
||||
### Check CI status for the current PR branch
|
||||
|
||||
```bash
|
||||
BRANCH=$(git branch --show-current)
|
||||
|
||||
# Find the latest run for this branch
|
||||
tea actions runs ls --branch "$BRANCH" --limit 5 --repo thatguygriff/walkies
|
||||
|
||||
# Get the most recent run ID as JSON
|
||||
RUN_ID=$(tea actions runs ls --branch "$BRANCH" --limit 1 --output json --repo thatguygriff/walkies \
|
||||
| jq -r '.[0].id')
|
||||
|
||||
echo "Latest run: $RUN_ID"
|
||||
|
||||
# View job-level summary
|
||||
tea actions runs view "$RUN_ID" --jobs --repo thatguygriff/walkies
|
||||
```
|
||||
|
||||
### Wait for CI to finish, then report status
|
||||
|
||||
```bash
|
||||
BRANCH=$(git branch --show-current)
|
||||
|
||||
while true; do
|
||||
STATUS=$(tea actions runs ls --branch "$BRANCH" --limit 1 --output json --repo thatguygriff/walkies \
|
||||
| jq -r '.[0].status')
|
||||
echo "Status: $STATUS"
|
||||
case "$STATUS" in
|
||||
success|failure|canceled|skipped) break ;;
|
||||
*) sleep 15 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
echo "Final CI status: $STATUS"
|
||||
```
|
||||
|
||||
### Fetch logs for a failing run
|
||||
|
||||
```bash
|
||||
BRANCH=$(git branch --show-current)
|
||||
|
||||
RUN_ID=$(tea actions runs ls --branch "$BRANCH" --status failure --limit 1 --output json \
|
||||
--repo thatguygriff/walkies | jq -r '.[0].id')
|
||||
|
||||
# Show all logs for the failed run
|
||||
tea actions runs logs "$RUN_ID" --repo thatguygriff/walkies
|
||||
|
||||
# Or drill into a specific failing job
|
||||
tea actions runs view "$RUN_ID" --output json --repo thatguygriff/walkies \
|
||||
| jq '.jobs[] | select(.status == "failure") | {id: .id, name: .name}'
|
||||
|
||||
# Then fetch that job's logs
|
||||
JOB_ID=<id from above>
|
||||
tea actions runs logs "$RUN_ID" --job "$JOB_ID" --repo thatguygriff/walkies
|
||||
```
|
||||
|
||||
### Monitor a run that's currently in progress
|
||||
|
||||
```bash
|
||||
RUN_ID=42
|
||||
|
||||
# Get the in-progress job ID
|
||||
JOB_ID=$(tea actions runs view "$RUN_ID" --output json --repo thatguygriff/walkies \
|
||||
| jq -r '.jobs[] | select(.status == "in_progress") | .id' | head -1)
|
||||
|
||||
# Follow live logs
|
||||
tea actions runs logs "$RUN_ID" --job "$JOB_ID" --follow --repo thatguygriff/walkies
|
||||
```
|
||||
|
||||
## Quick Reference
|
||||
|
||||
```bash
|
||||
# List
|
||||
tea actions runs ls # Last 30 runs
|
||||
tea actions runs ls --branch feature/foo # Runs for a branch
|
||||
tea actions runs ls --status failure # Failed runs only
|
||||
tea actions runs ls --event pull_request # PR-triggered runs
|
||||
tea actions runs ls --limit 1 --output json | jq '.[0]' # Latest run as JSON
|
||||
|
||||
# View
|
||||
tea actions runs view 42 # Run summary
|
||||
tea actions runs view 42 --jobs # With jobs table
|
||||
tea actions runs view 42 --output json # Full JSON (incl. job IDs)
|
||||
|
||||
# Logs
|
||||
tea actions runs logs 42 # All logs for a run
|
||||
tea actions runs logs 42 --job JOB_ID # Specific job logs
|
||||
tea actions runs logs 42 --job JOB_ID --follow # Follow live output
|
||||
|
||||
# Cancel / delete
|
||||
tea actions runs delete 42 # Cancel or delete run
|
||||
|
||||
# Workflows
|
||||
tea actions workflows ls # List workflow definitions
|
||||
```
|
||||
|
||||
## Tips
|
||||
|
||||
1. **Find the run for a PR**: PRs run on their head branch — filter with `--branch` using the feature branch name, not the PR number.
|
||||
2. **Get job IDs**: Use `--output json` on `view` then `jq '.jobs[] | {id, name, status}'` to identify which job to drill into.
|
||||
3. **Status polling**: The `--status in_progress` filter helps confirm a run is still going before following logs.
|
||||
4. **Log noise**: Full run logs can be large — use `--job` to focus on the failing step.
|
||||
Reference in New Issue
Block a user