Repository navigation
fix: pin runners to ubuntu-24.04, Python 3.10 and selenium 4.1.0 - #70
Merged
Merged
Conversation
- auto_build_merge.yml: stripped to validate + squash merge only (no build) - build_icons.yml: emergency fallback, commits directly to master (no PR) - version_and_release.yml: deprecated, workflow_dispatch only - CLAUDE.md: added project guide for Claude Code Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Artifact 'pr_num' downloads to ./pr_num/pr_num.txt, not ./peek-pr-num/pr_num.txt. This caused step 5 to fail, skipping all comment steps. Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
- Remove dependency on IMGUR_CLIENT_ID secret
- Upload screenshots to 'screenshots' branch under pr-{num}/ subdirectory
- Serve images via raw.githubusercontent.com (public, no auth needed)
- Rewrite comment steps using github-script (removes jungwinter/comment
and juliangruber/read-file-action dependencies)
- Fix pr_num reading using bash instead of read-file-action
- Fix failure comment using github-script instead of literal env.MESSAGE
Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
RANGE='HEAD' gives git diff nothing to compare against. Use 'first-commit..HEAD' to cover all history on first run.
Priority order for determining range: 1. Last 'build:' prefixed commit (normal case) 2. Last vX.Y.Z release tag (first run after migration) 3. First commit in repo (truly fresh repo with no releases)
- Add 'Install Firefox' step via apt before Icomoon build - Add 'Make geckodriver executable' step (chmod +x) - Auto-create 'build-failed' label if it doesn't exist before creating issue - Fix core.setFailed message (remove em dash)
Wrap get_merged_pull_reqs_since_last_release in try-except so that if the GitHub API call fails (e.g. in test environments where the hardcoded devicons/devicon URL returns errors), we fall back to find_new_icons_in_devicon_json which compares devicon.json vs icomoon.json directly.
- Replace apt-get firefox (snap, broken with geckodriver) with browser-actions/setup-firefox (proper .deb binary) - Switch from icomoon_build.py to icomoon_build_githubless.py which needs no GitHub token and uses devicon.json vs icomoon.json diff directly
- Take screenshot on page load so we can see icomoon.io current state - Try original 'icon-menu' selector first (6s), fall back to 'input[type=file]' - Take screenshot when fallback is triggered and on failure - Upload screenshots as build artifact in build_nightly.yml
element.screenshot() fails with 'Unable to capture screenshot' when the element contains a cross-origin canvas (icomoon.io uses canvas for icon rendering). driver.save_screenshot() bypasses this.
The Angular app on icomoon.io can be slow to initialize. LONG_WAIT_IN_SEC (25s) was too short on slow runners. 90s gives enough headroom for the page to fully render.
select_all_icons_in_top_set and deselect_all_icons_in_top_set use fragile icomoon.io UI selectors that fail intermittently. These are only needed for screenshots/visual ordering, not for actual font generation. Wrap in try-except so the build continues even if they fail.
…tion deselect_all succeeded but select_all failed intermittently, leaving 0 icons selected and generating an empty font. Icons from uploaded icomoon.json and new SVGs are selected by default in icomoon.io, so deselecting is not needed for correct font generation. Screenshots will show all icons (not just new ones) but font is correct.
Peek bot (icomoon_peek.py / PeekSeleniumRunner): - Fix click_hamburger_input to target the first set header dynamically instead of the hardcoded #setH2 id, which was pointing at the wrong (IcoMoon Free) set and causing select_all to select the wrong icons. - Remove new_svgs.png full-panel overview from peek_svgs — the per-SVG edit_svg shots (new_svg_*.png) taken during upload are already scoped correctly and are not affected by the set-selector bug. - Remove new_icons.png full-panel overview from peek_icons and cap the glyphSet0 iteration to num_svgs entries as a hard guard against default-set icons bleeding into the font preview. - PR comment no longer references the two removed overview images. Build runner (BuildSeleniumRunner): - Call deselect_all_icons_in_top_set before uploading new SVGs so that only new icons are selected for the build screenshot. download_icomoon_fonts calls select_all before font generation, so the full set is still used. - Remove non-fatal try/except wrappers now that the hamburger selector fix makes the operations reliable. build_nightly.yml: - Split single job into build + release. The release job targets the production GitHub Environment so maintainers receive an approval request before the version bump and GitHub release are published. - Release is now published (not draft) once approved. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
….json diff icomoon_build_githubless.py: when devicon.json has no icons absent from icomoon.json, return cleanly (exit 0) instead of calling sys.exit with a message string (which exits 1 and triggers a false build-failure alert). build_nightly.yml: change build_ok to require that icomoon.json was actually modified during the run. The build script only writes to icomoon.json when new icons are processed, so a clean git diff on that file is a reliable signal that something was built. This prevents a version bump + release when commits touch icons/ but contain no new icons (e.g. SVG attribute tweaks). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Drop in-develop issue closing from icomoon_build.py (GitHub closes linked issues when PRs merge to master) and its unused arg getter - Replace README develop vs master section with trunk-based workflow description; point Gitpod and PR template links at master - Upgrade codeql-action to v3, fix stale Node.js step name - Update docs/comments to reflect the weekly build schedule Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e helpers The workflow runs weekly, so the file name now matches. label_issues, close_issues and get_issues_by_labels in api_handler.py were only used by the removed in-develop flow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…from the release - Add workflow_dispatch 'mode' input: build and release / build only / release only. Replaces build_icons.yml and version_and_release.yml. - Derive the version bump in the release job from PRs merged since the last v* tag, so it also works for release-only runs. - Release job checks out master explicitly so it includes the build: commit pushed by the build job; build job rebases before pushing. - Call npm_publish.yml as a reusable workflow: releases created with GITHUB_TOKEN don't trigger 'release' events, so npm was never published. - Serialize runs with a concurrency group. - Update CONTRIBUTING release section and CLAUDE.md; add TODO for a local (non-icomoon) font build. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…token - Remove auto_build_merge.yml: on fork PRs pull_request_review only gets a read-only token, so it couldn't merge. Merging is now governed by a ruleset on master (1 approval, squash only). - build_weekly.yml: push build/version commits with a GitHub App token (vars.BOT_APP_ID, secrets.BOT_APP_PRIVATE_KEY) so it can bypass master protection; falls back to GITHUB_TOKEN when not configured. Releases are still created with GITHUB_TOKEN to avoid a double npm publish. - npm_publish.yml: dry run outside devicons/devicon. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…anged Build: - Rebuild an icon's glyphs when its non-alias font versions in devicon.json don't match icomoon.json, or one of its font SVGs changed since the last build commit. Previously only icons missing from icomoon.json were built, so 'update icon' PRs never reached the font. - Match glyphs by exact icon name when removing them from icomoon.json. Release: - Release when icons, devicon.json, CSS or fonts changed since the last tag, instead of only when icomoon.json changed. Decided in the build job so weeks with nothing to ship don't request an approval. - Remove the manual 'mode' input; a manual run does what the weekly run does (reject the approval to build without releasing). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…PR titles check_icon_pr.yml and peek_icons.yml only worked out which icon a PR is about from its title, and the check only ran for titles starting with 'new icon'/'update icon'. Icon PRs titled e.g. 'feat: add verilog icon' skipped SVG validation and peek entirely. - util.get_pr_icon_changes: diff the PR merge commit against HEAD^1 to find changed icon SVGs and devicon.json entries. - check_icon_pr.py: validate every touched icon. When SVGs change, require one icon per PR and a title matching it: 'new icon:' vs 'update icon:' (from the target branch's devicon.json), the folder name, and the added/changed SVG versions. Errors include the expected title. devicon.json-only PRs have no title requirement. - check_icon_pr.yml: run on every icon PR (no title gate), re-run when the title is edited. - icomoon_peek.py: peek the icon whose SVGs changed; skip quietly when none did. post_peek_screenshot.yml posts nothing in that case. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- ubuntu-latest is now Ubuntu 26.04, which has no Python 3.8 build, so the check and peek jobs failed in setup-python. Pin the Python jobs to ubuntu-24.04 (as upstream develop did in devicons#2769). - requests 2.34.2 needs Python >= 3.10: move check/peek from 3.8 to 3.10 (the weekly build already uses 3.10). - selenium 4.51.0 (from devicons#2766) removed the find_element_by_* API the Selenium runners use; go back to 4.1.0, which earlier builds used. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes the failing Check Icon PR and Peek Icons runs on #69.
ubuntu-latestis now Ubuntu 26.04, which has no Python 3.8 build, sosetup-pythonfailed. The Python jobs (check, peek, weekly build) now run onubuntu-24.04, as upstreamdevelopdid in chore: update workflow runners to ubuntu-24.04 devicons/devicon#2769.requests==2.34.2needs Python ≥ 3.10, so check/peek move from 3.8 to 3.10 (the weekly build already uses 3.10).selenium==4.51.0(from the requirements upgrade in chore(deps): upgrade requirements.txt packages devicons/devicon#2766) removed thefind_element_by_*API our Selenium runners use. Back to4.1.0, which the earlier test builds used.🤖 Generated with Claude Code