Goals, and how achieved
- Avoid conflicts in
NEWS.md
andDESCRIPTION
- Bumping to CRAN version and back to dev version is atomic, no dangling release branch
- Support for subsequent release attempts off of a branch created from a tag
- Easy to undo a release attempt
- Pre-flight with
plan_release("pre-patch")
, including grooming ofNEWS.md
- Caveat: once committed to a release, there is no way back, to avoid conflicts
- Pre-flight with
- More rigorous checks before release
- On GitHub Actions for branches that start with
cran-
- Locally through
urlchecker::url_update()
,devtools::check_win_devel()
, andrhub::check_for_cran()
- TODO: Compatibility with
usethis::use_release_issue()
- On GitHub Actions for branches that start with
- Minimize interactive wait time
- Checks run on GitHub Actions for branches that start with
cran-
- TODO: Use background jobs via
job::empty()
where useful
- Checks run on GitHub Actions for branches that start with
- Compatibility with auto-merge and merge queues
- GHA workflow
- Commits/merges made by fledge are not newsworthy
- Support merge and squash commits
- We can always create a tag
- PR merge is triggered by user
- Support for dev version header
- TODO: Composable workflow, grooming can be separate from release
- Compatibility with manual release workflow
plan_release("pre-patch")
- Consistency with
usethis::use_release_issue()
- TODO: snapshot tests for
usethis:::release_checklist()
, maintain own list
- TODO: snapshot tests for
Non-goals
- Always release from main branch
- Conflicts with important goal to avoid conflicts, and also with auto-merge and merge queues
- Release from main branch possible in some cases
Workflow
-
Optional, recommended because grooming the NEWS often gives a hint about what’s missing in a release:
fledge::plan_release("pre-patch")
(or"pre-minor"
or"pre-major"
)Edit
NEWS.md
as neededPerform any release-related tasks
Merge PR
-
Mandatory:
fledge::plan_release("next")
(or"minor"
or"major"
)Perform work from previous step if omitted
fledge::release()
(FIXME: also by merging PR)
-
If submission rejected:
fledge::plan_release("last")
(FIXME)Apply hotfixes required to submit
fledge::release()
(FIXME: also by merging PR)
-
If submission abandoned:
- No action required