From 22eeb9a095d30edd916e128b033d19c23ccaa28b Mon Sep 17 00:00:00 2001 From: David Rheinsberg Date: Wed, 18 Mar 2020 09:28:56 +0100 Subject: [PATCH] build: extend release information and layout This extends on our model how we do releases. It introduces `NEWS.md` as the authoritative source of our release-notes. It is pre-populated with the release-notes from the previous 'v9' release, and contains a suggestion for the upcoming 'v10'. Furthermore, this adds `make release` as a simple checklist target that contains instructions how to create a new release. Note that it is a passive make-target which has no side-effects at all. It only prints release information. With this in place, we can drop `RELEASE.md`, as all information is now combined in `make release`. --- Makefile | 57 ++++++++++++++++++++++++++++++++++++++++ NEWS.md | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ RELEASE.md | 23 ----------------- 3 files changed, 133 insertions(+), 23 deletions(-) create mode 100644 NEWS.md delete mode 100644 RELEASE.md diff --git a/Makefile b/Makefile index 1d0fbe86..8f6c0b72 100644 --- a/Makefile +++ b/Makefile @@ -145,3 +145,60 @@ bump-version: sed -i "s|Version:\(\s*\)$(VERSION)|Version:\1$(NEXT_VERSION)|" osbuild.spec sed -i "s|Release:\(\s*\)[[:digit:]]\+|Release:\11|" osbuild.spec sed -i "s|version=\"$(VERSION)\"|version=\"$(NEXT_VERSION)\"|" setup.py + +.PHONY: release +release: + @echo + @echo "Checklist for release of osbuild-$(NEXT_VERSION):" + @echo + @echo " * Create news entry in NEWS.md with a short description of" + @echo " any changes since the last release, which are relevant to" + @echo " users, packagers, distributors, or dependent projects." + @echo + @echo " Use the following template, break lines at 80ch:" + @echo + @echo "--------------------------------------------------------------------------------" + @echo "## CHANGES WITH $(NEXT_VERSION):" + @echo + @echo " * ..." + @echo + @echo " * ..." + @echo + @echo -n " Contributions from: " + @echo `git log --format='%an, ' v$(VERSION)..HEAD | sort -u | tr -d '\n' | sed 's/, $$//'` + @echo + @echo " - Location, YYYY-MM-DD" + @echo "--------------------------------------------------------------------------------" + @echo + @echo " To get a list of changes since the last release, you may use:" + @echo + @echo " git log v$(VERSION)..HEAD" + @echo + @echo " * Bump the project version. The canonical location is" + @echo " 'setup.py', but 'osbuild.spec' needs to be updated as well." + @echo " You can use the following make-target to automate this:" + @echo + @echo " make bump-version" + @echo + @echo " * Make sure the spec-file is updated for the new release and" + @echo " correctly supports all new features. This should already be" + @echo " done by previous commits that introduced the changes, but" + @echo " a sanity check does not hurt." + @echo + @echo " * Commit the version bump, spec-file changes and NEWS.md in any" + @echo " order you want." + @echo + @echo " * Tag the release via:" + @echo + @echo " git tag -s -m 'osbuild $(NEXT_VERSION)' v$(NEXT_VERSION) HEAD" + @echo + @echo " * Push master as well as the tag:" + @echo + @echo " git push origin master" + @echo " git push origin v$(NEXT_VERSION)" + @echo + @echo " * Create a release on github. Use 'NEWS.md' verbatim from the" + @echo " top until the end of the section for this release as release" + @echo " notes. Use 'v$(NEXT_VERSION)' as release name and as tag for" + @echo " the release." + @echo diff --git a/NEWS.md b/NEWS.md new file mode 100644 index 00000000..c091f6a9 --- /dev/null +++ b/NEWS.md @@ -0,0 +1,76 @@ +# OSBuild - Build-Pipelines for Operating System Artifacts + +## CHANGES WITH 10: + + * A new man-page `osbuild-manifest(5)` is available, which describes + the input format of the JSON manifest that `osbuild` expects. + + * Man-pages can now be built via `make man`. This supports `SRCDIR` and + `BUILDDIR` variables to build out-of-tree. + + * Temporary objects in the object-store are now created in + `.osbuild/tmp/`, rather than in the top-level directory. This should + help cleaning up temporary objects after a crash. If no osbuild + process is running, the `tmp/` subdirectory should not exist. + + * The final stage of a build-pipeline is no longer automatically + committed. You must pass checkpoints via `--checkpoint` to commit + anything to the store. + + * Improve curl timeout handling. This should improve osbuild behavior + with slow or bad mirrors and make sure operations are retried + correctly, or time-out if no progress is made. + + Contributions from: Christian Kellner, David Rheinsberg, Lars Karlitski, + Major Hayden, Tom Gundersen + + - Berlin, 2020-03-18 + +## CHANGES WITH 9: + + * The last pipeline stage is no longer automatically committed to the + store. This used to be a special case to make things work, but it has + now been properly fixed. + From now on, if you want a stage committed to the store, you need to + pass a `--checkpoint` option for the stage. + + * The runner for the host system is now auto-detected. The + `runners/org.osbuild.default` symlink is now longer required (nor + supported). + + * A generic runner named `org.osbuild.linux` was added. This runner + uses the default value of `ID` in `/etc/os-release`. That is, if the + local OS cannot be detected, or if no `os-release` file is provided, + this is the fallback runner that is used. + This runner only performs the bare minimum of initialization. It is + enough to run the most basic stages on all systems we tested. + + * On Archlinux, the generic runner will now be used. + + * A new runner for RHEL-8.1 is available. + + * The JSON input to `osbuild` is now a monolithic manifest format which + contains all build information. For now, this means the input + manifest can contain a `pipeline:` key with the pipeline definition, + as well as a `sources:` key with external source definitions + previously passed via `--sources`. + The old input format is still supported, but will be dropped in the + next release. + + * The osbuild sources now come with a man-page `osbuild(1)`. Further + pages will follow in the future. + + Contributions from: Christian Kellner, David Rheinsberg, Jacob Kozol, + Lars Karlitski, Major Hayden, Martin Sehnoutka, Tom + Gundersen + + - Berlin, 2020-03-05 + +## CHANGES BEFORE 9: + + * Initial implementation of 'osbuild'. + + Contributions from: Brian C. Lane, Christian Kellner, David Rheinsberg, + Jacob Kozol, Lars Karlitski, Major Hayden, Martin + Sehnoutka, Ondřej Budai, Sehny, Tom Gundersen, + Tomas Tomecek, Will Woods diff --git a/RELEASE.md b/RELEASE.md deleted file mode 100644 index d8e5d143..00000000 --- a/RELEASE.md +++ /dev/null @@ -1,23 +0,0 @@ -# How to create new release - -Use the `bump-version` target to bump the version: - -``` -$ make bump-version -``` -Check that the spec file is correctly modified. -Create new commit from this change; this commit will become the new tag. -The name of the tag should the be the new version number prefixed by `v`. -``` -$ git tag -a v -m -$ git push origin -``` - - -Create new release on Github containing the number of this release as its -name, the same number as a tag, and description copied from the previous -one. - - -Once the Github release is available, follow the standard procedure for -creating a Fedora update.