ci: increment fnOS package version per build
This commit is contained in:
Vendored
+30
-3
@@ -84,8 +84,32 @@ pipeline {
|
|||||||
if (!env.APP_VERSION || !env.SHORT_SHA) {
|
if (!env.APP_VERSION || !env.SHORT_SHA) {
|
||||||
error('Unable to resolve fnOS version or Git commit.')
|
error('Unable to resolve fnOS version or Git commit.')
|
||||||
}
|
}
|
||||||
|
env.FNOS_VERSION = sh(
|
||||||
|
script: '''
|
||||||
|
set -euo pipefail
|
||||||
|
base=$(sed -n 's/^version=//p' fnos/manifest | head -n 1)
|
||||||
|
major=${base%%.*}
|
||||||
|
remainder=${base#*.}
|
||||||
|
minor=${remainder%%.*}
|
||||||
|
patch=${remainder#*.}
|
||||||
|
test "$base" = "$major.$minor.$patch" || {
|
||||||
|
echo "Invalid base version: $base" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
case "$major.$minor.$patch" in
|
||||||
|
*[!0-9.]*|.*|*..*|*.) echo "Invalid base version: $base" >&2; exit 1 ;;
|
||||||
|
esac
|
||||||
|
test "$BUILD_NUMBER" -lt 100000 || {
|
||||||
|
echo 'BUILD_NUMBER must remain below 100000 for fnOS version ordering.' >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
ci_patch=$((patch * 100000 + BUILD_NUMBER))
|
||||||
|
printf '%s.%s.%s\n' "$major" "$minor" "$ci_patch"
|
||||||
|
''',
|
||||||
|
returnStdout: true
|
||||||
|
).trim()
|
||||||
env.IMMUTABLE_TAG = "${env.APP_VERSION}-b${env.BUILD_NUMBER}-${env.SHORT_SHA}"
|
env.IMMUTABLE_TAG = "${env.APP_VERSION}-b${env.BUILD_NUMBER}-${env.SHORT_SHA}"
|
||||||
env.FPK_BASENAME = "liverecorder-${env.IMMUTABLE_TAG}-x86_64.fpk"
|
env.FPK_BASENAME = "liverecorder-${env.FNOS_VERSION}-x86_64.fpk"
|
||||||
env.FPK_PATH = "${env.WORKSPACE}/artifacts/ci/${env.FPK_BASENAME}"
|
env.FPK_PATH = "${env.WORKSPACE}/artifacts/ci/${env.FPK_BASENAME}"
|
||||||
currentBuild.displayName = "#${env.BUILD_NUMBER} ${env.APP_VERSION} ${env.SHORT_SHA}"
|
currentBuild.displayName = "#${env.BUILD_NUMBER} ${env.APP_VERSION} ${env.SHORT_SHA}"
|
||||||
currentBuild.description = "${env.IMMUTABLE_TAG}"
|
currentBuild.description = "${env.IMMUTABLE_TAG}"
|
||||||
@@ -147,8 +171,9 @@ pipeline {
|
|||||||
steps {
|
steps {
|
||||||
sh '''
|
sh '''
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
FNPACK="$FNPACK_BIN" ./scripts/build-fnos-package.sh "$FPK_PATH"
|
PACKAGE_VERSION="$FNOS_VERSION" FNPACK="$FNPACK_BIN" \
|
||||||
./scripts/verify-fnos-package.sh "$FPK_PATH"
|
./scripts/build-fnos-package.sh "$FPK_PATH"
|
||||||
|
./scripts/verify-fnos-package.sh "$FPK_PATH" "$FNOS_VERSION"
|
||||||
test -s "$FPK_PATH.sha256"
|
test -s "$FPK_PATH.sha256"
|
||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
@@ -345,6 +370,8 @@ pipeline {
|
|||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
printf '%s\n' \
|
printf '%s\n' \
|
||||||
"Commit: $(git rev-parse HEAD)" \
|
"Commit: $(git rev-parse HEAD)" \
|
||||||
|
"Product version: $APP_VERSION" \
|
||||||
|
"fnOS package version: $FNOS_VERSION" \
|
||||||
"fnOS: $FPK_BASENAME" \
|
"fnOS: $FPK_BASENAME" \
|
||||||
"Checksum: $(awk '{print $1}' "$FPK_PATH.sha256")" \
|
"Checksum: $(awk '{print $1}' "$FPK_PATH.sha256")" \
|
||||||
"API amd64: $API_IMAGE_REPO:$IMMUTABLE_TAG-amd64" \
|
"API amd64: $API_IMAGE_REPO:$IMMUTABLE_TAG-amd64" \
|
||||||
|
|||||||
@@ -2,8 +2,19 @@
|
|||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
ROOT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
|
ROOT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
|
||||||
VERSION=1.2.19
|
BASE_VERSION=$(sed -n 's/^version[[:space:]]*=[[:space:]]*//p' "$ROOT_DIR/fnos/manifest" | head -n 1 | tr -d '\r')
|
||||||
OUTPUT="${1:-$ROOT_DIR/artifacts/fnos/liverecorder-${VERSION}-x86_64.fpk}"
|
PACKAGE_VERSION="${PACKAGE_VERSION:-$BASE_VERSION}"
|
||||||
|
case "$PACKAGE_VERSION" in
|
||||||
|
''|*[!0-9.]*|.*|*..*|*.)
|
||||||
|
printf 'invalid fnOS package version: %s\n' "$PACKAGE_VERSION" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
[ "$(printf '%s' "$PACKAGE_VERSION" | awk -F. '{ print NF }')" -eq 3 ] || {
|
||||||
|
printf 'fnOS package version must contain exactly three numeric components: %s\n' "$PACKAGE_VERSION" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
OUTPUT="${1:-$ROOT_DIR/artifacts/fnos/liverecorder-${PACKAGE_VERSION}-x86_64.fpk}"
|
||||||
WORKSPACE_CACHE=$(CDPATH= cd -- "$ROOT_DIR/.." && pwd)
|
WORKSPACE_CACHE=$(CDPATH= cd -- "$ROOT_DIR/.." && pwd)
|
||||||
if [ -n "${DOTNET:-}" ]; then
|
if [ -n "${DOTNET:-}" ]; then
|
||||||
DOTNET_BIN="$DOTNET"
|
DOTNET_BIN="$DOTNET"
|
||||||
@@ -54,6 +65,7 @@ mkdir -p "$STAGE/app/server" "$RUNTIME_ROOT/bin" "$RUNTIME_ROOT/lib" \
|
|||||||
"$RUNTIME_ROOT/etc/ssl/certs" \
|
"$RUNTIME_ROOT/etc/ssl/certs" \
|
||||||
"$PACKED_ROOT" "$FNPACK_TMP_ROOT" "$EXTRACT_ROOT"
|
"$PACKED_ROOT" "$FNPACK_TMP_ROOT" "$EXTRACT_ROOT"
|
||||||
cp -a "$ROOT_DIR/fnos/." "$STAGE/"
|
cp -a "$ROOT_DIR/fnos/." "$STAGE/"
|
||||||
|
sed -i -E "s/^version[[:space:]]*=.*/version=${PACKAGE_VERSION}/" "$STAGE/manifest"
|
||||||
|
|
||||||
printf 'Building frontend...\n'
|
printf 'Building frontend...\n'
|
||||||
if [ "${LIVERECORDER_SKIP_NPM_CI:-0}" != "1" ]; then
|
if [ "${LIVERECORDER_SKIP_NPM_CI:-0}" != "1" ]; then
|
||||||
@@ -232,5 +244,5 @@ mv "$PACKED_ROOT/liverecorder.fpk" "$OUTPUT"
|
|||||||
)
|
)
|
||||||
|
|
||||||
LIVERECORDER_VERIFY_TMPDIR="${LIVERECORDER_VERIFY_TMPDIR:-$BUILD_TMP_ROOT}" \
|
LIVERECORDER_VERIFY_TMPDIR="${LIVERECORDER_VERIFY_TMPDIR:-$BUILD_TMP_ROOT}" \
|
||||||
"$ROOT_DIR/scripts/verify-fnos-package.sh" "$OUTPUT"
|
"$ROOT_DIR/scripts/verify-fnos-package.sh" "$OUTPUT" "$PACKAGE_VERSION"
|
||||||
printf 'Built %s\n' "$OUTPUT"
|
printf 'Built %s\n' "$OUTPUT"
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
PACKAGE=${1:?usage: verify-fnos-package.sh package.fpk}
|
PACKAGE=${1:?usage: verify-fnos-package.sh package.fpk [expected-version]}
|
||||||
|
EXPECTED_VERSION=${2:-}
|
||||||
VERIFY_TMP_ROOT="${LIVERECORDER_VERIFY_TMPDIR:-${TMPDIR:-/tmp}}"
|
VERIFY_TMP_ROOT="${LIVERECORDER_VERIFY_TMPDIR:-${TMPDIR:-/tmp}}"
|
||||||
MAX_APP_UNCOMPRESSED_BYTES=$((512 * 1024 * 1024))
|
MAX_APP_UNCOMPRESSED_BYTES=$((512 * 1024 * 1024))
|
||||||
mkdir -p "$VERIFY_TMP_ROOT"
|
mkdir -p "$VERIFY_TMP_ROOT"
|
||||||
@@ -17,6 +18,10 @@ appname=$(manifest_value appname)
|
|||||||
version=$(manifest_value version)
|
version=$(manifest_value version)
|
||||||
test "$appname" = "liverecorder" || { printf 'unexpected fnOS appname: %s\n' "$appname" >&2; exit 1; }
|
test "$appname" = "liverecorder" || { printf 'unexpected fnOS appname: %s\n' "$appname" >&2; exit 1; }
|
||||||
test -n "$version"
|
test -n "$version"
|
||||||
|
if [ -n "$EXPECTED_VERSION" ] && [ "$version" != "$EXPECTED_VERSION" ]; then
|
||||||
|
printf 'unexpected fnOS version: expected %s, got %s\n' "$EXPECTED_VERSION" "$version" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
test "$(manifest_value platform)" = "x86"
|
test "$(manifest_value platform)" = "x86"
|
||||||
test -x "$WORK_DIR/cmd/main"
|
test -x "$WORK_DIR/cmd/main"
|
||||||
test -x "$WORK_DIR/cmd/install_callback"
|
test -x "$WORK_DIR/cmd/install_callback"
|
||||||
|
|||||||
Reference in New Issue
Block a user