diff --git a/.github/ISSUE_TEMPLATE/new_release.md b/.github/ISSUE_TEMPLATE/new_release.md new file mode 100644 index 0000000000..1406f04e30 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/new_release.md @@ -0,0 +1,53 @@ + +Instructions for performing an ADIOS2 release: + +- [ ] Make sure that the milestone for @VERSION@ has no pending issues/PRs. +- [ ] Update your remotes +`` +git fetch origin +git fetch github #if needed +`` +- [ ] Create a branch that updates the version + +``` +git checkout -b bump-release-version origin/release_@MAJOR@@MINOR@ +``` + +``` +git checkout -b bump-release-version origin/master +``` + +- [ ] Add Commit that updates the version in the repo +``` +git grep --name-only @OLD_RELEASE@ | xargs -n1 sed -i 's/@OLD_RELEASE@/@VERSION@/g' +git commit -am 'Bump version to v@VERSION@' +git push +``` +- [ ] Create PR (BASE to master if release_@MAJOR@@MINOR@ does not exists; otherwise release_@MAJOR@@MINOR@) +- [ ] Ask for review +- [ ] Merge PR +- [ ] Create Tag commit `git tag -a v@VERSION@ the_merge_commit` +- [ ] Create Release in GitHub page + - Use the following script for getting the PR of this release + - `./scripts/developer/create-changelog.sh v@VERSION@ v@OLD_RELEASE@` + - Copy its content to the release description + +- [ ] Create the release_@MAJOR@@MINOR@ branch +``` +git fetch origin +git checkout -b release_@MAJOR@@MINOR@ origin/master +# Use the following command with care +git push origin +``` + +- [ ] Create PR that merges release_@MAJOR@@MINOR@ into master +- [ ] Submit a PR in Spack that adds this new version of ADIOS (if not RC mark this new version as preferred) +- [ ] Write an announcement in the ADIOS-ECP mail-list + (https://groups.google.com/a/kitware.com/g/adios-ecp) diff --git a/scripts/developer/create-changelog.sh b/scripts/developer/create-changelog.sh new file mode 100755 index 0000000000..ceb6f7173e --- /dev/null +++ b/scripts/developer/create-changelog.sh @@ -0,0 +1,43 @@ +#!/bin/bash +# author: Vicente Bolea + +function require_dependency() +{ + if ! command -v "$1" &> /dev/null + then + echo "[E] Missing dependencies: $1" + exit 1 + fi +} + +require_dependency "jq" +require_dependency "gh" +require_dependency "csvlook" + +if [ "$#" != "2" ] +then + echo "[E] Wrong arguments. Invoke as:" + echo "scripts/developer/create-changelog.sh " + exit 2 +fi + +new_release="$1" +old_release="$2" + +prs="$(git log --oneline --grep='Merge pull request ' "^${old_release}" "${new_release}" | grep -Po '\s#\K[0-9]+')" +num_prs="$(wc -w <<<"$prs")" + +echo "[I] Found $num_prs PRs" + +# Header first +output=("PR, Title") +i=0 +for pr in ${prs} +do + printf "\r[I] Processing: PR=%06d progress=%05d/%05d" "$pr" "$i" "$num_prs" + output+=("$(gh api "/repos/ornladios/ADIOS2/pulls/$pr" | jq -r '["#\(.number)", .title] | @csv')") + ((i++)) +done +echo "" + +printf '%s\n' "${output[@]}" | csvlook