From e67c60dbc561fe2c5c39322bc6475030fa57996f Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Thu, 16 Nov 2023 12:17:40 +0100 Subject: [PATCH 01/40] CI Release notes testing --- .github/workflows/check_release_notes.yml | 219 ++++++++++++++++++ azure-pipelines.yml | 2 +- .../FSharp.Compiler.Service/8.0.200.md | 1 + docs/release-notes/FSharp.Core/8.0.200.md | 1 + docs/release-notes/Language/preview.md | 1 + docs/release-notes/VisualStudio/17.9.md | 1 + eng/Versions.props | 6 +- src/Compiler/Facilities/LanguageFeatures.fsi | 1 + src/FSharp.Core/prim-types-prelude.fs | 1 + vsintegration/src/Directory.Build.props | 1 + 10 files changed, 231 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/check_release_notes.yml create mode 100644 docs/release-notes/FSharp.Compiler.Service/8.0.200.md create mode 100644 docs/release-notes/FSharp.Core/8.0.200.md create mode 100644 docs/release-notes/Language/preview.md create mode 100644 docs/release-notes/VisualStudio/17.9.md diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml new file mode 100644 index 00000000000..06b25966a2b --- /dev/null +++ b/.github/workflows/check_release_notes.yml @@ -0,0 +1,219 @@ +name: Check release notes +on: + pull_request: + types: [opened, synchronize, reopened] + branches: + - 'main' + - 'release/*' +jobs: + check_release_notes: + permissions: + issues: write + pull-requests: write + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + runs-on: ubuntu-latest + steps: + - name: Get github ref + uses: actions/github-script@v3 + id: get-pr + with: + script: | + const result = await github.pulls.get({ + pull_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + }); + return { "pr_number": context.issue.number, "ref": result.data.head.ref, "repository": result.data.head.repo.full_name}; + - name: Checkout repo + uses: actions/checkout@v2 + with: + repository: ${{ fromJson(steps.get-pr.outputs.result).repository }} + ref: ${{ fromJson(steps.get-pr.outputs.result).ref }} + fetch-depth: 0 + - name: Check for release notes changes + id: release_notes_changes + run: | + set -e + EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) + + # Parse version from eng/Versions.props + # For FSarp.Core: + # 8 + # 0 + # 100 + # For FCS: + # FCSMajorVersion>43 + # 8 + # $(FSBuildVersion) + # For VS: + # 17 + # 8 + + _fs_major_version=$(grep -oPm1 "(?<=)[^<]+" eng/Versions.props) + _fs_minor_version=$(grep -oPm1 "(?<=)[^<]+" eng/Versions.props) + _fs_build_version=$(grep -oPm1 "(?<=)[^<]+" eng/Versions.props) + _fcs_major_version=$(grep -oPm1 "(?<=)[^<]+" eng/Versions.props) + _fcs_minor_version=$(grep -oPm1 "(?<=)[^<]+" eng/Versions.props) + _fcs_build_version=$_fs_build_version + _vs_major_version=$(grep -oPm1 "(?<=)[^<]+" eng/Versions.props) + _vs_minor_version=$(grep -oPm1 "(?<=)[^<]+" eng/Versions.props) + + FSHARP_CORE_VERSION="$_fs_major_version.$_fs_minor_version.$_fs_build_version" + FCS_VERSION="$_fcs_major_version.$_fcs_minor_version.$_fcs_build_version" + VISUAL_STUDIO_VERSION="$_vs_major_version.$_vs_minor_version" + + echo "Found F# version: ${FSHARP_CORE_VERSION}" + echo "Found FCS version: ${FCS_VERSION}" + echo "Found Visual Studio version: ${VISUAL_STUDIO_VERSION}" + + [[ "$FSHARP_CORE_VERSION" =~ ^[0-9]+\.[0-9]+.[0-9]+$ ]] || (echo "Invalid FSharp.Core Version parsed"; exit 1) + [[ "$FCS_VERSION" =~ ^[0-9]+\.[0-9]+.[0-9]+$ ]] || (echo "Invalid FCS Version parsed"; exit 1) + [[ "$VISUAL_STUDIO_VERSION" =~ ^[0-9]+\.[0-9]+$ ]] || (echo "Invalid Visual Studio Version parsed"; exit 1) + + _release_notes_base_path='docs/release-notes' + _fsharp_core_release_notes_path="${_release_notes_base_path}/FSharp.Core/${FSHARP_CORE_VERSION}.md" + _fsharp_compiler_release_notes_path="${_release_notes_base_path}/FSharp.Compiler.Service/${FSHARP_CORE_VERSION}.md" + _fsharp_language_release_notes_path="${_release_notes_base_path}/Language/preview.md" + _fsharp_vs_release_notes_path="${_release_notes_base_path}/VisualStudio/${VISUAL_STUDIO_VERSION}.md" + + readonly paths=( + "src/FSharp.Core|${_fsharp_core_release_notes_path}" + "src/Compiler|${_fsharp_compiler_release_notes_path}" + "src/Compiler/Facilities/LanguageFeatures.fsi|${_fsharp_language_release_notes_path}" + "vsintegration/src|${_fsharp_vs_release_notes_path}" + ".github|NONEXISTING_NOTES_FOR_TESTING.md" + ) + + # Check all changed paths + RELEASE_NOTES_MESSAGE="" + RELEASE_NOTES_MESSAGE_DETAILS="" + RELEASE_NOTES_FOUND="" + RELEASE_NOTES_CHANGES_SUMMARY="" + RELEASE_NOTES_NOT_FOUND="" + + _modified_paths=`gh pr view ${PR_NUMBER} --json files --jq '.files.[].path'` + + for fields in ${paths[@]} + do + IFS=$'|' read -r path release_notes <<< "$fields" + echo "Checking for changed files in: $path" + + # Check if path is in modified files: + if [[ "${_modified_paths[@]}" =~ "${path}" ]]; then + echo "Found $path in modified files" + echo "Checking if release notes modified in: $release_notes" + if [[ "${_modified_paths[@]}" =~ "${release_notes}" ]]; then + echo "Found $release_notes in modified files" + RELEASE_NOTES_FOUND+="> | \\\`$path\\\` | \\\`$release_notes\\\` |" + RELEASE_NOTES_FOUND+=$'\n' + else + echo "Did not find $release_notes in modified files" + DESCRIPTION="**No release notes found**" + RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | \\\`$release_notes\\\` | ${DESCRIPTION} |" + RELEASE_NOTES_NOT_FOUND+=$'\n' + fi + else + echo "Nothing found, no release notes required" + fi + + done + + if [[ $RELEASE_NOTES_NOT_FOUND != "" ]]; then + RELEASE_NOTES_MESSAGE_DETAILS+=$"> [!CAUTION]" + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+=$"> **No release notes found for the following paths.**" + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+=$">" + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+=$"> Please make sure to add an entry with short succint description of the change as well as link to this pull request." + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+=$">" + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+=$"> Examples: " + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+=$"> \\\`- Respect line limit in quick info popup - https://github.com/dotnet/fsharp/pull/16208\\\`" + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+=$"> \\\`- More inlines for Result module - https://github.com/dotnet/fsharp/pull/16106\\\`" + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+=$"> \\\`- Miscellaneous fixes to parens analysis - https://github.com/dotnet/fsharp/pull/16262\\\`" + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+='| Change path | Release notes path | Description |' + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+='| ---------------- | ------------------ | ----------- |' + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+="${RELEASE_NOTES_NOT_FOUND}" + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + fi + + if [[ $RELEASE_NOTES_FOUND != "" ]]; then + RELEASE_NOTES_MESSAGE_DETAILS+=$"
" + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+=$"> :white_check_mark: Found changes and release notes in following paths:" + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+='> | Change path | Release notes path |' + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+='> | ---------------- | ------------------ |' + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+="${RELEASE_NOTES_FOUND}" + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + fi + + RELEASE_NOTES_MESSAGE+=$'\n' + RELEASE_NOTES_MESSAGE+=$'## Release notes check\n\n' + + if [[ $RELEASE_NOTES_MESSAGE_DETAILS == "" ]]; then + RELEASE_NOTES_MESSAGE+=$'### :white_check_mark: No release notes required.' + else + RELEASE_NOTES_MESSAGE+=$'### Release notes required.\n\n' + RELEASE_NOTES_MESSAGE+=$RELEASE_NOTES_MESSAGE_DETAILS + fi + + echo "release-notes-check-message<<$EOF" >>$GITHUB_OUTPUT + echo "${RELEASE_NOTES_MESSAGE}" >>$GITHUB_OUTPUT + echo "$EOF" >>$GITHUB_OUTPUT + + if [[ $RELEASE_NOTES_NOT_FOUND != "" ]]; then + exit 1 + fi + # Did bot already commented the PR? + - name: Find Comment + if: success() || failure() + uses: peter-evans/find-comment@v2.4.0 + id: fc + with: + issue-number: ${{github.event.pull_request.number}} + comment-author: 'github-actions[bot]' + body-includes: '' + # If not, create a new comment + - name: Create comment + if: steps.fc.outputs.comment-id == '' && (success() || failure()) + uses: actions/github-script@v6 + with: + github-token: ${{ github.token }} + script: | + const comment = await github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: `${{steps.release_notes_changes.outputs.release-notes-check-message}}` + }); + return comment.data.id; + # If yes, update the comment + - name: Update comment + if: steps.fc.outputs.comment-id != '' && (success() || failure()) + uses: actions/github-script@v6 + with: + github-token: ${{ github.token }} + script: | + const comment = await github.rest.issues.updateComment({ + owner: context.repo.owner, + repo: context.repo.repo, + comment_id: ${{steps.fc.outputs.comment-id}}, + body: `${{steps.release_notes_changes.outputs.release-notes-check-message}}` + }); + return comment.data.id; \ No newline at end of file diff --git a/azure-pipelines.yml b/azure-pipelines.yml index d16b15a6ed0..24847668210 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -283,7 +283,7 @@ stages: # We will try to restore both FSharp.Core and FCS and if restore is _successful_, package version needs to be bumped. # NOTE: This CI check should only run on the release branches. - job: Check_Published_Package_Versions - condition: or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), or(startsWith(variables['System.PullRequest.SourceBranch'], 'release/dev'), startsWith(variables['System.PullRequest.TargetBranch'], 'release/dev'))) + # condition: or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), or(startsWith(variables['System.PullRequest.SourceBranch'], 'release/dev'), startsWith(variables['System.PullRequest.TargetBranch'], 'release/dev'))) pool: vmImage: $(UbuntuMachineQueueName) strategy: diff --git a/docs/release-notes/FSharp.Compiler.Service/8.0.200.md b/docs/release-notes/FSharp.Compiler.Service/8.0.200.md new file mode 100644 index 00000000000..33e81141302 --- /dev/null +++ b/docs/release-notes/FSharp.Compiler.Service/8.0.200.md @@ -0,0 +1 @@ +- Miscellaneous fixes to parens analysis - https://github.com/dotnet/fsharp/pull/16262 \ No newline at end of file diff --git a/docs/release-notes/FSharp.Core/8.0.200.md b/docs/release-notes/FSharp.Core/8.0.200.md new file mode 100644 index 00000000000..8bed6454108 --- /dev/null +++ b/docs/release-notes/FSharp.Core/8.0.200.md @@ -0,0 +1 @@ +- More inlines for Result module - https://github.com/dotnet/fsharp/pull/16106 \ No newline at end of file diff --git a/docs/release-notes/Language/preview.md b/docs/release-notes/Language/preview.md new file mode 100644 index 00000000000..7d9996a870e --- /dev/null +++ b/docs/release-notes/Language/preview.md @@ -0,0 +1 @@ +- Feature: Better unmanaged structs handling - https://github.com/dotnet/fsharp/pull/12154 \ No newline at end of file diff --git a/docs/release-notes/VisualStudio/17.9.md b/docs/release-notes/VisualStudio/17.9.md new file mode 100644 index 00000000000..7adc4118f71 --- /dev/null +++ b/docs/release-notes/VisualStudio/17.9.md @@ -0,0 +1 @@ +- Respect line limit in quick info popup - https://github.com/dotnet/fsharp/pull/16208 \ No newline at end of file diff --git a/eng/Versions.props b/eng/Versions.props index c96ae7ba999..d09ec8ccaf6 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -12,10 +12,11 @@ beta + 8 0 - 100 + 200 0 @@ -55,8 +56,9 @@ $(FSToolsMajorVersion).$(FSToolsMinorVersion).$(FSToolsBuildVersion).$(FSToolsRevisionVersion) + 17 - 8 + 9 $(VSMajorVersion).0 $(VSMajorVersion).$(VSMinorVersion).0 $(VSAssemblyVersionPrefix).0 diff --git a/src/Compiler/Facilities/LanguageFeatures.fsi b/src/Compiler/Facilities/LanguageFeatures.fsi index e3d7e7232bc..a9b1c35db54 100644 --- a/src/Compiler/Facilities/LanguageFeatures.fsi +++ b/src/Compiler/Facilities/LanguageFeatures.fsi @@ -111,3 +111,4 @@ type LanguageVersion = static member GetFeatureVersionString: feature: LanguageFeature -> string static member Default: LanguageVersion + diff --git a/src/FSharp.Core/prim-types-prelude.fs b/src/FSharp.Core/prim-types-prelude.fs index 63c370ba332..9a002450382 100644 --- a/src/FSharp.Core/prim-types-prelude.fs +++ b/src/FSharp.Core/prim-types-prelude.fs @@ -119,3 +119,4 @@ namespace Microsoft.FSharp.Core type voidptr = (# "void*" #) type ilsigptr<'T> = (# "!0*" #) + diff --git a/vsintegration/src/Directory.Build.props b/vsintegration/src/Directory.Build.props index f7a21adf80c..af52f02d17b 100644 --- a/vsintegration/src/Directory.Build.props +++ b/vsintegration/src/Directory.Build.props @@ -10,3 +10,4 @@ + From 3d41b12213b656e74fcc461aa79d8a34fd0d37fd Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Thu, 16 Nov 2023 12:32:48 +0100 Subject: [PATCH 02/40] GH actions pls --- .github/workflows/check_release_notes.yml | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index 06b25966a2b..4c57d1c8086 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -36,7 +36,7 @@ jobs: run: | set -e EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) - + PR_URL="https://github.com/dotnet/fsharp/pull/${PR_NUMBER}" # Parse version from eng/Versions.props # For FSarp.Core: # 8 @@ -92,6 +92,7 @@ jobs: RELEASE_NOTES_CHANGES_SUMMARY="" RELEASE_NOTES_NOT_FOUND="" + _modified_paths=`gh pr view ${PR_NUMBER} --json files --jq '.files.[].path'` for fields in ${paths[@]} @@ -105,8 +106,22 @@ jobs: echo "Checking if release notes modified in: $release_notes" if [[ "${_modified_paths[@]}" =~ "${release_notes}" ]]; then echo "Found $release_notes in modified files" - RELEASE_NOTES_FOUND+="> | \\\`$path\\\` | \\\`$release_notes\\\` |" - RELEASE_NOTES_FOUND+=$'\n' + echo "Checking for pull request URL in $release_notes" + _pr_link_occurences=`grep -c "${PR_URL}" $release_notes` + if [[ ${_pr_link_occurences} = 1 ]]; then + RELEASE_NOTES_FOUND+="> | \\\`$path\\\` | \\\`$release_notes\\\` |" + RELEASE_NOTES_FOUND+=$'\n' + elif [[ ${_pr_link_occurences} -gt 1 ]]; then + echo "Found pull request URL in $release_notes, but with more than one PR URL" + DESCRIPTION="**More than one current pull request URL (${PR_URL}) found in release notes**" + RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | \\\`$release_notes\\\` | ${DESCRIPTION} |" + RELEASE_NOTES_NOT_FOUND+=$'\n' + else + echo "Did not find pull request URL in $release_notes" + DESCRIPTION="**No current pull request URL (${PR_URL}) found**" + RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | \\\`$release_notes\\\` | ${DESCRIPTION} |" + RELEASE_NOTES_NOT_FOUND+=$'\n' + fi else echo "Did not find $release_notes in modified files" DESCRIPTION="**No release notes found**" From 190543ab991bbbd888efb85eff1af531e828afe3 Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Thu, 16 Nov 2023 12:37:00 +0100 Subject: [PATCH 03/40] GH actions pls --- .github/workflows/check_release_notes.yml | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index 4c57d1c8086..ecc6e5ed582 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -67,9 +67,9 @@ jobs: echo "Found FCS version: ${FCS_VERSION}" echo "Found Visual Studio version: ${VISUAL_STUDIO_VERSION}" - [[ "$FSHARP_CORE_VERSION" =~ ^[0-9]+\.[0-9]+.[0-9]+$ ]] || (echo "Invalid FSharp.Core Version parsed"; exit 1) - [[ "$FCS_VERSION" =~ ^[0-9]+\.[0-9]+.[0-9]+$ ]] || (echo "Invalid FCS Version parsed"; exit 1) - [[ "$VISUAL_STUDIO_VERSION" =~ ^[0-9]+\.[0-9]+$ ]] || (echo "Invalid Visual Studio Version parsed"; exit 1) + [[ "$FSHARP_CORE_VERSION" =~ ^[0-9]+\.[0-9]+.[0-9]+$ ]] || (echo " Invalid FSharp.Core Version parsed"; exit 1) + [[ "$FCS_VERSION" =~ ^[0-9]+\.[0-9]+.[0-9]+$ ]] || (echo " Invalid FCS Version parsed"; exit 1) + [[ "$VISUAL_STUDIO_VERSION" =~ ^[0-9]+\.[0-9]+$ ]] || (echo " Invalid Visual Studio Version parsed"; exit 1) _release_notes_base_path='docs/release-notes' _fsharp_core_release_notes_path="${_release_notes_base_path}/FSharp.Core/${FSHARP_CORE_VERSION}.md" @@ -102,22 +102,26 @@ jobs: # Check if path is in modified files: if [[ "${_modified_paths[@]}" =~ "${path}" ]]; then - echo "Found $path in modified files" - echo "Checking if release notes modified in: $release_notes" + echo " Found $path in modified files" + echo " Checking if release notes modified in: $release_notes" if [[ "${_modified_paths[@]}" =~ "${release_notes}" ]]; then - echo "Found $release_notes in modified files" - echo "Checking for pull request URL in $release_notes" + echo " Found $release_notes in modified files" + echo " Checking for pull request URL in $release_notes" _pr_link_occurences=`grep -c "${PR_URL}" $release_notes` + + echo " Found $_pr_link_occurences occurences of $PR_URL in $release_notes" + if [[ ${_pr_link_occurences} = 1 ]]; then + echo " Found pull request URL in $release_notes once" RELEASE_NOTES_FOUND+="> | \\\`$path\\\` | \\\`$release_notes\\\` |" RELEASE_NOTES_FOUND+=$'\n' elif [[ ${_pr_link_occurences} -gt 1 ]]; then - echo "Found pull request URL in $release_notes, but with more than one PR URL" + echo " Found pull request URL in $release_notes, but with more than one PR URL" DESCRIPTION="**More than one current pull request URL (${PR_URL}) found in release notes**" RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | \\\`$release_notes\\\` | ${DESCRIPTION} |" RELEASE_NOTES_NOT_FOUND+=$'\n' else - echo "Did not find pull request URL in $release_notes" + echo " Did not find pull request URL in $release_notes" DESCRIPTION="**No current pull request URL (${PR_URL}) found**" RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | \\\`$release_notes\\\` | ${DESCRIPTION} |" RELEASE_NOTES_NOT_FOUND+=$'\n' From a9dfb6c800da32354595902c253388e9be39de45 Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Thu, 16 Nov 2023 12:37:23 +0100 Subject: [PATCH 04/40] GH actions pls --- .github/workflows/check_release_notes.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index ecc6e5ed582..8907758765e 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -127,13 +127,13 @@ jobs: RELEASE_NOTES_NOT_FOUND+=$'\n' fi else - echo "Did not find $release_notes in modified files" + echo " Did not find $release_notes in modified files" DESCRIPTION="**No release notes found**" RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | \\\`$release_notes\\\` | ${DESCRIPTION} |" RELEASE_NOTES_NOT_FOUND+=$'\n' fi else - echo "Nothing found, no release notes required" + echo " Nothing found, no release notes required" fi done From 8be68650df3612f63a97de956bf33c8cb8d8ceca Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Thu, 16 Nov 2023 12:41:51 +0100 Subject: [PATCH 05/40] GH actions pls --- .github/workflows/check_release_notes.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index 8907758765e..e87facf4cb6 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -36,6 +36,7 @@ jobs: run: | set -e EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) + PR_NUMBER=${{ github.event.number }} PR_URL="https://github.com/dotnet/fsharp/pull/${PR_NUMBER}" # Parse version from eng/Versions.props # For FSarp.Core: From 2e8d955004e51e65d8f5c075a86a59bf57c7f4c8 Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Thu, 16 Nov 2023 12:43:30 +0100 Subject: [PATCH 06/40] GH actions pls --- .github/workflows/check_release_notes.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index e87facf4cb6..dc7cb5d2d51 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -36,6 +36,7 @@ jobs: run: | set -e EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) + PR_AUTHOR="${{ github.event.pull_request.user.login }}" PR_NUMBER=${{ github.event.number }} PR_URL="https://github.com/dotnet/fsharp/pull/${PR_NUMBER}" # Parse version from eng/Versions.props @@ -140,6 +141,10 @@ jobs: done if [[ $RELEASE_NOTES_NOT_FOUND != "" ]]; then + RELEASE_NOTES_MESSAGE_DETAILS+=$"@${PR_AUTHOR}," + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+=$"> [!CAUTION]" RELEASE_NOTES_MESSAGE_DETAILS+=$"> [!CAUTION]" RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' RELEASE_NOTES_MESSAGE_DETAILS+=$"> **No release notes found for the following paths.**" From 8708a0f829f1d02e95a37215b8137a8d4416abc8 Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Thu, 16 Nov 2023 12:46:16 +0100 Subject: [PATCH 07/40] GH actions pls --- .github/workflows/check_release_notes.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index dc7cb5d2d51..c38d70adfc3 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -109,7 +109,8 @@ jobs: if [[ "${_modified_paths[@]}" =~ "${release_notes}" ]]; then echo " Found $release_notes in modified files" echo " Checking for pull request URL in $release_notes" - _pr_link_occurences=`grep -c "${PR_URL}" $release_notes` + + _pr_link_occurences=`grep -c "${PR_URL} || true" $release_notes` echo " Found $_pr_link_occurences occurences of $PR_URL in $release_notes" From 2ed53f2881306d050928d8b18a87a118b59cb905 Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Thu, 16 Nov 2023 12:47:35 +0100 Subject: [PATCH 08/40] GH actions pls --- .github/workflows/check_release_notes.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index c38d70adfc3..3d2ee03c239 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -110,7 +110,7 @@ jobs: echo " Found $release_notes in modified files" echo " Checking for pull request URL in $release_notes" - _pr_link_occurences=`grep -c "${PR_URL} || true" $release_notes` + _pr_link_occurences=`grep -c "${PR_URL}" $release_notes || true` echo " Found $_pr_link_occurences occurences of $PR_URL in $release_notes" From ea6ed5377a5201ff6e79ee755b0fce6b6ecd0416 Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Thu, 16 Nov 2023 12:58:56 +0100 Subject: [PATCH 09/40] GH actions pls --- .github/workflows/check_release_notes.yml | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index 3d2ee03c239..9e15367a4f8 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -36,9 +36,10 @@ jobs: run: | set -e EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) + FSHARP_REPO_URL="https://github.com/dotnet/fsharp" PR_AUTHOR="${{ github.event.pull_request.user.login }}" PR_NUMBER=${{ github.event.number }} - PR_URL="https://github.com/dotnet/fsharp/pull/${PR_NUMBER}" + PR_URL="${FSHARP_REPO_URL}/pull/${PR_NUMBER}" # Parse version from eng/Versions.props # For FSarp.Core: # 8 @@ -116,23 +117,23 @@ jobs: if [[ ${_pr_link_occurences} = 1 ]]; then echo " Found pull request URL in $release_notes once" - RELEASE_NOTES_FOUND+="> | \\\`$path\\\` | \\\`$release_notes\\\` |" + RELEASE_NOTES_FOUND+="> | \\\`$path\\\` | \\\`${FSHARP_REPO_URL}/$release_notes\\\` |" RELEASE_NOTES_FOUND+=$'\n' elif [[ ${_pr_link_occurences} -gt 1 ]]; then echo " Found pull request URL in $release_notes, but with more than one PR URL" DESCRIPTION="**More than one current pull request URL (${PR_URL}) found in release notes**" - RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | \\\`$release_notes\\\` | ${DESCRIPTION} |" + RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | \\\`${FSHARP_REPO_URL}/$release_notes\\\` []() | ${DESCRIPTION} |" RELEASE_NOTES_NOT_FOUND+=$'\n' else echo " Did not find pull request URL in $release_notes" DESCRIPTION="**No current pull request URL (${PR_URL}) found**" - RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | \\\`$release_notes\\\` | ${DESCRIPTION} |" + RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | \\\`${FSHARP_REPO_URL}/$release_notes\\\` | ${DESCRIPTION} |" RELEASE_NOTES_NOT_FOUND+=$'\n' fi else echo " Did not find $release_notes in modified files" - DESCRIPTION="**No release notes found**" - RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | \\\`$release_notes\\\` | ${DESCRIPTION} |" + DESCRIPTION="**No release notes found or release notes format is not correct**" + RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | \\\`${FSHARP_REPO_URL}/$release_notes\\\` | ${DESCRIPTION} |" RELEASE_NOTES_NOT_FOUND+=$'\n' fi else @@ -146,7 +147,6 @@ jobs: RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' RELEASE_NOTES_MESSAGE_DETAILS+=$"> [!CAUTION]" - RELEASE_NOTES_MESSAGE_DETAILS+=$"> [!CAUTION]" RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' RELEASE_NOTES_MESSAGE_DETAILS+=$"> **No release notes found for the following paths.**" RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' @@ -165,6 +165,9 @@ jobs: RELEASE_NOTES_MESSAGE_DETAILS+=$"> \\\`- Miscellaneous fixes to parens analysis - https://github.com/dotnet/fsharp/pull/16262\\\`" RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+=$"**You can open this PR in browser to add release notes: [open in github.dev](https://github.dev/dotnet/fsharp/pull/${PR_NUMBER})**" + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' RELEASE_NOTES_MESSAGE_DETAILS+='| Change path | Release notes path | Description |' RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' RELEASE_NOTES_MESSAGE_DETAILS+='| ---------------- | ------------------ | ----------- |' From ad3893a08cafe25444378ed596bf90c359541255 Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Thu, 16 Nov 2023 13:01:44 +0100 Subject: [PATCH 10/40] GH actions pls --- .github/workflows/check_release_notes.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index 9e15367a4f8..a60f57f53cb 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -85,7 +85,6 @@ jobs: "src/Compiler|${_fsharp_compiler_release_notes_path}" "src/Compiler/Facilities/LanguageFeatures.fsi|${_fsharp_language_release_notes_path}" "vsintegration/src|${_fsharp_vs_release_notes_path}" - ".github|NONEXISTING_NOTES_FOR_TESTING.md" ) # Check all changed paths @@ -111,7 +110,7 @@ jobs: echo " Found $release_notes in modified files" echo " Checking for pull request URL in $release_notes" - _pr_link_occurences=`grep -c "${PR_URL}" $release_notes || true` + _pr_link_occurences=`grep -c "${PR_URL}" $release_notes || (true && echo 0)` echo " Found $_pr_link_occurences occurences of $PR_URL in $release_notes" From 9ee54844a8daddfb238332f6e0fc2b7e6abdbcba Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Thu, 16 Nov 2023 13:03:54 +0100 Subject: [PATCH 11/40] GH actions pls --- .github/workflows/check_release_notes.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index a60f57f53cb..6f7399222ef 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -121,18 +121,18 @@ jobs: elif [[ ${_pr_link_occurences} -gt 1 ]]; then echo " Found pull request URL in $release_notes, but with more than one PR URL" DESCRIPTION="**More than one current pull request URL (${PR_URL}) found in release notes**" - RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | \\\`${FSHARP_REPO_URL}/$release_notes\\\` []() | ${DESCRIPTION} |" + RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | ${FSHARP_REPO_URL}/$release_notes | ${DESCRIPTION} |" RELEASE_NOTES_NOT_FOUND+=$'\n' else echo " Did not find pull request URL in $release_notes" DESCRIPTION="**No current pull request URL (${PR_URL}) found**" - RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | \\\`${FSHARP_REPO_URL}/$release_notes\\\` | ${DESCRIPTION} |" + RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | ${FSHARP_REPO_URL}/$release_notes | ${DESCRIPTION} |" RELEASE_NOTES_NOT_FOUND+=$'\n' fi else echo " Did not find $release_notes in modified files" DESCRIPTION="**No release notes found or release notes format is not correct**" - RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | \\\`${FSHARP_REPO_URL}/$release_notes\\\` | ${DESCRIPTION} |" + RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | ${FSHARP_REPO_URL}/$release_notes | ${DESCRIPTION} |" RELEASE_NOTES_NOT_FOUND+=$'\n' fi else From 6e614ec0a3a622a8f7adfb794c86177502d5bdc3 Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Thu, 16 Nov 2023 13:06:46 +0100 Subject: [PATCH 12/40] GH actions pls --- .github/workflows/check_release_notes.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index 6f7399222ef..fd910373c0a 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -110,7 +110,12 @@ jobs: echo " Found $release_notes in modified files" echo " Checking for pull request URL in $release_notes" - _pr_link_occurences=`grep -c "${PR_URL}" $release_notes || (true && echo 0)` + if [[ ! -f $release_notes ]]; then + echo " $release_notes does not exist, please, create it." + exit 1; + fi + + _pr_link_occurences=`grep -c "${PR_URL}" $release_notes || true` echo " Found $_pr_link_occurences occurences of $PR_URL in $release_notes" From d5ed785d5798fdddd8b6603da455187e6d28ed9a Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Thu, 16 Nov 2023 13:07:41 +0100 Subject: [PATCH 13/40] GH actions pls --- .github/workflows/check_release_notes.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index fd910373c0a..f9e14456656 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -119,7 +119,7 @@ jobs: echo " Found $_pr_link_occurences occurences of $PR_URL in $release_notes" - if [[ ${_pr_link_occurences} = 1 ]]; then + if [[ ${_pr_link_occurences} -eq 1 ]]; then echo " Found pull request URL in $release_notes once" RELEASE_NOTES_FOUND+="> | \\\`$path\\\` | \\\`${FSHARP_REPO_URL}/$release_notes\\\` |" RELEASE_NOTES_FOUND+=$'\n' From a0d1b25b111b58ad3e07ea52493d8ea70bb97da3 Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Thu, 16 Nov 2023 13:10:01 +0100 Subject: [PATCH 14/40] GH actions pls --- .github/workflows/check_release_notes.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index f9e14456656..860a0a3f814 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -121,23 +121,23 @@ jobs: if [[ ${_pr_link_occurences} -eq 1 ]]; then echo " Found pull request URL in $release_notes once" - RELEASE_NOTES_FOUND+="> | \\\`$path\\\` | \\\`${FSHARP_REPO_URL}/$release_notes\\\` |" + RELEASE_NOTES_FOUND+="> | \\\`$path\\\` | \\\`[$release_notes](${FSHARP_REPO_URL}/$release_notes)\\\` |" RELEASE_NOTES_FOUND+=$'\n' elif [[ ${_pr_link_occurences} -gt 1 ]]; then echo " Found pull request URL in $release_notes, but with more than one PR URL" DESCRIPTION="**More than one current pull request URL (${PR_URL}) found in release notes**" - RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | ${FSHARP_REPO_URL}/$release_notes | ${DESCRIPTION} |" + RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | [$release_notes](${FSHARP_REPO_URL}/$release_notes) | ${DESCRIPTION} |" RELEASE_NOTES_NOT_FOUND+=$'\n' else echo " Did not find pull request URL in $release_notes" DESCRIPTION="**No current pull request URL (${PR_URL}) found**" - RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | ${FSHARP_REPO_URL}/$release_notes | ${DESCRIPTION} |" + RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | [$release_notes](${FSHARP_REPO_URL}/$release_notes) | ${DESCRIPTION} |" RELEASE_NOTES_NOT_FOUND+=$'\n' fi else echo " Did not find $release_notes in modified files" DESCRIPTION="**No release notes found or release notes format is not correct**" - RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | ${FSHARP_REPO_URL}/$release_notes | ${DESCRIPTION} |" + RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | [$release_notes](${FSHARP_REPO_URL}/$release_notes) | ${DESCRIPTION} |" RELEASE_NOTES_NOT_FOUND+=$'\n' fi else From 30a8a1932edc909e3452041a8f105f9c04281cdd Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Thu, 16 Nov 2023 13:11:36 +0100 Subject: [PATCH 15/40] GH actions pls --- .github/workflows/check_release_notes.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index 860a0a3f814..8d7382d6f41 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -83,7 +83,7 @@ jobs: readonly paths=( "src/FSharp.Core|${_fsharp_core_release_notes_path}" "src/Compiler|${_fsharp_compiler_release_notes_path}" - "src/Compiler/Facilities/LanguageFeatures.fsi|${_fsharp_language_release_notes_path}" + "LanguageFeatures.fsi|${_fsharp_language_release_notes_path}" "vsintegration/src|${_fsharp_vs_release_notes_path}" ) From 21859e37a2a919f909905a7487f234f8c4b36f7f Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Mon, 20 Nov 2023 13:05:40 +0100 Subject: [PATCH 16/40] GH actions pls --- .github/workflows/check_release_notes.yml | 25 +++++++++++++---------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index 8d7382d6f41..a384a9d4f81 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -93,6 +93,7 @@ jobs: RELEASE_NOTES_FOUND="" RELEASE_NOTES_CHANGES_SUMMARY="" RELEASE_NOTES_NOT_FOUND="" + PULL_REQUEST_FOUND=false _modified_paths=`gh pr view ${PR_NUMBER} --json files --jq '.files.[].path'` @@ -121,18 +122,14 @@ jobs: if [[ ${_pr_link_occurences} -eq 1 ]]; then echo " Found pull request URL in $release_notes once" - RELEASE_NOTES_FOUND+="> | \\\`$path\\\` | \\\`[$release_notes](${FSHARP_REPO_URL}/$release_notes)\\\` |" + RELEASE_NOTES_FOUND+="> | \\\`$path\\\` | \\\`[$release_notes](${FSHARP_REPO_URL}/$release_notes)\\\` | |" RELEASE_NOTES_FOUND+=$'\n' - elif [[ ${_pr_link_occurences} -gt 1 ]]; then - echo " Found pull request URL in $release_notes, but with more than one PR URL" - DESCRIPTION="**More than one current pull request URL (${PR_URL}) found in release notes**" - RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | [$release_notes](${FSHARP_REPO_URL}/$release_notes) | ${DESCRIPTION} |" - RELEASE_NOTES_NOT_FOUND+=$'\n' - else + PULL_REQUEST_FOUND=true + elif [[ ${_pr_link_occurences} -eq 0 ]]; then echo " Did not find pull request URL in $release_notes" DESCRIPTION="**No current pull request URL (${PR_URL}) found**" - RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | [$release_notes](${FSHARP_REPO_URL}/$release_notes) | ${DESCRIPTION} |" - RELEASE_NOTES_NOT_FOUND+=$'\n' + RELEASE_NOTES_FOUND+="| \\\`$path\\\` | [$release_notes](${FSHARP_REPO_URL}/$release_notes) | ${DESCRIPTION} |" + RELEASE_NOTES_FOUND+=$'\n' fi else echo " Did not find $release_notes in modified files" @@ -188,9 +185,15 @@ jobs: RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' RELEASE_NOTES_MESSAGE_DETAILS+=$"> :white_check_mark: Found changes and release notes in following paths:" RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' - RELEASE_NOTES_MESSAGE_DETAILS+='> | Change path | Release notes path |' RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' - RELEASE_NOTES_MESSAGE_DETAILS+='> | ---------------- | ------------------ |' + RELEASE_NOTES_MESSAGE_DETAILS+=$"> [!WARNING]" + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+=$"> **No PR link found in the release notes, please consider adding it.**" + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+='> | Change path | Release notes path | Description |' + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+='> | ---------------- | ------------------ | ----------- |' RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' RELEASE_NOTES_MESSAGE_DETAILS+="${RELEASE_NOTES_FOUND}" RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' From 92755f73f4f9510ac7da63fec9856e718bed11c6 Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Mon, 20 Nov 2023 13:21:41 +0100 Subject: [PATCH 17/40] GH actions pls --- .github/workflows/check_release_notes.yml | 34 ++++++++++++++++++----- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index a384a9d4f81..4a0574d1d71 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -1,7 +1,7 @@ name: Check release notes on: pull_request: - types: [opened, synchronize, reopened] + types: [opened, synchronize, reopened, labeled, unlabeled] branches: - 'main' - 'release/*' @@ -32,6 +32,7 @@ jobs: ref: ${{ fromJson(steps.get-pr.outputs.result).ref }} fetch-depth: 0 - name: Check for release notes changes + if: ${{ !contains(github.event.pull_request.labels.*.name, 'NO_RELEASE_NOTES') }} id: release_notes_changes run: | set -e @@ -40,6 +41,11 @@ jobs: PR_AUTHOR="${{ github.event.pull_request.user.login }}" PR_NUMBER=${{ github.event.number }} PR_URL="${FSHARP_REPO_URL}/pull/${PR_NUMBER}" + + OPT_OUT_RELEASE_NOTES=${{ contains(github.event.pull_request.labels.*.name, 'NO_RELEASE_NOTES') }} + + echo "Opt out of release notes: $OPT_OUT_RELEASE_NOTES" + # Parse version from eng/Versions.props # For FSarp.Core: # 8 @@ -127,7 +133,7 @@ jobs: PULL_REQUEST_FOUND=true elif [[ ${_pr_link_occurences} -eq 0 ]]; then echo " Did not find pull request URL in $release_notes" - DESCRIPTION="**No current pull request URL (${PR_URL}) found**" + DESCRIPTION="**No current pull request URL (${PR_URL}) found, please consider adding it**" RELEASE_NOTES_FOUND+="| \\\`$path\\\` | [$release_notes](${FSHARP_REPO_URL}/$release_notes) | ${DESCRIPTION} |" RELEASE_NOTES_FOUND+=$'\n' fi @@ -188,14 +194,15 @@ jobs: RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' RELEASE_NOTES_MESSAGE_DETAILS+=$"> [!WARNING]" RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' - RELEASE_NOTES_MESSAGE_DETAILS+=$"> **No PR link found in the release notes, please consider adding it.**" + RELEASE_NOTES_MESSAGE_DETAILS+=$"> **No PR link found in some release notes, please consider adding it.**" + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' RELEASE_NOTES_MESSAGE_DETAILS+='> | Change path | Release notes path | Description |' RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' RELEASE_NOTES_MESSAGE_DETAILS+='> | ---------------- | ------------------ | ----------- |' RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' - RELEASE_NOTES_MESSAGE_DETAILS+="${RELEASE_NOTES_FOUND}" + RELEASE_NOTES_MESSAGE_DETAILS+="> ${RELEASE_NOTES_FOUND}" RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' fi @@ -209,11 +216,24 @@ jobs: RELEASE_NOTES_MESSAGE+=$RELEASE_NOTES_MESSAGE_DETAILS fi - echo "release-notes-check-message<<$EOF" >>$GITHUB_OUTPUT - echo "${RELEASE_NOTES_MESSAGE}" >>$GITHUB_OUTPUT + echo "release-notes-check-message<<$EOF" >>$GITHUB_OUTPUT" + + if [[ $OPT_OUT_RELEASE_NOTES = true ]]; then + echo "> [!WARNING]" >>$GITHUB_OUTPUT + echo "> **Author opted out of release notes, check is disabled for this pull request.**" >>$GITHUB_OUTPUT + echo "> cc @dotnet/fsharp-team-msft" >>$GITHUB_OUTPUT + echo "" + echo "
" >>$GITHUB_OUTPUT + echo "See summary about missing notes." >>$GITHUB_OUTPUT + echo "${RELEASE_NOTES_MESSAGE}" >>$GITHUB_OUTPUT + echo "
" >>$GITHUB_OUTPUT + else + echo "${RELEASE_NOTES_MESSAGE}" >>$GITHUB_OUTPUT + fi + echo "$EOF" >>$GITHUB_OUTPUT - if [[ $RELEASE_NOTES_NOT_FOUND != "" ]]; then + if [[ $RELEASE_NOTES_NOT_FOUND != "" && ${OPT_OUT_RELEASE_NOTES} != true ]]; then exit 1 fi # Did bot already commented the PR? From e1580a5a64ddc9622f58d8ba4e1ede78d622dc7c Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Mon, 20 Nov 2023 13:24:40 +0100 Subject: [PATCH 18/40] GH actions pls --- .github/workflows/check_release_notes.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index 4a0574d1d71..683e8e4a25f 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -134,13 +134,13 @@ jobs: elif [[ ${_pr_link_occurences} -eq 0 ]]; then echo " Did not find pull request URL in $release_notes" DESCRIPTION="**No current pull request URL (${PR_URL}) found, please consider adding it**" - RELEASE_NOTES_FOUND+="| \\\`$path\\\` | [$release_notes](${FSHARP_REPO_URL}/$release_notes) | ${DESCRIPTION} |" + RELEASE_NOTES_FOUND+="| \\\`$path\\\` | \\\`[$release_notes](${FSHARP_REPO_URL}/$release_notes)\\\` | ${DESCRIPTION} |" RELEASE_NOTES_FOUND+=$'\n' fi else echo " Did not find $release_notes in modified files" DESCRIPTION="**No release notes found or release notes format is not correct**" - RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | [$release_notes](${FSHARP_REPO_URL}/$release_notes) | ${DESCRIPTION} |" + RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | \\\`[$release_notes](${FSHARP_REPO_URL}/$release_notes)\\\` | ${DESCRIPTION} |" RELEASE_NOTES_NOT_FOUND+=$'\n' fi else From d09a36ce36d9e889530af83b5bc1ab8958736d10 Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Mon, 20 Nov 2023 13:28:14 +0100 Subject: [PATCH 19/40] GH actions pls --- .github/workflows/check_release_notes.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index 683e8e4a25f..7bc510b31f8 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -216,7 +216,7 @@ jobs: RELEASE_NOTES_MESSAGE+=$RELEASE_NOTES_MESSAGE_DETAILS fi - echo "release-notes-check-message<<$EOF" >>$GITHUB_OUTPUT" + echo "release-notes-check-message<<$EOF" >>$GITHUB_OUTPUT if [[ $OPT_OUT_RELEASE_NOTES = true ]]; then echo "> [!WARNING]" >>$GITHUB_OUTPUT From 2bc0fc7c603b75cd04bb23b97e1fdd5b911dbc9c Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Mon, 20 Nov 2023 14:07:01 +0100 Subject: [PATCH 20/40] GH actions pls --- .github/workflows/check_release_notes.yml | 25 +++++++++++++---------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index 7bc510b31f8..9237914345a 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -99,8 +99,7 @@ jobs: RELEASE_NOTES_FOUND="" RELEASE_NOTES_CHANGES_SUMMARY="" RELEASE_NOTES_NOT_FOUND="" - PULL_REQUEST_FOUND=false - + PULL_REQUEST_FOUND=true _modified_paths=`gh pr view ${PR_NUMBER} --json files --jq '.files.[].path'` @@ -130,12 +129,12 @@ jobs: echo " Found pull request URL in $release_notes once" RELEASE_NOTES_FOUND+="> | \\\`$path\\\` | \\\`[$release_notes](${FSHARP_REPO_URL}/$release_notes)\\\` | |" RELEASE_NOTES_FOUND+=$'\n' - PULL_REQUEST_FOUND=true elif [[ ${_pr_link_occurences} -eq 0 ]]; then echo " Did not find pull request URL in $release_notes" DESCRIPTION="**No current pull request URL (${PR_URL}) found, please consider adding it**" - RELEASE_NOTES_FOUND+="| \\\`$path\\\` | \\\`[$release_notes](${FSHARP_REPO_URL}/$release_notes)\\\` | ${DESCRIPTION} |" + RELEASE_NOTES_FOUND+="> | \\\`$path\\\` | \\\`[$release_notes](${FSHARP_REPO_URL}/$release_notes)\\\` | ${DESCRIPTION} |" RELEASE_NOTES_FOUND+=$'\n' + PULL_REQUEST_FOUND=false fi else echo " Did not find $release_notes in modified files" @@ -192,17 +191,21 @@ jobs: RELEASE_NOTES_MESSAGE_DETAILS+=$"> :white_check_mark: Found changes and release notes in following paths:" RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' - RELEASE_NOTES_MESSAGE_DETAILS+=$"> [!WARNING]" - RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' - RELEASE_NOTES_MESSAGE_DETAILS+=$"> **No PR link found in some release notes, please consider adding it.**" - RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' - RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' - RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + + if [[ $PULL_REQUEST_FOUND = false ]]; then + RELEASE_NOTES_MESSAGE_DETAILS+=$"> [!WARNING]" + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+=$"> **No PR link found in some release notes, please consider adding it.**" + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + fi + RELEASE_NOTES_MESSAGE_DETAILS+='> | Change path | Release notes path | Description |' RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' RELEASE_NOTES_MESSAGE_DETAILS+='> | ---------------- | ------------------ | ----------- |' RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' - RELEASE_NOTES_MESSAGE_DETAILS+="> ${RELEASE_NOTES_FOUND}" + RELEASE_NOTES_MESSAGE_DETAILS+="${RELEASE_NOTES_FOUND}" RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' fi From bfb14a642cb359860fb73c15b3a47b5fdf33bf95 Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Mon, 20 Nov 2023 14:09:02 +0100 Subject: [PATCH 21/40] GH actions pls --- docs/release-notes/VisualStudio/17.9.md | 1 - 1 file changed, 1 deletion(-) delete mode 100644 docs/release-notes/VisualStudio/17.9.md diff --git a/docs/release-notes/VisualStudio/17.9.md b/docs/release-notes/VisualStudio/17.9.md deleted file mode 100644 index 7adc4118f71..00000000000 --- a/docs/release-notes/VisualStudio/17.9.md +++ /dev/null @@ -1 +0,0 @@ -- Respect line limit in quick info popup - https://github.com/dotnet/fsharp/pull/16208 \ No newline at end of file From 3ed6bf93cb240fe7de8a1a5b782d812d5eec6631 Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Mon, 20 Nov 2023 14:12:56 +0100 Subject: [PATCH 22/40] GH actions pls --- .github/workflows/check_release_notes.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index 9237914345a..f5198c90939 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -210,12 +210,13 @@ jobs: fi RELEASE_NOTES_MESSAGE+=$'\n' - RELEASE_NOTES_MESSAGE+=$'## Release notes check\n\n' if [[ $RELEASE_NOTES_MESSAGE_DETAILS == "" ]]; then - RELEASE_NOTES_MESSAGE+=$'### :white_check_mark: No release notes required.' + RELEASE_NOTES_MESSAGE+=$'## :white_check_mark: No release notes required\n\n' + elif [[ $OPT_OUT_RELEASE_NOTES = true ]]; then + RELEASE_NOTES_MESSAGE+=$'## :warning: Release notes required, but author opted out\n\n' else - RELEASE_NOTES_MESSAGE+=$'### Release notes required.\n\n' + RELEASE_NOTES_MESSAGE+=$'## :heavy_exclamation_mark: Release notes required\n\n' RELEASE_NOTES_MESSAGE+=$RELEASE_NOTES_MESSAGE_DETAILS fi From 990a972400de07d6c13279083f6b6a0beadd1be9 Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Mon, 20 Nov 2023 14:14:08 +0100 Subject: [PATCH 23/40] GH actions pls --- .github/workflows/check_release_notes.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index f5198c90939..47c4c6fffb0 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -32,7 +32,6 @@ jobs: ref: ${{ fromJson(steps.get-pr.outputs.result).ref }} fetch-depth: 0 - name: Check for release notes changes - if: ${{ !contains(github.event.pull_request.labels.*.name, 'NO_RELEASE_NOTES') }} id: release_notes_changes run: | set -e From 74373c7daa562cc50053ddf4014cd9819a318011 Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Mon, 20 Nov 2023 14:16:31 +0100 Subject: [PATCH 24/40] GH actions pls --- .github/workflows/check_release_notes.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index 47c4c6fffb0..e71739a80ab 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -117,7 +117,7 @@ jobs: if [[ ! -f $release_notes ]]; then echo " $release_notes does not exist, please, create it." - exit 1; + #exit 1; fi _pr_link_occurences=`grep -c "${PR_URL}" $release_notes || true` From 0afa8d8d24ad97d894009427eafceafbeb36354d Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Mon, 20 Nov 2023 14:25:14 +0100 Subject: [PATCH 25/40] GH actions pls --- .github/workflows/check_release_notes.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index e71739a80ab..71144437714 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -126,19 +126,19 @@ jobs: if [[ ${_pr_link_occurences} -eq 1 ]]; then echo " Found pull request URL in $release_notes once" - RELEASE_NOTES_FOUND+="> | \\\`$path\\\` | \\\`[$release_notes](${FSHARP_REPO_URL}/$release_notes)\\\` | |" + RELEASE_NOTES_FOUND+="> | \\\`$path\\\` | [$release_notes](${FSHARP_REPO_URL}/$release_notes) | |" RELEASE_NOTES_FOUND+=$'\n' elif [[ ${_pr_link_occurences} -eq 0 ]]; then echo " Did not find pull request URL in $release_notes" DESCRIPTION="**No current pull request URL (${PR_URL}) found, please consider adding it**" - RELEASE_NOTES_FOUND+="> | \\\`$path\\\` | \\\`[$release_notes](${FSHARP_REPO_URL}/$release_notes)\\\` | ${DESCRIPTION} |" + RELEASE_NOTES_FOUND+="> | \\\`$path\\\` | [$release_notes](${FSHARP_REPO_URL}/$release_notes) | ${DESCRIPTION} |" RELEASE_NOTES_FOUND+=$'\n' PULL_REQUEST_FOUND=false fi else echo " Did not find $release_notes in modified files" DESCRIPTION="**No release notes found or release notes format is not correct**" - RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | \\\`[$release_notes](${FSHARP_REPO_URL}/$release_notes)\\\` | ${DESCRIPTION} |" + RELEASE_NOTES_NOT_FOUND+="| \\\`$path\\\` | [$release_notes](${FSHARP_REPO_URL}/$release_notes) | ${DESCRIPTION} |" RELEASE_NOTES_NOT_FOUND+=$'\n' fi else @@ -227,8 +227,9 @@ jobs: echo "> cc @dotnet/fsharp-team-msft" >>$GITHUB_OUTPUT echo "" echo "
" >>$GITHUB_OUTPUT - echo "See summary about missing notes." >>$GITHUB_OUTPUT + echo "" echo "${RELEASE_NOTES_MESSAGE}" >>$GITHUB_OUTPUT + echo "" echo "
" >>$GITHUB_OUTPUT else echo "${RELEASE_NOTES_MESSAGE}" >>$GITHUB_OUTPUT From 498133901ae1e84a5e0592fe6d221f6409e51262 Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Mon, 20 Nov 2023 14:30:06 +0100 Subject: [PATCH 26/40] GH actions pls --- .github/workflows/check_release_notes.yml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index 71144437714..dedd40ec588 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -212,8 +212,7 @@ jobs: if [[ $RELEASE_NOTES_MESSAGE_DETAILS == "" ]]; then RELEASE_NOTES_MESSAGE+=$'## :white_check_mark: No release notes required\n\n' - elif [[ $OPT_OUT_RELEASE_NOTES = true ]]; then - RELEASE_NOTES_MESSAGE+=$'## :warning: Release notes required, but author opted out\n\n' + elif [[ "$OPT_OUT_RELEASE_NOTES" = true ]]; then else RELEASE_NOTES_MESSAGE+=$'## :heavy_exclamation_mark: Release notes required\n\n' RELEASE_NOTES_MESSAGE+=$RELEASE_NOTES_MESSAGE_DETAILS @@ -221,15 +220,18 @@ jobs: echo "release-notes-check-message<<$EOF" >>$GITHUB_OUTPUT - if [[ $OPT_OUT_RELEASE_NOTES = true ]]; then + if [[ "$OPT_OUT_RELEASE_NOTES" = true ]]; then + echo "## :warning: Release notes required, but author opted out" >>$GITHUB_OUTPUT + echo "" >>$GITHUB_OUTPUT + echo "" >>$GITHUB_OUTPUT echo "> [!WARNING]" >>$GITHUB_OUTPUT echo "> **Author opted out of release notes, check is disabled for this pull request.**" >>$GITHUB_OUTPUT echo "> cc @dotnet/fsharp-team-msft" >>$GITHUB_OUTPUT - echo "" + echo "" >>$GITHUB_OUTPUT echo "
" >>$GITHUB_OUTPUT - echo "" + echo "" >>$GITHUB_OUTPUT echo "${RELEASE_NOTES_MESSAGE}" >>$GITHUB_OUTPUT - echo "" + echo "" >>$GITHUB_OUTPUT echo "
" >>$GITHUB_OUTPUT else echo "${RELEASE_NOTES_MESSAGE}" >>$GITHUB_OUTPUT From be7180e34c4c047bf26378bd68c97a1be5d3b470 Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Mon, 20 Nov 2023 14:32:38 +0100 Subject: [PATCH 27/40] GH actions pls --- .github/workflows/check_release_notes.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index dedd40ec588..e5af6055244 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -226,13 +226,7 @@ jobs: echo "" >>$GITHUB_OUTPUT echo "> [!WARNING]" >>$GITHUB_OUTPUT echo "> **Author opted out of release notes, check is disabled for this pull request.**" >>$GITHUB_OUTPUT - echo "> cc @dotnet/fsharp-team-msft" >>$GITHUB_OUTPUT - echo "" >>$GITHUB_OUTPUT - echo "
" >>$GITHUB_OUTPUT - echo "" >>$GITHUB_OUTPUT - echo "${RELEASE_NOTES_MESSAGE}" >>$GITHUB_OUTPUT - echo "" >>$GITHUB_OUTPUT - echo "
" >>$GITHUB_OUTPUT + echo "> cc @" >>$GITHUB_OUTPUT else echo "${RELEASE_NOTES_MESSAGE}" >>$GITHUB_OUTPUT fi From afa5914d5cb2af20397017de862693a65d04da13 Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Mon, 20 Nov 2023 14:34:47 +0100 Subject: [PATCH 28/40] GH actions pls --- .github/workflows/check_release_notes.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index e5af6055244..032f0406ce9 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -170,6 +170,9 @@ jobs: RELEASE_NOTES_MESSAGE_DETAILS+=$"> \\\`- Miscellaneous fixes to parens analysis - https://github.com/dotnet/fsharp/pull/16262\\\`" RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+=$'**If you believe that release notes are not necessary for this PR, please add "NO_RELEASE_NOTES" label to the pull request.**' + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' + RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' RELEASE_NOTES_MESSAGE_DETAILS+=$"**You can open this PR in browser to add release notes: [open in github.dev](https://github.dev/dotnet/fsharp/pull/${PR_NUMBER})**" RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' From db190c16f99c16c649e90ce867ff2addea5e9cd7 Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Mon, 20 Nov 2023 14:35:12 +0100 Subject: [PATCH 29/40] GH actions pls --- .github/workflows/check_release_notes.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index 032f0406ce9..512e6b5d69e 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -215,7 +215,6 @@ jobs: if [[ $RELEASE_NOTES_MESSAGE_DETAILS == "" ]]; then RELEASE_NOTES_MESSAGE+=$'## :white_check_mark: No release notes required\n\n' - elif [[ "$OPT_OUT_RELEASE_NOTES" = true ]]; then else RELEASE_NOTES_MESSAGE+=$'## :heavy_exclamation_mark: Release notes required\n\n' RELEASE_NOTES_MESSAGE+=$RELEASE_NOTES_MESSAGE_DETAILS From 869b71e525aa9202cbdf8d6d7189147a9ef01fd5 Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Mon, 20 Nov 2023 14:41:58 +0100 Subject: [PATCH 30/40] GH actions pls --- .github/workflows/check_release_notes.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index 512e6b5d69e..d4449c6dc42 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -223,6 +223,8 @@ jobs: echo "release-notes-check-message<<$EOF" >>$GITHUB_OUTPUT if [[ "$OPT_OUT_RELEASE_NOTES" = true ]]; then + echo "" >>$GITHUB_OUTPUT + echo "" >>$GITHUB_OUTPUT echo "## :warning: Release notes required, but author opted out" >>$GITHUB_OUTPUT echo "" >>$GITHUB_OUTPUT echo "" >>$GITHUB_OUTPUT From a07b55730062aeb9f3b616a55e065592f3530f1b Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Mon, 20 Nov 2023 14:43:19 +0100 Subject: [PATCH 31/40] GH actions pls --- .github/workflows/check_release_notes.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index d4449c6dc42..a8efcf91269 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -230,7 +230,7 @@ jobs: echo "" >>$GITHUB_OUTPUT echo "> [!WARNING]" >>$GITHUB_OUTPUT echo "> **Author opted out of release notes, check is disabled for this pull request.**" >>$GITHUB_OUTPUT - echo "> cc @" >>$GITHUB_OUTPUT + echo "> cc @dotnet/fsharp-team-msft" >>$GITHUB_OUTPUT else echo "${RELEASE_NOTES_MESSAGE}" >>$GITHUB_OUTPUT fi From 641917b74aed9f080d4fbed44c0077e91bcc2d26 Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Mon, 20 Nov 2023 14:45:51 +0100 Subject: [PATCH 32/40] GH actions pls --- .github/PULL_REQUEST_TEMPLATE.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000000..f317c3e24ec --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,18 @@ +## Description + + + +Fixes # (issue, if applicable) + +## Checklist + +- [ ] Test cases added +- [ ] Performance benchmarks added in case of performance changes +- [ ] Release notes entry updated: + > Please make sure to add an entry with short succint description of the change as well as link to this pull request, if applicable. + > Examples: + > - Respect line limit in quick info popup - https://github.com/dotnet/fsharp/pull/16208 + > - More inlines for Result module - https://github.com/dotnet/fsharp/pull/16106 + > - Miscellaneous fixes to parens analysis - https://github.com/dotnet/fsharp/pull/16262 + > + > **If you believe that release notes are not necessary for this PR, please add `NO_RELEASE_NOTES` label to the pull request.** \ No newline at end of file From 8624e0b6d3a69dd485b6b7ff6a3dd70b670400ad Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Mon, 20 Nov 2023 15:24:02 +0100 Subject: [PATCH 33/40] GH actions pls --- .github/PULL_REQUEST_TEMPLATE.md | 13 ++++++++++--- .github/workflows/check_release_notes.yml | 2 ++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index f317c3e24ec..6642e4b7df6 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -9,10 +9,17 @@ Fixes # (issue, if applicable) - [ ] Test cases added - [ ] Performance benchmarks added in case of performance changes - [ ] Release notes entry updated: - > Please make sure to add an entry with short succint description of the change as well as link to this pull request, if applicable. - > Examples: + > Please make sure to add an entry with short succint description of the change as well as link to this pull request to the respective release notes file, if applicable. + > + > Release notes files: + > - If anything under `src/Compiler` has been changed, please make sure to make an entry in `docs/release-notes/FSharp.Compiler.Service/.md`, where `` is usually "highest" one, e.g. `42.8.200` + > - If language feature was added (i.e. `LanguageFeatures.fsi` was changed), please add it to `docs/releae-notes/Language/preview.md` + > - If a change to `FSharp.Core` was made, please make sure to edit `docs/release-notes/FSharp.Core/.md` where version is "highest" one, e.g. `8.0.200`. + + > Examples of release notes entries: > - Respect line limit in quick info popup - https://github.com/dotnet/fsharp/pull/16208 > - More inlines for Result module - https://github.com/dotnet/fsharp/pull/16106 > - Miscellaneous fixes to parens analysis - https://github.com/dotnet/fsharp/pull/16262 - > + > + > **If you believe that release notes are not necessary for this PR, please add `NO_RELEASE_NOTES` label to the pull request.** \ No newline at end of file diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index 9b5b0bbb724..1fa3f5a6317 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -103,6 +103,8 @@ jobs: RELEASE_NOTES_NOT_FOUND="" PULL_REQUEST_FOUND=true + gh repo set-default dotnet/fsharp + _modified_paths=`gh pr view ${PR_NUMBER} --json files --jq '.files.[].path'` for fields in ${paths[@]} From 21d19b798ec4ea11d6639040a476b747665cf84f Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Mon, 20 Nov 2023 15:31:35 +0100 Subject: [PATCH 34/40] Please work --- .github/workflows/check_release_notes.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index 1fa3f5a6317..3371106300a 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -149,9 +149,10 @@ jobs: else echo " Nothing found, no release notes required" fi - done + echo "Done checking for release notes changes" + if [[ $RELEASE_NOTES_NOT_FOUND != "" ]]; then RELEASE_NOTES_MESSAGE_DETAILS+=$"@${PR_AUTHOR}," RELEASE_NOTES_MESSAGE_DETAILS+=$'\n' From e11562ce9868fd9458ff9ea35e330455853d103d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 20 Nov 2023 15:07:12 +0000 Subject: [PATCH 35/40] Automated command ran: fantomas Co-authored-by: vzarytovskii <1260985+vzarytovskii@users.noreply.github.com> --- src/Compiler/Facilities/LanguageFeatures.fsi | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Compiler/Facilities/LanguageFeatures.fsi b/src/Compiler/Facilities/LanguageFeatures.fsi index a9b1c35db54..e3d7e7232bc 100644 --- a/src/Compiler/Facilities/LanguageFeatures.fsi +++ b/src/Compiler/Facilities/LanguageFeatures.fsi @@ -111,4 +111,3 @@ type LanguageVersion = static member GetFeatureVersionString: feature: LanguageFeature -> string static member Default: LanguageVersion - From aa58ed9688da5d53db378f132711759b6e873f54 Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Mon, 20 Nov 2023 16:46:36 +0100 Subject: [PATCH 36/40] GH actions pls --- .github/workflows/check_release_notes.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index 3371106300a..4e3a41cb2db 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -44,6 +44,8 @@ jobs: PR_NUMBER=${{ github.event.number }} PR_URL="${FSHARP_REPO_URL}/pull/${PR_NUMBER}" + echo "PR Tags: "${{ github.event.pull_request.labels }}" + OPT_OUT_RELEASE_NOTES=${{ contains(github.event.pull_request.labels.*.name, 'NO_RELEASE_NOTES') }} echo "Opt out of release notes: $OPT_OUT_RELEASE_NOTES" From bb52192db0db85d833a575d1ec117cac295916ad Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Mon, 20 Nov 2023 16:48:23 +0100 Subject: [PATCH 37/40] GH actions pls --- .github/workflows/check_release_notes.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index 4e3a41cb2db..73f92ad374f 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -44,7 +44,7 @@ jobs: PR_NUMBER=${{ github.event.number }} PR_URL="${FSHARP_REPO_URL}/pull/${PR_NUMBER}" - echo "PR Tags: "${{ github.event.pull_request.labels }}" + echo "PR Tags: ${{ toJson(github.event.pull_request.labels) }}" OPT_OUT_RELEASE_NOTES=${{ contains(github.event.pull_request.labels.*.name, 'NO_RELEASE_NOTES') }} From 7287b220e51acd5d33fb3f0065e853b7e42df458 Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Mon, 20 Nov 2023 16:51:29 +0100 Subject: [PATCH 38/40] GH actions pls --- .github/workflows/check_release_notes.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index 73f92ad374f..f14613e00d5 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -105,7 +105,7 @@ jobs: RELEASE_NOTES_NOT_FOUND="" PULL_REQUEST_FOUND=true - gh repo set-default dotnet/fsharp + gh repo set-default _modified_paths=`gh pr view ${PR_NUMBER} --json files --jq '.files.[].path'` From a9c7559d1e1fe4feec7a7c5a164a43a4484d77ba Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Mon, 20 Nov 2023 17:09:08 +0100 Subject: [PATCH 39/40] GH actions pls --- .github/workflows/check_release_notes.yml | 3 ++- azure-pipelines.yml | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index f14613e00d5..345d7542ea6 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -43,6 +43,7 @@ jobs: PR_AUTHOR="${{ github.event.pull_request.user.login }}" PR_NUMBER=${{ github.event.number }} PR_URL="${FSHARP_REPO_URL}/pull/${PR_NUMBER}" + REPO_NAME=${GITHUB_REPOSITORY#$GITHUB_REPOSITORY_OWNER/} echo "PR Tags: ${{ toJson(github.event.pull_request.labels) }}" @@ -105,7 +106,7 @@ jobs: RELEASE_NOTES_NOT_FOUND="" PULL_REQUEST_FOUND=true - gh repo set-default + gh repo set-default ${REPO_NAME} _modified_paths=`gh pr view ${PR_NUMBER} --json files --jq '.files.[].path'` diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 24847668210..d8ee497da76 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -281,7 +281,9 @@ stages: # Check whether package with current version has been published to nuget.org # We will try to restore both FSharp.Core and FCS and if restore is _successful_, package version needs to be bumped. - # NOTE: This CI check should only run on the release branches. + # NOTE: The check now runs on all branches (not just release), + # because we want to catch cases when version is desynched and we didn't update it. + # It is also helping the release notes automation to be up to date with packages versions. - job: Check_Published_Package_Versions # condition: or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), or(startsWith(variables['System.PullRequest.SourceBranch'], 'release/dev'), startsWith(variables['System.PullRequest.TargetBranch'], 'release/dev'))) pool: From c556e3596eebc17c528e2f38a48ebbc0d0446f93 Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Mon, 20 Nov 2023 17:12:55 +0100 Subject: [PATCH 40/40] GH actions pls --- .github/workflows/check_release_notes.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index 345d7542ea6..14b3c85ca51 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -39,11 +39,10 @@ jobs: run: | set -e EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) - FSHARP_REPO_URL="https://github.com/dotnet/fsharp" + FSHARP_REPO_URL="https://github.com/${GITHUB_REPOSITORY}" PR_AUTHOR="${{ github.event.pull_request.user.login }}" PR_NUMBER=${{ github.event.number }} PR_URL="${FSHARP_REPO_URL}/pull/${PR_NUMBER}" - REPO_NAME=${GITHUB_REPOSITORY#$GITHUB_REPOSITORY_OWNER/} echo "PR Tags: ${{ toJson(github.event.pull_request.labels) }}" @@ -106,7 +105,7 @@ jobs: RELEASE_NOTES_NOT_FOUND="" PULL_REQUEST_FOUND=true - gh repo set-default ${REPO_NAME} + gh repo set-default ${GITHUB_REPOSITORY} _modified_paths=`gh pr view ${PR_NUMBER} --json files --jq '.files.[].path'`