Skip to content

Commit

Permalink
Prep for GEOS 3.8.4 release
Browse files Browse the repository at this point in the history
Put in logic to build releases using GHA
  • Loading branch information
robe2 committed Nov 12, 2023
1 parent a463169 commit fdde35b
Show file tree
Hide file tree
Showing 5 changed files with 126 additions and 22 deletions.
77 changes: 77 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
#
# GitHub Actions for GEOS Web Pages
# Paul Ramsey <[email protected]>, Regina Obe <[email protected]>
#

#
# Only run on tag
# Only release if distcheck succeeds
# Only release of the tag name is identical to the full version
# Use the first block of NEWS entries as release notes
#

name: 'Release'

on:
push:
tags:
- '*.*.*'

jobs:
release:
name: 'Release on Tag'
runs-on: ubuntu-latest

# Only run docbuild on central repo
if: github.repository == 'libgeos/geos'
steps:

- name: 'Install'
run: |
pwd
uname -a
sudo -E apt-get -yq --no-install-suggests --no-install-recommends install make doxygen
- name: 'Check Out'
uses: actions/checkout@v3

- name: Get tag
id: tag
uses: dawidd6/action-get-tag@v1

- name: 'Read Version'
id: version
run: |
pwd
source Version.txt
GEOS_FULL_VERSION=${GEOS_VERSION_MAJOR}.${GEOS_VERSION_MINOR}.${GEOS_VERSION_PATCH}${GEOS_PATCH_WORD}
echo GEOS_FULL_VERSION $GEOS_FULL_VERSION
echo "::set-output name=geosversion::${GEOS_FULL_VERSION}"
- name: 'Create Release Notes'
id: notes
run: |
pwd
perl tools/ci/releasenotes.pl NEWS > release.md
echo "::set-output name=geosnotes::./release.md"
- name: 'Bundle & Check Package'
id: bundle
run: |
pwd
set -e
mkdir _build && cd _build
cmake -DBUILD_DOCUMENTATION=YES ..
cmake --version
cmake --build . --target distcheck
- name: Create Release
if: ${{ steps.tag.outputs.tag == steps.version.outputs.geosversion }}
id: create_release
uses: softprops/action-gh-release@v1
with:
body_path: ${{ steps.notes.outputs.geosnotes }}
name: Release ${{ steps.version.outputs.geosversion }}
prerelease: false
files: |
./_build/geos*.tar.bz2
53 changes: 34 additions & 19 deletions HOWTO_RELEASE
Original file line number Diff line number Diff line change
@@ -1,45 +1,60 @@
1. Verify that the versions currently set in Version.txt
sense for this release.
make sense for this release. See file for instructions.

- GEOS_VERSION_PATCH
- GEOS_VERSION_MINOR
- GEOS_VERSION_MAJOR
- GEOS_PATCH_WORD

- CAPI_INTERFACE_CURRENT
- CAPI_INTERFACE_REVISION
- CAPI_INTERFACE_AGE

2. Run 'make distcheck', fix any problem with it.
2. Prepare the build directory.

3. Update the NEWS file (extract most important things from the
repository log). Make sure to update the release date.
$ mkdir _build && cd _build && cmake -DBUILD_DOCUMENTATION=YES ..

4. Commit the changes in the NEWS file.
3. Run the build, distcheck, docs targets, fix any problems with them.

5. Run 'make dist-bzip2'.
$ cmake --build .
$ cmake --build . --target docs
$ ctest --output-on-failure .
$ cmake --build . --target distcheck

$ ./autogen.sh && ./configure && make dist-bzip2
4. Update the NEWS file (extract most important things from the repository log).
Make sure to update the release date.

6. Verify that you can un-pack and build the tarball.
5. Commit the changes in the NEWS file.
Push changes with: git push origin,
and confirm all bots are green before moving forward

- autotools: ./configure && make check
- cmake: mkdir build && cd build && cmake .. && make && make check

7. Copy the tarball to upload.osgeo.org:/osgeo/download/geos

8. Tag the release:
6. Tag the release:

$ git tag MAJOR.MINOR.PATCH
$ git push origin MAJOR.MINOR.PATCH

9. Increment all the version numbers for the next release (described in 1 above).
7. At this point the github/release.yml action should run,
wait for it to finish and then verify you can build with it.

$ VERSION=MAJOR.MINOR.PATCH
$ wget https://github.com/libgeos/geos/releases/download/$VERSION/geos-$VERSION.tar.bz2
$ tar xvfz geos-$VERSION.tar.bz2
$ cd geos-$VERSION
$ mkdir _build && cd _build && cmake ..
$ cmake --build .
$ ctest --output-on-failure .

10. Update wiki page https://trac.osgeo.org/geos/ at Download section
8. Copy the tar.bz2 tarball to upload.osgeo.org:/osgeo/download/geos

9. Create and push a release branch if this was a PATCH=0 release,
update the versions for next release in Version.txt (both in
main and release branch).

10. Update download page in main branch: web/content/usage/download.md

- Add latest release
- Remove previous patch level release (if any)

11. Close the current trac milestone, and a new one for the next cycle.

12. Announce on geos-devel
11. Close current GitHub milestone and add a new one for next release.

12. Announce on geos-devel
5 changes: 3 additions & 2 deletions NEWS
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@

Changes in 3.8.4
20xx-xx-xx
Changes in 3.8.4 EOL
2024-11-xx

- Bug fixes / improvements
- Fix PreparedGeometry to avoid crashes with EMPTY elements in input (GH-678, Martin Davis)
- GEOSClipByRect: Fix case with POINT EMPTY (GH-913, Mike Taves)
- Fix Crash in GEOSIntersects with empty point inputs (GH-673, Daniel Baston)


Changes in 3.8.3
Expand Down
2 changes: 1 addition & 1 deletion Version.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ GEOS_VERSION_MINOR=8
GEOS_VERSION_PATCH=4

# OPTIONS: "", "dev", "rc1" etc.
GEOS_PATCH_WORD=dev
GEOS_PATCH_WORD=

# GEOS CAPI Versions
#
Expand Down
11 changes: 11 additions & 0 deletions tools/ci/releasenotes.pl
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
my $first = 0;
while(<>) {
if (/^##/ && !$first) {
$first = 1;
next;
}
if (/^##/ && $first) {
exit;
}
print;
}

0 comments on commit fdde35b

Please sign in to comment.