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`.
This commit is contained in:
David Rheinsberg 2020-03-18 09:28:56 +01:00
parent 1ab282b906
commit 22eeb9a095
3 changed files with 133 additions and 23 deletions

View file

@ -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

76
NEWS.md Normal file
View file

@ -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

View file

@ -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<version-number> -m <some description>
$ git push origin <version-number>
```
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.