Files
search-with-chatgpt-powered…/.gitea/workflows/firefox-extension.yml
T
golemandClaude Opus 5.5 cb7da3a538 ci: add a WIP-title gate to extension CI
Every push to an open PR ran the full validate job, and pull_request
lacked the edited type, so removing WIP: would not start a run. pr-flow
therefore refused to open PRs early.

Skip validate on PRs titled WIP: or [WIP], add edited so un-WIP starts
the run, add workflow_dispatch for on-demand runs, and cancel superseded
PR runs (never push runs, since main's push uploads the package). The
workflow name and job id are unchanged, so the required check context
stays "Firefox Extension CI / validate (pull_request)".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 02:08:12 -06:00

53 lines
1.5 KiB
YAML

name: Firefox Extension CI
on:
pull_request:
# edited: removing the WIP: prefix starts the real run.
types: [opened, synchronize, reopened, edited]
push:
branches:
- develop
- main
workflow_dispatch:
concurrency:
group: ${{ gitea.workflow }}-${{ gitea.ref }}
# Cancel superseded PR runs, never a push run: main's push uploads the package.
cancel-in-progress: ${{ gitea.event_name == 'pull_request' }}
jobs:
validate:
# WIP gate: skip PRs titled WIP: so early PRs cost no run per push. Gate on
# the title and nothing else, since a skipped job reports success on the
# required check (see ~/.claude/docs/gitea-ci-pattern.md).
if: >-
gitea.event_name != 'pull_request' || (
!startsWith(gitea.event.pull_request.title, 'WIP:') &&
!startsWith(gitea.event.pull_request.title, '[WIP]')
)
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "22"
cache: npm
- name: Install dependencies
run: npm ci
- name: Lint and build
run: npm test
- name: Upload Firefox package
if: ${{ gitea.event_name == 'push' && gitea.ref == 'refs/heads/main' }}
uses: actions/upload-artifact@v4
with:
name: firefox-extension-${{ gitea.sha }}
path: web-ext-artifacts/*.zip
if-no-files-found: error
retention-days: 30