das ist krank und ich kann es nicht validieren

This commit is contained in:
tu committed 2026-03-18 22:20:02 +01:00
1 parent c5cd0f0430
commit 662db558bd
2 files changed
+84 -29

No files matched your search

+76 -24
View File
@@ -6,7 +6,7 @@ inputs:
required: false
default: "24"
release_line:
description: Release line for dev builds (e.g. 2.4) when it cannot be derived from the branch or PR target
description: Release line for dev builds (e.g. 2.4 or 2.4.1) when it cannot be derived from the branch or PR target
required: false
default: ""
gitea_token:
@@ -68,49 +68,103 @@ runs:
node -p "require('./package.json').version"
}
validate_release_line() {
local line="$1"
[[ "${line}" =~ ^[0-9]+\.[0-9]+$ ]]
}
extract_release_line() {
local ref_name="$1"
if [[ "${ref_name}" =~ ^release/v?([0-9]+)\.([0-9]+)$ ]]; then
echo "${BASH_REMATCH[1]}.${BASH_REMATCH[2]}"
normalize_release_base() {
local value="$1"
if [[ "${value}" =~ ^v?([0-9]+)\.([0-9]+)$ ]]; then
echo "${BASH_REMATCH[1]}.${BASH_REMATCH[2]}.0"
return 0
fi
if [[ "${value}" =~ ^v?([0-9]+)\.([0-9]+)\.([0-9]+)$ ]]; then
echo "${BASH_REMATCH[1]}.${BASH_REMATCH[2]}.${BASH_REMATCH[3]}"
return 0
fi
return 1
}
resolve_release_line() {
extract_release_base() {
local ref_name="$1"
local normalized
if [[ "${ref_name}" =~ ^release/(.+)$ ]]; then
if normalized="$(normalize_release_base "${BASH_REMATCH[1]}")"; then
echo "${normalized}"
return 0
fi
fi
return 1
}
infer_release_base_from_ancestor_release_branch() {
local best_release_base=""
local best_commit_time=0
local remote_ref
local release_branch
local release_base
local commit_time
# Best effort: not every repository has release branches.
git fetch --no-tags origin "+refs/heads/release/*:refs/remotes/origin/release/*" >/dev/null 2>&1 || true
while IFS= read -r remote_ref; do
release_branch="${remote_ref#origin/}"
if ! release_base="$(extract_release_base "${release_branch}")"; then
continue
fi
if ! git merge-base --is-ancestor "$(git rev-parse "${remote_ref}")" HEAD; then
continue
fi
commit_time="$(git show -s --format=%ct "${remote_ref}")"
if [[ "${commit_time}" -gt "${best_commit_time}" ]]; then
best_commit_time="${commit_time}"
best_release_base="${release_base}"
fi
done < <(git for-each-ref --format='%(refname:short)' refs/remotes/origin/release/*)
if [[ -n "${best_release_base}" ]]; then
echo "${best_release_base}"
return 0
fi
return 1
}
resolve_release_base() {
local package_version
local normalized
local inferred_release_base
if [[ -n "${INPUT_RELEASE_LINE}" ]]; then
if ! validate_release_line "${INPUT_RELEASE_LINE}"; then
echo "Invalid release_line input '${INPUT_RELEASE_LINE}'. Expected format: <major>.<minor>" >&2
if ! normalized="$(normalize_release_base "${INPUT_RELEASE_LINE}")"; then
echo "Invalid release_line input '${INPUT_RELEASE_LINE}'. Expected format: <major>.<minor> or <major>.<minor>.<patch>" >&2
exit 1
fi
echo "${INPUT_RELEASE_LINE}"
echo "${normalized}"
return 0
fi
if extract_release_line "${BRANCH}" >/dev/null; then
extract_release_line "${BRANCH}"
if extract_release_base "${BRANCH}" >/dev/null; then
extract_release_base "${BRANCH}"
return 0
fi
if [[ -n "${BASE_BRANCH}" ]] && extract_release_line "${BASE_BRANCH}" >/dev/null; then
extract_release_line "${BASE_BRANCH}"
if [[ -n "${BASE_BRANCH}" ]] && extract_release_base "${BASE_BRANCH}" >/dev/null; then
extract_release_base "${BASE_BRANCH}"
return 0
fi
if inferred_release_base="$(infer_release_base_from_ancestor_release_branch)"; then
echo "${inferred_release_base}"
return 0
fi
package_version="$(read_package_version)"
if [[ "${package_version}" =~ ^([0-9]+)\.([0-9]+)\.[0-9]+([-.].*)?$ ]]; then
echo "${BASH_REMATCH[1]}.${BASH_REMATCH[2]}"
echo "${BASH_REMATCH[1]}.${BASH_REMATCH[2]}.0"
return 0
fi
echo "Unable to determine release line for branch '${BRANCH}'. Use release/<major>.<minor>, provide inputs.release_line, or ensure package.json contains a semantic version." >&2
echo "Unable to determine release base for branch '${BRANCH}'. Use release/<major>.<minor>[.<patch>], provide inputs.release_line, or ensure package.json contains a semantic version." >&2
exit 1
}
@@ -164,13 +218,11 @@ runs:
fi
;;
release/*)
RELEASE_LINE="$(resolve_release_line)"
RELEASE_BASE="${RELEASE_LINE}.0"
RELEASE_BASE="$(resolve_release_base)"
set_version "$(next_beta_version "${RELEASE_BASE}")"
;;
*)
RELEASE_LINE="$(resolve_release_line)"
RELEASE_BASE="${RELEASE_LINE}.0"
RELEASE_BASE="$(resolve_release_base)"
set_version "$(next_dev_version "${RELEASE_BASE}")"
;;
esac