Compare commits

..

11 Commits

Author SHA1 Message Date
Patrick Lehmann
2eebeec719 v6.3.0 2025-10-01 15:16:07 +02:00
Patrick Lehmann
5b97eaf241 Gather a list of submodule names, pathes etc. 2025-10-01 12:55:33 +02:00
Patrick Lehmann
1e694005ed Fixed structure version datatype in inventory JSON. 2025-10-01 03:11:48 +02:00
Patrick Lehmann
46a2764e73 Fixed timestamp format in inventory JSON. 2025-10-01 00:53:09 +02:00
Patrick Lehmann
626d64ef6a Updated classification outputs. 2025-10-01 00:28:54 +02:00
Patrick Lehmann
fe4c9139c1 Print Git reference classification. 2025-09-30 23:47:28 +02:00
Patrick Lehmann
ae8a961e93 v6.2.0 2025-09-30 22:53:57 +02:00
Patrick Lehmann
e4b5ea3895 Check if commit is on default branch. 2025-09-30 21:34:33 +02:00
Patrick Lehmann
b61f479180 Fix computation of latest version from GH CLI. 2025-09-30 09:02:50 +02:00
Patrick Lehmann
9e6bbd52a6 v6.1.0 2025-09-25 00:26:08 +02:00
Patrick Lehmann
438207a68d Added latest released version to the inventory.json. 2025-09-25 00:21:48 +02:00
4 changed files with 186 additions and 84 deletions

View File

@@ -304,7 +304,7 @@ jobs:
if [[ -n "${downloadedArtifacts[$artifact]}" ]]; then if [[ -n "${downloadedArtifacts[$artifact]}" ]]; then
printf " %s\n" "downloading '${artifact}' ... ${ANSI_LIGHT_YELLOW}[SKIPPED]${ANSI_NOCOLOR}" printf " %s\n" "downloading '${artifact}' ... ${ANSI_LIGHT_YELLOW}[SKIPPED]${ANSI_NOCOLOR}"
else else
echo " downloading '${artifact}' ... " printf " downloading '${artifact}' ...\n"
printf " %s" "gh run download $GITHUB_RUN_ID --dir \"${artifact}\" --name \"${artifact}\" " printf " %s" "gh run download $GITHUB_RUN_ID --dir \"${artifact}\" --name \"${artifact}\" "
gh run download $GITHUB_RUN_ID --dir "${artifact}" --name "${artifact}" gh run download $GITHUB_RUN_ID --dir "${artifact}" --name "${artifact}"
if [[ $? -eq 0 ]]; then if [[ $? -eq 0 ]]; then

View File

@@ -260,7 +260,7 @@ jobs:
currentMSYS2Version = "3.12" currentMSYS2Version = "3.12"
currentAlphaVersion = "3.14" currentAlphaVersion = "3.14"
currentAlphaRelease = "3.14.0-rc.2" currentAlphaRelease = "3.14.0-rc.3"
if systems == "": if systems == "":
print("::error title=Parameter::system_list is empty.") print("::error title=Parameter::system_list is empty.")

View File

