Skip to content

chore: migrate to trunk-based development with automated build, merge, and release#2675

Closed
Snailedlt wants to merge 2 commits intodevicons:masterfrom
Snailedlt:chore/trunk-based-dev
Closed

chore: migrate to trunk-based development with automated build, merge, and release#2675
Snailedlt wants to merge 2 commits intodevicons:masterfrom
Snailedlt:chore/trunk-based-dev

Conversation

@Snailedlt
Copy link
Collaborator

Overview

This PR migrates the repository from the current GitFlow model (master + develop) to trunk-based development (master only), with a fully automated icon PR lifecycle.

Motivation

The current workflow requires maintainers to:

  1. Manually trigger Icomoon builds
  2. Manually merge PRs
  3. Manually cut releases

This PR automates all three steps, reducing maintainer toil and making the contribution pipeline more reliable and transparent.

Changes

Removed

  • in_develop_labeler.yml - no longer needed (no develop branch)
  • in_develop_labeler_preflight.yml - same
  • in_develop_labeler.py - same

Updated

  • check_icon_pr.yml - path-based trigger on icons/** and devicon.json instead of branch-based; targets master
  • peek_icons.yml - auto-triggers on all icon PRs (no more manual bot:peek label needed)
  • codeql-analysis.yml - removed develop branch reference
  • build_icons.yml - explicit base: master; kept as manual fallback for full rebuilds
  • CONTRIBUTING.md - updated workflow documentation
  • PULL_REQUEST_TEMPLATE/new_icon.md - updated references

Added

  • auto_build_merge.yml - fires on PR approval; validates icon file changes, checks approval count, runs Icomoon build + CSS, commits font artifacts, squash-merges to master. On failure: comments tagging PR author + approvers, adds build-failed label.
  • version_and_release.yml - fires on push to master for icon/devicon.json changes; reads PR labels (release: major / release: minor / default patch), bumps version, creates GitHub release. Loop prevention: skips build: and chore: bump version commits.

New Icon PR Lifecycle

  1. Contributor opens PR targeting master
  2. check_icon_pr.yml validates SVGs automatically
  3. peek_icons.yml posts font preview screenshot automatically (no label needed)
  4. Maintainer reviews and approves ? auto_build_merge.yml fires:
    • Verifies PR modifies icon files
    • Verifies ?1 approval
    • Runs Icomoon build
    • On failure: notifies PR author + approvers, labels as build-failed
    • On success: commits font files, squash-merges to master
  5. Push to master triggers version_and_release.yml:
    • Determines version bump from PR labels
    • Runs npm version, pushes tag, creates GitHub release
    • Release publication triggers existing npm_publish.yml

Migration Steps (after merging this PR)

  • Merge develop ? master (develop is ~6 commits ahead with new icons)
  • Retarget open PRs from develop ? master (or let them redirect after develop deletion)
  • Update branch protection rules (master only, remove develop rules)
  • Delete develop branch
  • Update wiki pages that reference develop:
    • Overview-on-Submitting-Icons
    • Creating-Pull-Request-for-New-Icon
    • Release-strategy-conventions-preparation-and-execution

@Snailedlt Snailedlt closed this Mar 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant