mirror of
https://github.com/json-c/json-c.git
synced 2026-11-05 21:20:16 +08:00
Add scripts to handle most of the first couple steps of creating a release.
This commit is contained in:
1 parent
f3b950584c
commit
e9750720c3
3 files changed
+103
-38
No files matched your search
+48
-38
@@ -3,8 +3,6 @@
|
|||||||
|
|
||||||
## Pre-release tasks
|
## Pre-release tasks
|
||||||
|
|
||||||
* Figure out whether a release is worthwhile to do.
|
|
||||||
|
|
||||||
Tiny/patch releases require some manual work:
|
Tiny/patch releases require some manual work:
|
||||||
|
|
||||||
* Apply changes to the release branch, merge or cherry-pick
|
* Apply changes to the release branch, merge or cherry-pick
|
||||||
@@ -14,48 +12,60 @@ Tiny/patch releases require some manual work:
|
|||||||
|
|
||||||
The rest of these instructions assume you're creating a minor or major release.
|
The rest of these instructions assume you're creating a minor or major release.
|
||||||
|
|
||||||
* Load release shell functions
|
* Figure out whether a release is worthwhile to do.
|
||||||
* `. reltools/reltools.subr`
|
* `./reltools/release_step1.sh`
|
||||||
* `set_rel_vars`
|
|
||||||
* Analyze the previous release branch to see if anything should have been
|
|
||||||
applied to master.
|
|
||||||
* `git log -r "${RELBASE}..${RELBRANCH}" | less`
|
|
||||||
* Look for anything other than generating docs, bumping the release
|
|
||||||
version, or changes cherry-picked from master.
|
|
||||||
* Collect changes and assemble tentative release notes.
|
|
||||||
* Create "Notes for v0.xx release" page at https://github.com/json-c/json-c/wiki
|
|
||||||
* Check commit logs between previous branch point and now for
|
|
||||||
notable changes worth mentioning.
|
|
||||||
* `git log --reverse -r "${RELBASE}"..master | less`
|
|
||||||
* Create a new issues_closed_for_X.Y.md file
|
|
||||||
* `./reltools/gen_issues_closed.md`
|
|
||||||
* Include notable entries from here in the release notes.
|
|
||||||
* Analyze APIs between previous release branch and master to produce list of
|
|
||||||
changes (added/removed/updated funcs, etc...), and detect backwards compat
|
|
||||||
issues.
|
|
||||||
* https://github.com/lvc/abi-compliance-checker
|
|
||||||
* `./abi-check.sh`
|
|
||||||
* If the new release is not backwards compatible, then this is a MAJOR release.
|
|
||||||
* Mention removed features in ChangeLog
|
|
||||||
* Consider re-adding backwards compatible support, through symbol
|
|
||||||
aliases and appropriate entries in json-c.sym
|
|
||||||
* Be sure any new symbols are listed in json-c.sym as part of
|
|
||||||
the _new_ release version.
|
|
||||||
* Update the AUTHORS file
|
|
||||||
* `update_authors`
|
|
||||||
|
|
||||||
* Exclude mentioning changes that have already been included in a point
|
* This will drop you in a shell and recomment git commands to:
|
||||||
release of the previous release branch.
|
* Analyze the previous release for missed patches
|
||||||
|
* Look for anything other than generating docs, bumping the release
|
||||||
|
version, or changes cherry-picked from master.
|
||||||
|
* Check commit logs since the previous release.
|
||||||
|
* Update the ChangeLog with notable changes (or defer to a later step)
|
||||||
|
|
||||||
* Update ChangeLog with relevant notes *before* branching.
|
* Collect changes and assemble tentative release notes.
|
||||||
|
* Create "Notes for v0.xx release" page at https://github.com/json-c/json-c/wiki
|
||||||
|
to track release status and coordinate on release creation.
|
||||||
|
|
||||||
* Check that GitHub Actions are all working - https://github.com/json-c/json-c/actions
|
* Yes, let's create a release:
|
||||||
* Check that the compile works on Linux - automatic through Travis
|
|
||||||
* Check that the compile works on NetBSD
|
* `./reltools/release_step2.sh`
|
||||||
* Check that the compile works on Windows - automatic through AppVeyor
|
|
||||||
|
* Update ChangeLog with relevant notes *before* branching.
|
||||||
|
* Exclude mentioning changes that have already been included in a point
|
||||||
|
release of the previous release branch.
|
||||||
|
|
||||||
|
* Examine issues_closed_for_${NEXT_RELVER}", update ChangeLog with notable entries.
|
||||||
|
|
||||||
|
* Examine ${HOME}/abi-compliance-checker/compat_reports/json-c/...
|
||||||
|
* Generated by https://github.com/lvc/abi-compliance-checker
|
||||||
|
* Analyze APIs between previous release to produce list of
|
||||||
|
changes (added/removed/updated funcs, etc...), and detect backwards
|
||||||
|
compat issues.
|
||||||
|
* If the new release is not backwards compatible, then this is a MAJOR
|
||||||
|
release, i.e. 0.N -> 1.0.
|
||||||
|
* Consider re-adding backwards compatible support, through symbol
|
||||||
|
aliases and appropriate entries in json-c.sym
|
||||||
|
* Mention removed features in ChangeLog
|
||||||
|
* Be sure any new symbols are listed in json-c.sym as part of
|
||||||
|
the _new_ release version.
|
||||||
|
|
||||||
|
* Update json-c.sym to list any new symbols in the _new_ release version
|
||||||
|
* `release_step2.sh` will emit a summary of changes
|
||||||
|
* Or, examine the ABI report to identify added/removed symbols
|
||||||
|
|
||||||
|
* Examine the AUTHORS file for duplicates and other automatic update mistakes.
|
||||||
|
|
||||||
|
* Check builds
|
||||||
|
* Check that GitHub Actions are all working - https://github.com/json-c/json-c/actions
|
||||||
|
* Check that the compile works on Linux - automatic through Travis
|
||||||
|
* Check that the compile works on NetBSD
|
||||||
|
* Check that the compile works on Windows - automatic through AppVeyor
|
||||||
|
|
||||||
## Release creation
|
## Release creation
|
||||||
|
|
||||||
|
At this point, all work to update ChangeLog and other files, fix build or
|
||||||
|
test errors, and generally plan the release should be done.
|
||||||
|
|
||||||
Start creating the new release:
|
Start creating the new release:
|
||||||
|
|
||||||
. reltools/reltools.subr
|
. reltools/reltools.subr
|
||||||
|
|||||||
Executable
+34
@@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Step 1 of creating a release:
|
||||||
|
# Determine whether a release is worth doing
|
||||||
|
|
||||||
|
set -e -o pipefail
|
||||||
|
|
||||||
|
RUNDIR=$(dirname "$0")
|
||||||
|
|
||||||
|
. "${RUNDIR}/reltools.subr"
|
||||||
|
set_rel_vars
|
||||||
|
|
||||||
|
cat <<EOF
|
||||||
|
RELTAG=${RELTAG}
|
||||||
|
RELVER=${RELVER}
|
||||||
|
RELBRANCH=${RELBRANCH}
|
||||||
|
RELBASE=${RELBASE}
|
||||||
|
NEXT_RELVER=${NEXT_RELVER}
|
||||||
|
|
||||||
|
Analyze previous release branch to see if anything should have been
|
||||||
|
applied to master:
|
||||||
|
|
||||||
|
git log -r "${RELBASE}..${RELBRANCH}" | less
|
||||||
|
|
||||||
|
Check commit logs between previous branch point and now for notable changes.
|
||||||
|
|
||||||
|
git log --reverse -r "${RELBASE}"..master | less
|
||||||
|
|
||||||
|
Starting shell:
|
||||||
|
EOF
|
||||||
|
|
||||||
|
$SHELL
|
||||||
|
|
||||||
|
echo "$0: done"
|
||||||
Executable
+21
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Step 2 of creating a release:
|
||||||
|
# We've decided a release is worth doing
|
||||||
|
# Update automatic bits
|
||||||
|
# Collect information needed to populate changelog, etc...
|
||||||
|
|
||||||
|
set -e -o pipefail
|
||||||
|
|
||||||
|
RUNDIR=$(dirname "$0")
|
||||||
|
|
||||||
|
cd "${RUNDIR}"
|
||||||
|
|
||||||
|
./gen_issues_closed.sh
|
||||||
|
|
||||||
|
../abi-check.sh
|
||||||
|
|
||||||
|
./update_authors.sh
|
||||||
|
|
||||||
|
./check_symbols.sh || true
|
||||||
|
|
||||||
Reference in new issue
Block a user