From a105c9adf39bd412c22869fc52f1f0312d593304 Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Tue, 7 Feb 2023 20:35:09 +0000 Subject: [PATCH 1/5] ci: Fix silent missing metadata for release notes --- scripts/release/check_commit_metadata.sh | 5 +++-- scripts/release/generate_release_notes.sh | 4 +--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/scripts/release/check_commit_metadata.sh b/scripts/release/check_commit_metadata.sh index 64b107fda0e4e..34bd8db16c5ca 100755 --- a/scripts/release/check_commit_metadata.sh +++ b/scripts/release/check_commit_metadata.sh @@ -70,7 +70,7 @@ main() { # d9f2aaf3b430d8b6f3d5f24032ed6357adaab1f1 author:world # fd54512858c906e66f04b0744d8715c2e0de97e6 author:bye labels:label:stale label:enhancement from_commit_date=2023-01-18 - mapfile -t pr_labels_raw < <( + pr_list="$( gh pr list \ --base main \ --state merged \ @@ -78,7 +78,8 @@ main() { --search "merged:>=$from_commit_date" \ --json mergeCommit,labels,author \ --jq '.[] | "\( .mergeCommit.oid ) author:\( .author.login ) labels:\(["label:\( .labels[].name )"] | join(" "))"' - ) + )" + mapfile -t pr_labels_raw <<<"$pr_list" declare -A authors labels for entry in "${pr_labels_raw[@]}"; do commit_sha_long=${entry%% *} diff --git a/scripts/release/generate_release_notes.sh b/scripts/release/generate_release_notes.sh index 0d80f4279c97e..124267dadd415 100755 --- a/scripts/release/generate_release_notes.sh +++ b/scripts/release/generate_release_notes.sh @@ -151,7 +151,5 @@ Compare: [\`$old_version...$new_version\`](https://github.com/coder/coder/compar ## Install/upgrade -Refer to our docs to [install](https://coder.com/docs/v2/latest/install) -or [upgrade](https://coder.com/docs/v2/latest/admin/upgrade) Coder, or use -a release asset below. +Refer to our docs to [install](https://coder.com/docs/v2/latest/install) or [upgrade](https://coder.com/docs/v2/latest/admin/upgrade) Coder, or use a release asset below. " From 493b9be21025088ec2501ca9fc70d7780331a218 Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Tue, 7 Feb 2023 20:46:54 +0000 Subject: [PATCH 2/5] Fix a few more instances of < <() --- scripts/release.sh | 8 +++++--- scripts/release/check_commit_metadata.sh | 9 +++++---- scripts/release/generate_release_notes.sh | 3 ++- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/scripts/release.sh b/scripts/release.sh index 8a3f74ec20f0e..acc9a91131e0b 100755 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -100,7 +100,8 @@ fi # Check the current version tag from GitHub (by number) using the API to # ensure no local tags are considered. log "Checking GitHub for latest release..." -mapfile -t versions < <(gh api -H "Accept: application/vnd.github+json" /repos/coder/coder/git/refs/tags -q '.[].ref | split("/") | .[2]' | grep '^v' | sort -r -V) +versions_out="$(gh api -H "Accept: application/vnd.github+json" /repos/coder/coder/git/refs/tags -q '.[].ref | split("/") | .[2]' | grep '^v' | sort -r -V)" +mapfile -t versions <<<"$versions_out" old_version=${versions[0]} log "Latest release: $old_version" log @@ -156,7 +157,7 @@ log 'Waiting for job to become "in_progress"...' # Wait at most 3 minutes (3*60)/3 = 60 for the job to start. for _ in $(seq 1 60); do - mapfile -t run < <( + output="$( # Output: # 3886828508 # in_progress @@ -164,7 +165,8 @@ for _ in $(seq 1 60); do --limit 1 \ --json status,databaseId \ --jq '.[] | (.databaseId | tostring), .status' - ) + )" + mapfile -t run <<<"$output" if [[ ${run[1]} != "in_progress" ]]; then sleep 3 continue diff --git a/scripts/release/check_commit_metadata.sh b/scripts/release/check_commit_metadata.sh index 34bd8db16c5ca..68e3e4ee6cac7 100755 --- a/scripts/release/check_commit_metadata.sh +++ b/scripts/release/check_commit_metadata.sh @@ -53,7 +53,8 @@ main() { security_label=security # Get abbreviated and full commit hashes and titles for each commit. - mapfile -t commits < <(git log --no-merges --pretty=format:"%h %H %s" "$range") + git_log_out="$(git log --no-merges --pretty=format:"%h %H %s" "$range")" + mapfile -t commits <<<"$git_log_out" # If this is a tag, use rev-list to find the commit it points to. from_commit=$(git rev-list -n 1 "$from_ref") @@ -70,7 +71,7 @@ main() { # d9f2aaf3b430d8b6f3d5f24032ed6357adaab1f1 author:world # fd54512858c906e66f04b0744d8715c2e0de97e6 author:bye labels:label:stale label:enhancement from_commit_date=2023-01-18 - pr_list="$( + pr_list_out="$( gh pr list \ --base main \ --state merged \ @@ -79,9 +80,9 @@ main() { --json mergeCommit,labels,author \ --jq '.[] | "\( .mergeCommit.oid ) author:\( .author.login ) labels:\(["label:\( .labels[].name )"] | join(" "))"' )" - mapfile -t pr_labels_raw <<<"$pr_list" + mapfile -t pr_metadata_raw <<<"$pr_list_out" declare -A authors labels - for entry in "${pr_labels_raw[@]}"; do + for entry in "${pr_metadata_raw[@]}"; do commit_sha_long=${entry%% *} commit_author=${entry#* author:} commit_author=${commit_author%% *} diff --git a/scripts/release/generate_release_notes.sh b/scripts/release/generate_release_notes.sh index 124267dadd415..16ec102034d00 100755 --- a/scripts/release/generate_release_notes.sh +++ b/scripts/release/generate_release_notes.sh @@ -62,7 +62,8 @@ fi source "$SCRIPT_DIR/release/check_commit_metadata.sh" "$old_version" "$ref" # Sort commits by title prefix, then by date, only return sha at the end. -mapfile -t commits < <(git log --no-merges --pretty=format:"%ct %h %s" "$old_version..$ref" | sort -k3,3 -k1,1n | cut -d' ' -f2) +git_log_out="$(git log --no-merges --pretty=format:"%ct %h %s" "$old_version..$ref" | sort -k3,3 -k1,1n | cut -d' ' -f2)" +mapfile -t commits <<<"$git_log_out" # From: https://github.com/commitizen/conventional-commit-types # NOTE(mafredri): These need to be supported in check_commit_metadata.sh as well. From da806887e42a5c600fc48b3840bd40d0c0d9fb94 Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Wed, 8 Feb 2023 11:48:33 +0000 Subject: [PATCH 3/5] Fix script paths --- scripts/release/generate_release_notes.sh | 4 ++-- scripts/release/tag_version.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/release/generate_release_notes.sh b/scripts/release/generate_release_notes.sh index 16ec102034d00..91ab16376aa3a 100755 --- a/scripts/release/generate_release_notes.sh +++ b/scripts/release/generate_release_notes.sh @@ -59,7 +59,7 @@ if [[ -z $ref ]]; then fi # shellcheck source=scripts/release/check_commit_metadata.sh -source "$SCRIPT_DIR/release/check_commit_metadata.sh" "$old_version" "$ref" +source "$SCRIPT_DIR/check_commit_metadata.sh" "$old_version" "$ref" # Sort commits by title prefix, then by date, only return sha at the end. git_log_out="$(git log --no-merges --pretty=format:"%ct %h %s" "$old_version..$ref" | sort -k3,3 -k1,1n | cut -d' ' -f2)" @@ -139,7 +139,7 @@ changelog="$( done )" -image_tag="$(execrelative ./image_tag.sh --version "$new_version")" +image_tag="$(execrelative ../image_tag.sh --version "$new_version")" echo -e "## Changelog $changelog diff --git a/scripts/release/tag_version.sh b/scripts/release/tag_version.sh index c42c88eb4e68e..3ca4e659f9c6b 100755 --- a/scripts/release/tag_version.sh +++ b/scripts/release/tag_version.sh @@ -82,7 +82,7 @@ ref=$(git rev-parse --short "$ref") log "Checking commit metadata for changes since $old_version..." # shellcheck source=scripts/release/check_commit_metadata.sh -source "$SCRIPT_DIR/release/check_commit_metadata.sh" "$old_version" "$ref" +source "$SCRIPT_DIR/check_commit_metadata.sh" "$old_version" "$ref" if ((COMMIT_METADATA_BREAKING == 1)); then prev_increment=$increment From f14f33ab2793025554ce21eb334c298b18dad2ac Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Wed, 8 Feb 2023 12:04:46 +0000 Subject: [PATCH 4/5] Set GITHUB_TOKEN in release.yaml --- .github/workflows/release.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index be626d27e4ef1..e35989bbd8262 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -63,6 +63,7 @@ jobs: - name: Create release notes env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # We always have to set this since there might be commits on # main that didn't have a PR. CODER_IGNORE_MISSING_COMMIT_METADATA: "1" From 51315cf228eea85da55b58f52d7993c30d1fc030 Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Wed, 8 Feb 2023 12:23:08 +0000 Subject: [PATCH 5/5] Fix from commit date --- scripts/release/check_commit_metadata.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/release/check_commit_metadata.sh b/scripts/release/check_commit_metadata.sh index 68e3e4ee6cac7..9e6c2234be64e 100755 --- a/scripts/release/check_commit_metadata.sh +++ b/scripts/release/check_commit_metadata.sh @@ -70,7 +70,6 @@ main() { # 27386d49d08455b6f8fbf2c18f38244d03fda892 author:hello labels:label:security # d9f2aaf3b430d8b6f3d5f24032ed6357adaab1f1 author:world # fd54512858c906e66f04b0744d8715c2e0de97e6 author:bye labels:label:stale label:enhancement - from_commit_date=2023-01-18 pr_list_out="$( gh pr list \ --base main \