diff --git a/.github/workflows/NightlyRelease.yml b/.github/workflows/NightlyRelease.yml index 88d52dd..c19829e 100644 --- a/.github/workflows/NightlyRelease.yml +++ b/.github/workflows/NightlyRelease.yml @@ -304,7 +304,7 @@ jobs: if [[ -n "${downloadedArtifacts[$artifact]}" ]]; then printf " %s\n" "downloading '${artifact}' ... ${ANSI_LIGHT_YELLOW}[SKIPPED]${ANSI_NOCOLOR}" else - echo " downloading '${artifact}' ... " + printf " downloading '${artifact}' ...\n" printf " %s" "gh run download $GITHUB_RUN_ID --dir \"${artifact}\" --name \"${artifact}\" " gh run download $GITHUB_RUN_ID --dir "${artifact}" --name "${artifact}" if [[ $? -eq 0 ]]; then diff --git a/.github/workflows/PublishReleaseNotes.yml b/.github/workflows/PublishReleaseNotes.yml index 3a79f0a..c65187c 100644 --- a/.github/workflows/PublishReleaseNotes.yml +++ b/.github/workflows/PublishReleaseNotes.yml @@ -249,7 +249,7 @@ jobs: printf " %s\n" "MergedAt: ${PR_MERGED_AT} ($(date -d"${PR_MERGED_AT}" '+%d.%m.%Y - %H:%M:%S'))" fi - echo "${PR_BODY}" > __PULLREQUEST__.md + printf "%s\n" "${PR_BODY}" > __PULLREQUEST__.md fi # 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')}" # Write final release notes to file - echo "${NOTES}" > __NOTES__.md + printf "%s\n" "${NOTES}" > __NOTES__.md # Display partial contents for debugging if [[ -s __DESCRIPTION__.md ]]; then @@ -498,6 +498,25 @@ jobs: if [[ "${{ inputs.inventory-json }}" != "" ]]; then VERSION="1.0" + # 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 [[ -n "${latestVersion}" ]]; then + printf "${ANSI_LIGHT_RED}[UNKNOWN]${ANSI_NOCOLOR}\n" + latestVersion="unknown" + else + printf "${ANSI_LIGHT_GREEN}[OK]${ANSI_NOCOLOR}\n" + 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. # See https://stackoverflow.com/a/45201229/3719459 if [[ "${{ inputs.inventory-categories }}" != "" ]]; then @@ -517,11 +536,15 @@ jobs: --arg hash "${{ github.sha }}" \ --arg repo "${{ github.server_url }}/${{ github.repository }}" \ --arg release "${{ github.server_url }}/${{ github.repository }}/releases/download/${{ inputs.tag }}" \ + --argjson jsonLatest "$(jq -c -n \ + --arg version "${latestVersion}" \ + '{"version": $version}' \ + )" \ --argjson categories "$(jq -c -n \ '$ARGS.positional' \ --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": {}}' ) @@ -577,7 +600,7 @@ jobs: if [[ -n "${downloadedArtifacts[$artifact]}" ]]; then printf " downloading artifact '%s' ... ${ANSI_LIGHT_YELLOW}[SKIPPED]${ANSI_NOCOLOR}\n" "${artifact}" else - echo " downloading '${artifact}' ... " + printf " downloading '${artifact}' ...\n" printf " gh run download $GITHUB_RUN_ID --dir \"%s\" --name \"%s\" " "${artifact}" "${artifact}" gh run download $GITHUB_RUN_ID --dir "${artifact}" --name "${artifact}" if [[ $? -eq 0 ]]; then