mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
CICD: Improve Workflows.
Make multiple improvements to the existing workflows:
- create a shared custom action to deal with version number tracking
and generation;
- use this action to add the branch name to the version for pull
request builds;
- create a shared workflow for all debian-ish builds to avoid re-use
by copy / paste;
- remove potential security risks by eliminating the use of
pre-evaluated expressions (`${{ ... }}`) inside scripts;
- update outdated GitHub action versions;
- improve the consistency by renaming scripts acording to have a `.sh`
extension;
- improve naming of generated artefacts for pull requests to include
the correct version.
@dirkh: Unfortunately this is potentially going to break builds when it is
merged, as there is no good way to 'test' a merge build short of
merging.
We'll just have to deal with the fallout of it in a follow-up pull
request.
Signed-off-by: Michael Keller <github@ike.ch>
This commit is contained in:
parent
e20ec9248c
commit
6fc8310705
32 changed files with 399 additions and 536 deletions
95
scripts/check-version.sh
Executable file
95
scripts/check-version.sh
Executable file
|
|
@ -0,0 +1,95 @@
|
|||
#!/bin/sh
|
||||
|
||||
# $1 - version string
|
||||
# options:
|
||||
# -c colored grep (implies -d)
|
||||
# -d debug
|
||||
# -r release (exit status error; when called from Makefile)
|
||||
|
||||
# To validate relevant files are up to date, you would run the script
|
||||
# from command line before tagging:
|
||||
#
|
||||
# $ scripts/check-version.sh -cr <tag>
|
||||
|
||||
set -eu
|
||||
#set -x
|
||||
|
||||
# You would typically add/remove files to/from the list
|
||||
files="Documentation/user-manual.txt Makefile README.md ReleaseNotes/ReleaseNotes.txt"
|
||||
|
||||
whine() {
|
||||
echo "$0: $*" >&2
|
||||
}
|
||||
|
||||
croak() {
|
||||
whine "$*"
|
||||
exit 1
|
||||
}
|
||||
|
||||
color=n
|
||||
debug=n
|
||||
release=n
|
||||
while getopts cdr opt; do
|
||||
case $opt in
|
||||
c)
|
||||
color=y
|
||||
debug=y
|
||||
;;
|
||||
d)
|
||||
debug=y
|
||||
;;
|
||||
r)
|
||||
release=y
|
||||
;;
|
||||
*)
|
||||
croak "invalid option"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
shift $(($OPTIND - 1))
|
||||
|
||||
if [ $debug = y ]; then
|
||||
opts=-n
|
||||
else
|
||||
opts=-q
|
||||
fi
|
||||
[ $color = n ] || opts="${opts:+$opts }--color"
|
||||
|
||||
v=${1:-}
|
||||
v=${v#v}
|
||||
case $v in
|
||||
*-*)
|
||||
# Ignore development versions
|
||||
if [ $release = y ]; then
|
||||
croak "'$v' not a release tag"
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
;;
|
||||
''|*[!.0-9]*)
|
||||
croak "invalid version string '$v'"
|
||||
;;
|
||||
esac
|
||||
whine "checking for version $v"
|
||||
|
||||
saveIFS=$IFS
|
||||
IFS=.
|
||||
set -- $v
|
||||
IFS=$saveIFS
|
||||
v=
|
||||
while [ $# -gt 0 ]; do
|
||||
v=${v:+$v\\.}$1
|
||||
shift
|
||||
done
|
||||
|
||||
sts=0
|
||||
for f in $files; do
|
||||
grep -EH $opts \
|
||||
-e "(VERSION=|[Ss]ubsurface[[:blank:]]+)?\<v?$v[.0-9]*\>" \
|
||||
$f || {
|
||||
[ $release != y ] || sts=1
|
||||
whine "'$f' may need updating"
|
||||
}
|
||||
done
|
||||
|
||||
exit $sts
|
||||
Loading…
Add table
Add a link
Reference in a new issue