Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release process fix & major/minor/rev macro addition #8126

Merged
merged 11 commits into from
Jun 16, 2021
12 changes: 12 additions & 0 deletions cores/esp8266/core_version.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,18 @@
#define ARDUINO_ESP8266_GIT_DESC unspecified
#endif

#ifndef ARDUINO_ESP8266_MAJOR
#define ARDUINO_ESP8266_MAJOR 0
#endif

#ifndef ARDUINO_ESP8266_MINOR
#define ARDUINO_ESP8266_MINOR 0
#endif

#ifndef ARDUINO_ESP8266_REVISION
#define ARDUINO_ESP8266_REVISION 0
#endif

// ARDUINO_ESP8266_RELEASE is defined for released versions as a string containing the version name, i.e. "2_3_0_RC1"
// ARDUINO_ESP8266_RELEASE is used in the core internally. Please use ESP.getCoreVersion() function instead.

Expand Down
38 changes: 18 additions & 20 deletions package/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ Here is a rough overview of the effective release process. See the section below
* Prepare release notes in Markdown format.

* For changes that are breaking, duplicate those changes and put the duplicate lines into a separate group called Breaking Changes. That group should go at the top of the Changelog. The original lines for the breaking changes should be marked by appending "(Breaking change)" to the line. Example:

```
Breaking Changes
================
Expand Down Expand Up @@ -141,7 +141,7 @@ The following points assume work in a direct clone of the repository, and not in
8. Wait for Travis CI build for the tag to pass, see https://travis-ci.org/esp8266/Arduino/builds,


9. Check that the new (draft) release has been created (no editing at this point!), see https://github.com/esp8266/Arduino/releases.
9. Check that the new (draft) release has been created (no editing at this point!), see https://github.com/esp8266/Arduino/releases.

10. Check that the boards manager package .zip file has been successfully uploaded as a release artifact.

Expand All @@ -167,41 +167,39 @@ The following points assume work in a direct clone of the repository, and not in
--------------COPY BELOW THIS LINE--------------
[Reference](https://github.com/esp8266/Arduino/tree/master/package#creating-a-release-for-maintainers) for details.

- [ ] 1. Open a new issue to track activities.
- [ ] 1. Make sure that no issues or PRs are assigned to the milestone to be released.

- [ ] 2. Make sure that no issues or PRs are assigned to the milestone to be released.
- [ ] 2. Open a new issue to track activities.

- [ ] 3. Assemble release notes.

- [ ] 4. Make a PR with the following, [wait for Travis CI](https://travis-ci.org/github/esp8266/Arduino/builds/), and merge.
- [ ] 4. Make a PR with the following, [wait for CI](https://github.com/esp8266/Arduino/pull/8034/checks), and merge.

* [platform.txt](https://github.com/esp8266/Arduino/blob/master/platform.txt)
* [package.json](https://github.com/esp8266/Arduino/blob/master/package.json)
* [cores/esp8266/TZ.h](https://github.com/esp8266/Arduino/blob/master/cores/esp8266/TZ.h)

- [ ] 5. Wait until the release notes have been checked by other maintainers

- [ ] 6. Navigate to [Travis CI options](https://travis-ci.org/esp8266/Arduino/settings), enable ´Build pushed branches´ (before tagging in next step)
* [TZ.h](https://github.com/esp8266/Arduino/blob/master/cores/esp8266/TZ.h) (<= `cd tools; ./TZupdate.sh`)

- [ ] 7. Tag the latest commit on the master branch, then push it to esp8266/Arduino
- [ ] 5. Wait until the release notes have been checked by other maintainers (can be changed afterwards anyway)

- [ ] 8. Wait for Travis CI build for the tag to pass, see https://travis-ci.org/esp8266/Arduino/builds,
- [ ] 6. Tag the latest commit on the master branch, then push it to esp8266/Arduino
add: `git tag -a -m "Release 3.0.0" 3.0.0; git push origin 3.0.0`
remove: `git tag -d X.Y.Z; git push --delete origin X.Y.Z`

- [ ] 9. Check that the new (draft) release has been created (no editing at this point!), see https://github.com/esp8266/Arduino/releases.
- [ ] 7. Wait for CI build for the tag to pass (in `Actions` menu)

- [ ] 10. Check that the boards manager package .zip file has been successfully uploaded as a release artifact.
- [ ] 8. Check that the new (draft) release has been created (no editing at this point!), see https://github.com/esp8266/Arduino/releases.

- [ ] 11. Check that the package index downloaded from https://arduino.esp8266.com/stable/package_esp8266com_index.json contains an entry for the new version (it may not be the first one).
- [ ] 9. Check that the boards manager package .zip file has been successfully uploaded as a release artifact.

- [ ] 12. Return to the [Travis CI options](https://travis-ci.org/esp8266/Arduino/settings) and disable `Build pushed branches`.
- [ ] 10. Check that the package index downloaded from https://arduino.esp8266.com/stable/package_esp8266com_index.json contains an entry for the new version (it may not be the first one).

- [ ] 13. Navigate to [release list in Github](https://github.com/esp8266/Arduino/releases), press "Edit" button to edit release description, paste release notes, and publish it.
- [ ] 11. Navigate to [release list in Github](https://github.com/esp8266/Arduino/releases), press "Edit" button to edit release description, paste release notes, and publish it.

- [ ] 14. In the issue tracker, remove "staged-for-release" label for all issues which have it, and close them. Close the milestone associated with the released version (the milestone should be empty per point 2 above)
- [ ] 12. In the issue tracker, remove "staged-for-release" label for all issues which have it, and close them. Close the milestone associated with the released version (the milestone should be empty per point 1 above)

- [ ] 15. Check that https://arduino-esp8266.readthedocs.io/en/latest/ has a new doc build for the new tag, and that "stable" points to that build. If a new build did not trigger, log into readthedoc's home here https://readthedocs.org/ (account must have been added to project as maintainer) and trigger it manually.
- [ ] 13. Check that https://arduino-esp8266.readthedocs.io/en/latest/ has a new doc build for the new tag, and that "stable" points to that build. If a new build did not trigger, log into readthedoc's home here https://readthedocs.org/ (account must have been added to project as maintainer) and trigger it manually.

- [ ] 16. Create a commit to the master branch, updating:
- [ ] 14. Create a commit to the master branch, updating:

* The version in platform.txt and package.json files. This should correspond to the version of the *next* milestone, plus `-dev` suffix. E.g. `3.1.0-dev`.
* In main README.md go to "Latest release" section, change version number in the readthedocs link to the version which was just released, and verify that all links work.
Expand Down
13 changes: 7 additions & 6 deletions package/build_boards_manager_package.sh
Original file line number Diff line number Diff line change
Expand Up @@ -109,12 +109,13 @@ $SED -E "s/name=([a-zA-Z0-9\ -]+).*/name=\1(${ver})/g"\
> ${outdir}/platform.txt

# Put core version and short hash of git version into core_version.h
ver_define=`echo "${plain_ver}" | tr "[:lower:]." "[:upper:]_"`
echo "ver_define: ${ver_define} (plain_ver: ${plain_ver})"
echo "#define ARDUINO_ESP8266_GIT_VER 0x`git rev-parse --short=8 HEAD 2>/dev/null`" >${outdir}/cores/esp8266/core_version.h
echo "#define ARDUINO_ESP8266_GIT_DESC `git describe --tags 2>/dev/null`" >>${outdir}/cores/esp8266/core_version.h
echo "#define ARDUINO_ESP8266_RELEASE_${ver_define}" >>${outdir}/cores/esp8266/core_version.h
echo "#define ARDUINO_ESP8266_RELEASE \"${ver_define}\"" >>${outdir}/cores/esp8266/core_version.h
#ver_define=`echo "${plain_ver}" | tr "[:lower:]." "[:upper:]_"`
#echo "ver_define: ${ver_define} (plain_ver: ${plain_ver})"
#echo "#define ARDUINO_ESP8266_GIT_VER 0x`git rev-parse --short=8 HEAD 2>/dev/null`" >${outdir}/cores/esp8266/core_version.h
#echo "#define ARDUINO_ESP8266_GIT_DESC `git describe --tags 2>/dev/null`" >>${outdir}/cores/esp8266/core_version.h
#echo "#define ARDUINO_ESP8266_RELEASE_${ver_define}" >>${outdir}/cores/esp8266/core_version.h
#echo "#define ARDUINO_ESP8266_RELEASE \"${ver_define}\"" >>${outdir}/cores/esp8266/core_version.h
python3 ${srcdir}/tools/makecorever.py -b ${outdir} -i cores/esp8266 -p ${srcdir} -v ${plain_ver}
d-a-v marked this conversation as resolved.
Show resolved Hide resolved

# Zip the package
pushd package/versions/${visiblever}
Expand Down
25 changes: 21 additions & 4 deletions tools/makecorever.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,23 +20,40 @@
import argparse
import os
import subprocess
import re


def generate(path, platform_path, git_ver="ffffffff", git_desc="unspecified"):
def generate(path, platform_path, git_ver="ffffffff", platform_version="unspecified"):
def git(*args):
cmd = ["git", "-C", platform_path]
cmd.extend(args)
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, universal_newlines=True, stderr=subprocess.DEVNULL)
return proc.stdout.readlines()[0].strip()

git_desc = platform_version;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Following the above, should this have additional param to skip git-describe?
Meaning, this still could still work with a shallow copy or with some broken tagging (like github actions checkout does)

Copy link
Collaborator Author

@d-a-v d-a-v Jun 16, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tagging works OK including when used by github-action. Releases are based on tagging.
I updated the script per your 3 reviews and added comments.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

broken == checkout doing git fetch origin +$commit-sha$:refs/tags/$tag-name$, which is worked around with fetch-depth:0... which could be avoided

my only problem with that is that version string depends on too much stuff, where we already know it from the tag name anyway; and commit sha comes from rev-parse regardless, shallow copy or not.

try:
git_ver = git("rev-parse", "--short=8", "HEAD")
git_desc = git("describe", "--tags")
except Exception:
pass

text = "#define ARDUINO_ESP8266_GIT_VER 0x{}\n".format(git_ver)
text += "#define ARDUINO_ESP8266_GIT_DESC {}\n".format(git_desc)
text = "#define ARDUINO_ESP8266_GIT_VER 0x{}\n".format(git_ver)
text += "#define ARDUINO_ESP8266_GIT_DESC {}\n".format(git_desc)
text += "\n"

version = re.split("\.", platform_version)
# major: if present, skip "unix-" in "unix-3"
text += "#define ARDUINO_ESP8266_MAJOR {}\n".format(re.split("-", version[0])[-1])
text += "#define ARDUINO_ESP8266_MINOR {}\n".format(version[1])
# revision can be ".n" or ".n-dev"
revision = re.split("-", version[2])
text += "#define ARDUINO_ESP8266_REVISION {}\n".format(revision[0])
text += "\n"
if len(revision) > 1:
text += "#define ARDUINO_ESP8266_DEV 1 // developpment version\n"
else:
text += "#define ARDUINO_ESP8266_RELEASE \"{}\"\n".format(git_desc)
text += "#define ARDUINO_ESP8266_RELEASE_{}\n".format(re.sub("[-\.]", "_", git_desc))
d-a-v marked this conversation as resolved.
Show resolved Hide resolved

try:
with open(path, "r") as inp:
Expand Down Expand Up @@ -79,5 +96,5 @@ def git(*args):
generate(
os.path.join(include_dir, "core_version.h"),
args.platform_path,
git_desc=args.version,
platform_version=args.version,
)