Updated triggerAddIconWorkflow to accept comma-separated submission IDs.
Simplified triggerBulkAddIconWorkflow to join IDs and dispatch once
instead of triggering multiple separate workflows.
This works in tandem with the updated add-icon.yml workflow to process
all submissions sequentially in a single run.
Changed input from `submissionId` to `submissionIds` (comma-separated).
This avoids the GitHub Actions concurrency limitation where only one
pending workflow is kept per concurrency group, causing other queued
workflows to be canceled.
Now all submissions are processed sequentially within a single workflow
run, with individual commits for each icon.
Instead of git rebase (which can cause conflicts in metadata.json),
the retry logic now:
1. Resets to origin/main (clean slate)
2. Re-runs import-icon.ts (skips existing files)
3. Commits and pushes again
This avoids merge conflicts entirely by always working from latest main.
GitHub Actions only allows 1 running + 1 pending job per concurrency
group, causing jobs to be canceled instead of queued.
Replace with retry logic that:
- Attempts to push up to 5 times
- Pulls and rebases on failure before retrying
- Allows multiple workflows to run concurrently without conflicts
The concurrency group with cancel-in-progress: false was causing
newer pending workflows to cancel older pending ones, resulting in
only the first and last workflow actually running.
Instead, allow workflows to run in parallel and use git pull --rebase
before push to handle cases where the branch has moved.
Add React Query mutation hook for bulk workflow triggering:
- Shows success toast with count of triggered workflows
- Shows warning toast if some workflows failed
- Includes link to view workflows on GitHub
Add triggerBulkAddIconWorkflow function that:
- Accepts an array of submission IDs
- Triggers workflows sequentially with 500ms delay
- Returns individual results for each submission
- Handles errors gracefully per-submission
- add-icon.yml: queue workflows sequentially (cancel-in-progress: false)
- update_icons_and_resources.yml: cancel and restart on new triggers (cancel-in-progress: true)
This prevents multiple add-icon workflows from failing due to
non-fast-forward pushes when running concurrently.