@@ -35,15 +35,18 @@ on:
type: string type: string
outputs: outputs:
on_default_branch:
description: ""
value: ${{ jobs.Prepare.outputs.on_default_branch }}
on_main_branch: on_main_branch:
description: "" description: ""
value: ${{ jobs.Prepare.outputs.on_main_branch }} value: ${{ jobs.Prepare.outputs.on_main_branch }}
on_dev_branch:
description: ""
value: ${{ jobs.Prepare.outputs.on_dev_branch }}
on_release_branch: on_release_branch:
description: "" description: ""
value: ${{ jobs.Prepare.outputs.on_release_branch }} value: ${{ jobs.Prepare.outputs.on_release_branch }}
on_dev_branch:
description: ""
value: ${{ jobs.Prepare.outputs.on_dev_branch }}
is_regular_commit: is_regular_commit:
description: "" description: ""
value: ${{ jobs.Prepare.outputs.is_regular_commit }} value: ${{ jobs.Prepare.outputs.is_regular_commit }}
@@ -59,9 +62,15 @@ on:
is_release_tag: is_release_tag:
description: "" description: ""
value: ${{ jobs.Prepare.outputs.is_release_tag }} value: ${{ jobs.Prepare.outputs.is_release_tag }}
has_submodules:
description: ""
value: ${{ jobs.Prepare.outputs.has_submodules }}
ref_kind: ref_kind:
description: "" description: ""
value: ${{ jobs.Prepare.outputs.ref_kind }} value: ${{ jobs.Prepare.outputs.ref_kind }}
default_branch:
description: ""
value: ${{ jobs.Prepare.outputs.default_branch }}
branch: branch:
description: "" description: ""
value: ${{ jobs.Prepare.outputs.branch }} value: ${{ jobs.Prepare.outputs.branch }}
@@ -83,27 +92,42 @@ on:
# pr_mergedat: # pr_mergedat:
# description: "" # description: ""
# value: ${{ jobs.Prepare.outputs.pr_mergedat }} # value: ${{ jobs.Prepare.outputs.pr_mergedat }}
git_submodule_count:
description: ""
value: ${{ jobs.Prepare.outputs.git_submodule_count }}
git_submodule_names:
description: ""
value: ${{ jobs.Prepare.outputs.git_submodule_names }}
git_submodule_paths:
description: ""
value: ${{ jobs.Prepare.outputs.git_submodule_paths }}
jobs: jobs:
Prepare: Prepare:
name: Extract Information name: Extract Information
runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
outputs: outputs:
on_main_branch: ${{ steps.Classify.outputs.on_main_branch }} on_default_branch: ${{ steps.Classify.outputs.on_default_branch }}
on_dev_branch: ${{ steps.Classify.outputs.on_dev_branch }} on_main_branch: ${{ steps.Classify.outputs.on_main_branch }}
on_release_branch: ${{ steps.Classify.outputs.on_release_branch }} on_release_branch: ${{ steps.Classify.outputs.on_release_branch }}
is_regular_commit: ${{ steps.Classify.outputs.is_regular_commit }} on_dev_branch: ${{ steps.Classify.outputs.on_dev_branch }}
is_merge_commit: ${{ steps.Classify.outputs.is_merge_commit }} is_regular_commit: ${{ steps.Classify.outputs.is_regular_commit }}
is_release_commit: ${{ steps.Classify.outputs.is_release_commit }} is_merge_commit: ${{ steps.Classify.outputs.is_merge_commit }}
is_nightly_tag: ${{ steps.Classify.outputs.is_nightly_tag }} is_release_commit: ${{ steps.Classify.outputs.is_release_commit }}
is_release_tag: ${{ steps.Classify.outputs.is_release_tag }} is_nightly_tag: ${{ steps.Classify.outputs.is_nightly_tag }}
ref_kind: ${{ steps.Classify.outputs.ref_kind }} is_release_tag: ${{ steps.Classify.outputs.is_release_tag }}
branch: ${{ steps.Classify.outputs.branch }} has_submodules: ${{ steps.Classify.outputs.has_submodules }}
tag: ${{ steps.Classify.outputs.tag }} ref_kind: ${{ steps.Classify.outputs.ref_kind }}
version: ${{ steps.Classify.outputs.version || steps.FindPullRequest.outputs.pr_version }} default_branch: ${{ steps.Classify.outputs.default_branch }}
# release_version: ${{ steps.FindPullRequest.outputs.release_version }} branch: ${{ steps.Classify.outputs.branch }}
pr_title: ${{ steps.FindPullRequest.outputs.pr_title }} tag: ${{ steps.Classify.outputs.tag }}
pr_number: ${{ steps.Classify.outputs.pr_number || steps.FindPullRequest.outputs.pr_number }} version: ${{ steps.Classify.outputs.version || steps.FindPullRequest.outputs.pr_version }}
# release_version: ${{ steps.FindPullRequest.outputs.release_version }}
pr_title: ${{ steps.FindPullRequest.outputs.pr_title }}
pr_number: ${{ steps.Classify.outputs.pr_number || steps.FindPullRequest.outputs.pr_number }}
git_submodule_count: ${{ steps.Classify.outputs.git_submodule_count }}
git_submodule_names: ${{ steps.Classify.outputs.git_submodule_names }}
git_submodule_paths: ${{ steps.Classify.outputs.git_submodule_paths }}
steps: steps:
- name: ⏬ Checkout repository - name: ⏬ Checkout repository
@@ -132,79 +156,106 @@ jobs:
ANSI_LIGHT_BLUE=$'\x1b[94m' ANSI_LIGHT_BLUE=$'\x1b[94m'
ANSI_NOCOLOR=$'\x1b[0m' ANSI_NOCOLOR=$'\x1b[0m'
export GH_TOKEN=${{ github.token }}
ref="${{ github.ref }}" ref="${{ github.ref }}"
on_default_branch="false"
on_main_branch="false" on_main_branch="false"
on_dev_branch="false"
on_release_branch="false" on_release_branch="false"
on_dev_branch="false"
is_regular_commit="false" is_regular_commit="false"
is_merge_commit="false" is_merge_commit="false"
is_release_commit="false" is_release_commit="false"
is_nightly_tag="false" is_nightly_tag="false"
is_release_tag="false" is_release_tag="false"
has_submodules="false"
ref_kind="unknown" ref_kind="unknown"
default_branch=""
branch="" branch=""
tag="" tag=""
pr_number="" pr_number=""
version="" version=""
git_submodule_count="0"
git_submodule_names=""
git_submodule_paths=""
printf "Classify Git reference '%s' " "${ref}"
if [[ "${ref:0:11}" == "refs/heads/" ]]; then if [[ "${ref:0:11}" == "refs/heads/" ]]; then
printf "${ANSI_LIGHT_GREEN}[BRANCH]\n"
ref_kind="branch" ref_kind="branch"
branch="${ref:11}" branch="${ref:11}"
printf "Commit check:\n" printf "Get default branch name ... "
defaultBranch=$(gh repo view "${{ github.repository }}" --json defaultBranchRef --jq '.defaultBranchRef.name' 2>&1)
if [[ $? -eq 0 ]]; then
printf "${ANSI_LIGHT_GREEN} [OK]\n"
default_branch="${defaultBranch}"
printf " default_branch=%s\n" "${default_branch}"
else
printf "${ANSI_LIGHT_RED} [FAILED]\n"
printf " %s\n" "${default_branch}"
fi
printf "Commit checks:\n"
printf " Commit kind "
if [[ -z "$(git rev-list -1 --merges ${{ github.sha }}~1..${{ github.sha }})" ]]; then
is_regular_commit="true"
printf "${ANSI_LIGHT_YELLOW}[REGULAR]${ANSI_NOCOLOR}\n"
else
is_merge_commit="true"
printf "${ANSI_LIGHT_GREEN}[MERGE]${ANSI_NOCOLOR}\n"
fi
printf "Branch checks:\n"
if [[ "${branch}" == "${defaultBranch}" ]]; then
on_default_branch="true"
printf " Commit on default branch ${ANSI_LIGHT_BLUE}'%s'${ANSI_NOCOLOR}\n" "${defaultBranch}"
fi
if [[ "${branch}" == "${{ inputs.main_branch }}" ]]; then if [[ "${branch}" == "${{ inputs.main_branch }}" ]]; then
on_main_branch="true" on_main_branch="true"
printf " Commit on main branch ${ANSI_LIGHT_BLUE}'%s'${ANSI_NOCOLOR}\n" "${{ inputs.main_branch }}"
if [[ -z "$(git rev-list -1 --merges ${{ github.sha }}~1..${{ github.sha }})" ]]; then
is_regular_commit="true"
printf " ${ANSI_LIGHT_YELLOW}regular "
else
is_merge_commit="true"
printf " ${ANSI_LIGHT_GREEN}merge "
fi
printf "commit${ANSI_NOCOLOR} on main branch ${ANSI_LIGHT_BLUE}'%s'${ANSI_NOCOLOR}\n" "${{ inputs.main_branch }}"
fi
if [[ "${branch}" == "${{ inputs.development_branch }}" ]]; then
on_dev_branch="true"
if [[ -z "$(git rev-list -1 --merges ${{ github.sha }}~1..${{ github.sha }})" ]]; then
is_regular_commit="true"
printf " ${ANSI_LIGHT_YELLOW}regular "
else
is_merge_commit="true"
printf " ${ANSI_LIGHT_GREEN}merge "
fi
printf "commit${ANSI_NOCOLOR} on development branch ${ANSI_LIGHT_BLUE}'%s'${ANSI_NOCOLOR}\n" "${{ inputs.development_branch }}"
fi fi
if [[ "${branch}" == "${{ inputs.release_branch }}" ]]; then if [[ "${branch}" == "${{ inputs.release_branch }}" ]]; then
on_release_branch="true" on_release_branch="true"
printf " Commit on release branch ${ANSI_LIGHT_BLUE}'%s'${ANSI_NOCOLOR}\n" "${{ inputs.release_branch }}"
fi
if [[ -z "$(git rev-list -1 --merges ${{ github.sha }}~1..${{ github.sha }})" ]]; then if [[ "${branch}" == "${{ inputs.development_branch }}" ]]; then
is_regular_commit="true" on_dev_branch="true"
printf " ${ANSI_LIGHT_YELLOW}regular " printf " Commit on development branch ${ANSI_LIGHT_BLUE}'%s'${ANSI_NOCOLOR}\n" "${{ inputs.development_branch }}"
else fi
if [[ "${is_merge_commit}" == "true" ]]; then
printf "Release checks:\n"
printf " Release kind "
if [[ "${on_main_branch}" == "true" ]]; then
is_release_commit="true" is_release_commit="true"
printf " ${ANSI_LIGHT_GREEN}release " printf "${ANSI_LIGHT_GREEN}[RELEASE]${ANSI_NOCOLOR}\n"
elif [[ "${on_version_branch}" == "true" ]]; then
is_release_commit="true"
printf "${ANSI_LIGHT_GREEN}[RELEASE]${ANSI_NOCOLOR}\n"
elif [[ "${on_release_branch}" == "true" ]]; then
is_prerelease_commit="true"
printf "${ANSI_LIGHT_YELLOW}[PRERELEASE]${ANSI_NOCOLOR}\n"
fi fi
printf "commit${ANSI_NOCOLOR} on release branch ${ANSI_LIGHT_BLUE}'%s'${ANSI_NOCOLOR}\n" "${{ inputs.release_branch }}"
fi fi
elif [[ "${ref:0:10}" == "refs/tags/" ]]; then elif [[ "${ref:0:10}" == "refs/tags/" ]]; then
printf "${ANSI_LIGHT_GREEN}[TAG]\n"
ref_kind="tag" ref_kind="tag"
tag="${ref:10}" tag="${ref:10}"
printf "Tag check:\n" printf "Tag checks:\n"
printf " Check if tag is on main branch '%s' ... " "${{ inputs.main_branch }}"
printf " Check if tag is on release branch '%s' ... " "${{ inputs.release_branch }}" git branch --remotes --contains $(git rev-parse --verify "tags/${tag}~0") | grep "origin/${{ inputs.main_branch }}" > /dev/null
git branch --remotes --contains $(git rev-parse --verify "tags/${tag}~0") | grep "origin/${{ inputs.release_branch }}" > /dev/null
if [[ $? -eq 0 ]]; then if [[ $? -eq 0 ]]; then
printf "${ANSI_LIGHT_GREEN}[OK]${ANSI_NOCOLOR}\n" printf "${ANSI_LIGHT_GREEN}[OK]${ANSI_NOCOLOR}\n"
else else
printf "${ANSI_LIGHT_RED}[FAILED]${ANSI_NOCOLOR}\n" printf "${ANSI_LIGHT_RED}[FAILED]${ANSI_NOCOLOR}\n"
printf "${ANSI_LIGHT_RED}Tag '%s' isn't on branch '%s'.${ANSI_NOCOLOR}\n" "${tag}" "${{ inputs.release_branch }}" printf "${ANSI_LIGHT_RED}Tag '%s' isn't on branch '%s'.${ANSI_NOCOLOR}\n" "${tag}" "${{ inputs.main_branch }}"
printf "::error title=TagCheck::Tag '%s' isn't on branch '%s'.\n" "${tag}" "${{ inputs.release_branch }}" printf "::error title=TagCheck::Tag '%s' isn't on branch '%s'.\n" "${tag}" "${{ inputs.main_branch }}"
exit 1 exit 1
fi fi
@@ -227,32 +278,50 @@ jobs:
exit 1 exit 1
fi fi
elif [[ "${ref:0:10}" == "refs/pull/" ]]; then elif [[ "${ref:0:10}" == "refs/pull/" ]]; then
printf "${ANSI_LIGHT_YELLOW}[PULL REQUEST]\n"
ref_kind="pullrequest" ref_kind="pullrequest"
pr_number=${ref:11} pr_number=${ref:11}
pr_number=${pr_number%%/*} pr_number=${pr_number%%/*}
printf "Pull Request check:\n" printf "Pull Request checks:\n"
printf " Number: %s\n" "${pr_number}" printf " Number: %s\n" "${pr_number}"
else else
printf "${ANSI_LIGHT_RED}[UNKNOWN]\n"
printf "${ANSI_LIGHT_RED}Unknown Git reference '%s'.${ANSI_NOCOLOR}\n" "${{ github.ref }}" printf "${ANSI_LIGHT_RED}Unknown Git reference '%s'.${ANSI_NOCOLOR}\n" "${{ github.ref }}"
printf "::error title=Classify Commit::Unknown Git reference '%s'.\n" "${{ github.ref }}" printf "::error title=Classify Commit::Unknown Git reference '%s'.\n" "${{ github.ref }}"
exit 1 exit 1
fi fi
# Submodules
if [[ -f .gitsubmodules ]]; then
has_submodules="true"
git_modules_file=.gitmodules # $(git rev-parse --show-toplevel)/.gitmodules
git_submodule_count="$(grep -Po '(?<=\[submodule \")(.*)(?=\"\])' "${git_modules_file}" | wc -l)"
git_submodule_names="$(grep -Po '(?<=\[submodule \")(.*)(?=\"\])' "${git_modules_file}" | paste -sd ':' -)"
git_submodule_paths="$(git config --file "${git_modules_file}" --null --name-only --get-regexp '\.path$' | xargs -0 -n1 git config --file "${git_modules_file}" --get | paste -sd ':' -)"
fi
printf "\nWriting output variables ...\n"
tee --append "${GITHUB_OUTPUT}" <<EOF tee --append "${GITHUB_OUTPUT}" <<EOF
on_default_branch=${on_default_branch}
on_main_branch=${on_main_branch} on_main_branch=${on_main_branch}
on_dev_branch=${on_dev_branch}
on_release_branch=${on_release_branch} on_release_branch=${on_release_branch}
on_dev_branch=${on_dev_branch}
is_regular_commit=${is_regular_commit} is_regular_commit=${is_regular_commit}
is_merge_commit=${is_merge_commit} is_merge_commit=${is_merge_commit}
is_release_commit=${is_release_commit} is_release_commit=${is_release_commit}
is_nightly_tag=${is_nightly_tag} is_nightly_tag=${is_nightly_tag}
is_release_tag=${is_release_tag} is_release_tag=${is_release_tag}
has_submodules=${has_submodules}
ref_kind=${ref_kind} ref_kind=${ref_kind}
default_branch=${default_branch}
branch=${branch} branch=${branch}
tag=${tag} tag=${tag}
pr_number=${pr_number} pr_number=${pr_number}
version=${version} version=${version}
git_submodule_count=${git_submodule_count}
git_submodule_names=${git_submodule_names}
git_submodule_paths=${git_submodule_paths}
EOF EOF
# TODO: why not is_release_commit? # TODO: why not is_release_commit?
@@ -328,21 +397,28 @@ jobs:
- name: Debug - name: Debug
run: | run: |
printf "on_main_branch: %s\n" "${{ steps.Classify.outputs.on_main_branch }}" printf "on_default_branch: %s\n" "${{ steps.Classify.outputs.on_default_branch }}"
printf "on_dev_branch: %s\n" "${{ steps.Classify.outputs.on_dev_branch }}" printf "on_main_branch: %s\n" "${{ steps.Classify.outputs.on_main_branch }}"
printf "on_release_branch: %s\n" "${{ steps.Classify.outputs.on_release_branch }}" printf "on_release_branch: %s\n" "${{ steps.Classify.outputs.on_release_branch }}"
printf "is_regular_commit: %s\n" "${{ steps.Classify.outputs.is_regular_commit }}" printf "on_dev_branch: %s\n" "${{ steps.Classify.outputs.on_dev_branch }}"
printf "is_merge_commit: %s\n" "${{ steps.Classify.outputs.is_merge_commit }}" printf "is_regular_commit: %s\n" "${{ steps.Classify.outputs.is_regular_commit }}"
printf "is_release_commit: %s\n" "${{ steps.Classify.outputs.is_release_commit }}" printf "is_merge_commit: %s\n" "${{ steps.Classify.outputs.is_merge_commit }}"
printf "is_nightly_tag: %s\n" "${{ steps.Classify.outputs.is_nightly_tag }}" printf "is_release_commit: %s\n" "${{ steps.Classify.outputs.is_release_commit }}"
printf "is_release_tag: %s\n" "${{ steps.Classify.outputs.is_release_tag }}" printf "is_nightly_tag: %s\n" "${{ steps.Classify.outputs.is_nightly_tag }}"
printf "ref_kind: %s\n" "${{ steps.Classify.outputs.ref_kind }}" printf "is_release_tag: %s\n" "${{ steps.Classify.outputs.is_release_tag }}"
printf "branch: %s\n" "${{ steps.Classify.outputs.branch }}" printf "has_submodules: %s\n" "${{ steps.Classify.outputs.has_submodules }}"
printf "tag: %s\n" "${{ steps.Classify.outputs.tag }}" printf "ref_kind: %s\n" "${{ steps.Classify.outputs.ref_kind }}"
printf "version: %s\n" "${{ steps.Classify.outputs.version || steps.FindPullRequest.outputs.pr_version }}" printf "default_branch: %s\n" "${{ steps.Classify.outputs.default_branch }}"
printf " from tag: %s\n" "${{ steps.Classify.outputs.version }}" printf "branch: %s\n" "${{ steps.Classify.outputs.branch }}"
printf " from pr: %s\n" "${{ steps.FindPullRequest.outputs.pr_version }}" printf "tag: %s\n" "${{ steps.Classify.outputs.tag }}"
printf "pr title: %s\n" "${{ steps.FindPullRequest.outputs.pr_title }}" printf "version: %s\n" "${{ steps.Classify.outputs.version || steps.FindPullRequest.outputs.pr_version }}"
printf "pr number: %s\n" "${{ steps.Classify.outputs.pr_number || steps.FindPullRequest.outputs.pr_number }}" printf " from tag: %s\n" "${{ steps.Classify.outputs.version }}"
printf " from merge: %s\n" "${{ steps.Classify.outputs.pr_number }}" printf " from pr: %s\n" "${{ steps.FindPullRequest.outputs.pr_version }}"
printf " from pr: %s\n" "${{ steps.FindPullRequest.outputs.pr_number }}" printf "pr title: %s\n" "${{ steps.FindPullRequest.outputs.pr_title }}"
printf "pr number: %s\n" "${{ steps.Classify.outputs.pr_number || steps.FindPullRequest.outputs.pr_number }}"
printf " from merge: %s\n" "${{ steps.Classify.outputs.pr_number }}"
printf " from pr: %s\n" "${{ steps.FindPullRequest.outputs.pr_number }}"
printf "git_submodule_*:\n"
printf " *_count_: %s\n" "${{ steps.FindPullRequest.outputs.git_submodule_count }}"
printf " *_names: %s\n" "${{ steps.FindPullRequest.outputs.git_submodule_names }}"
printf " *_paths: %s\n" "${{ steps.FindPullRequest.outputs.git_submodule_paths }}"

View File

@@ -249,7 +249,7 @@ jobs:
printf " %s\n" "MergedAt: ${PR_MERGED_AT} ($(date -d"${PR_MERGED_AT}" '+%d.%m.%Y - %H:%M:%S'))" printf " %s\n" "MergedAt: ${PR_MERGED_AT} ($(date -d"${PR_MERGED_AT}" '+%d.%m.%Y - %H:%M:%S'))"
fi fi
echo "${PR_BODY}" > __PULLREQUEST__.md printf "%s\n" "${PR_BODY}" > __PULLREQUEST__.md
fi fi
# Check if a release description file should be used and exists. # Check if a release description file should be used and exists.
@@ -353,7 +353,7 @@ jobs:
NOTES="${NOTES//%%datetime%%/$(date '+%Y-%m-%d %H:%M:%S %Z')}" NOTES="${NOTES//%%datetime%%/$(date '+%Y-%m-%d %H:%M:%S %Z')}"
# Write final release notes to file # Write final release notes to file
echo "${NOTES}" > __NOTES__.md printf "%s\n" "${NOTES}" > __NOTES__.md
# Display partial contents for debugging # Display partial contents for debugging
if [[ -s __DESCRIPTION__.md ]]; then if [[ -s __DESCRIPTION__.md ]]; then
@@ -496,7 +496,28 @@ jobs:
# Create JSON inventory # Create JSON inventory
if [[ "${{ inputs.inventory-json }}" != "" ]]; then if [[ "${{ inputs.inventory-json }}" != "" ]]; then
VERSION="1.0" STRUCT_VERSION="1.1"
# Use GitHub API to ask for latest version
printf "Get latest released version via GitHub API ...\n"
printf " gh release list --json tagName,isLatest --jq '.[] | select(.isLatest == true) | .tagName' "
latestVersion=$(gh release list --json tagName,isLatest --jq '.[] | select(.isLatest == true) | .tagName')
if [[ $? -eq 0 ]]; then
if [[ -z "${latestVersion}" ]]; then
printf "${ANSI_LIGHT_RED}[UNKNOWN]${ANSI_NOCOLOR}\n"
printf " latest=unknown\n"
latestVersion="unknown"
else
printf "${ANSI_LIGHT_GREEN}[OK]${ANSI_NOCOLOR}\n"
printf " latest=%s\n" "${latestVersion}"
fi
else
printf "${ANSI_LIGHT_RED}[ERROR]${ANSI_NOCOLOR}\n"
printf " ${ANSI_LIGHT_RED}Couldn't get latest released version '%s'.${ANSI_NOCOLOR}\n" "${latestVersion}"
printf "::error title=%s::%s\n" "GitHub Release API" "Couldn't get latest released version '${latestVersion}'."
latestVersion="error"
fi
# Split categories by ',' into a Bash array. # Split categories by ',' into a Bash array.
# See https://stackoverflow.com/a/45201229/3719459 # See https://stackoverflow.com/a/45201229/3719459
@@ -509,21 +530,26 @@ jobs:
fi fi
jsonInventory=$(jq -c -n \ jsonInventory=$(jq -c -n \
--arg version "${VERSION}" \ --arg structVersion "${STRUCT_VERSION}" \
--arg date "$(date +"%Y-%m-%dT%H-%M-%S%:z")" \ --arg date "$(date +"%Y-%m-%dT%H:%M:%S%:z")" \
--argjson jsonMeta "$(jq -c -n \ --argjson jsonMeta "$(jq -c -n \
--arg tag "${{ inputs.tag }}" \ --arg tag "${{ inputs.tag }}" \
--arg version "${{ inputs.inventory-version }}" \ --arg version "${{ inputs.inventory-version }}" \
--arg hash "${{ github.sha }}" \ --arg hash "${{ github.sha }}" \
--arg repo "${{ github.server_url }}/${{ github.repository }}" \ --arg repo "${{ github.server_url }}/${{ github.repository }}" \
--arg release "${{ github.server_url }}/${{ github.repository }}/releases/download/${{ inputs.tag }}" \ --arg release "${{ github.server_url }}/${{ github.repository }}/releases/download/${{ inputs.tag }}" \
--argjson jsonLatest "$(jq -c -n \
--arg version "${latestVersion}" \
--arg release "${{ github.server_url }}/${{ github.repository }}/releases/download/${latestVersion}" \
'{"version": $version, "release-url": $release}' \
)" \
--argjson categories "$(jq -c -n \ --argjson categories "$(jq -c -n \
'$ARGS.positional' \ '$ARGS.positional' \
--args "${inventoryCategories[@]}" \ --args "${inventoryCategories[@]}" \
)" \ )" \
'{"tag": $tag, "version": $version, "git-hash": $hash, "repository-url": $repo, "release-url": $release, "categories": $categories}' \ '{"tag": $tag, "version": $version, "git-hash": $hash, "repository-url": $repo, "release-url": $release, "categories": $categories, "latest": $jsonLatest}' \
)" \ )" \
'{"version": 1.0, "timestamp": $date, "meta": $jsonMeta, "files": {}}' '{"version": "$structVersion", "timestamp": $date, "meta": $jsonMeta, "files": {}}'
) )
fi fi
@@ -577,7 +603,7 @@ jobs:
if [[ -n "${downloadedArtifacts[$artifact]}" ]]; then if [[ -n "${downloadedArtifacts[$artifact]}" ]]; then
printf " downloading artifact '%s' ... ${ANSI_LIGHT_YELLOW}[SKIPPED]${ANSI_NOCOLOR}\n" "${artifact}" printf " downloading artifact '%s' ... ${ANSI_LIGHT_YELLOW}[SKIPPED]${ANSI_NOCOLOR}\n" "${artifact}"
else else
echo " downloading '${artifact}' ... " printf " downloading '${artifact}' ...\n"
printf " gh run download $GITHUB_RUN_ID --dir \"%s\" --name \"%s\" " "${artifact}" "${artifact}" printf " gh run download $GITHUB_RUN_ID --dir \"%s\" --name \"%s\" " "${artifact}" "${artifact}"
gh run download $GITHUB_RUN_ID --dir "${artifact}" --name "${artifact}" gh run download $GITHUB_RUN_ID --dir "${artifact}" --name "${artifact}"
if [[ $? -eq 0 ]]; then if [[ $? -eq 0 ]]; then