From 44a6ffc78fe1438d8e2492c2b5bdf5a3478c506f Mon Sep 17 00:00:00 2001 From: Fredrik Wrede Date: Tue, 11 Jun 2024 11:11:24 +0000 Subject: [PATCH 01/10] workflows and configs --- .github/labeler.yml | 13 +++++++ .github/release-drafter.yml | 36 +++++++++++++++++ .github/workflows/labeler.yaml | 18 +++++++++ .github/workflows/pr_size_labeler.yaml | 53 ++++++++++++++++++++++++++ .github/workflows/release-drafter.yaml | 41 ++++++++++++++++++++ 5 files changed, 161 insertions(+) create mode 100644 .github/labeler.yml create mode 100644 .github/release-drafter.yml create mode 100644 .github/workflows/labeler.yaml create mode 100644 .github/workflows/pr_size_labeler.yaml create mode 100644 .github/workflows/release-drafter.yaml diff --git a/.github/labeler.yml b/.github/labeler.yml new file mode 100644 index 000000000..19293b47a --- /dev/null +++ b/.github/labeler.yml @@ -0,0 +1,13 @@ +# Label pull requests based on file paths, titles, or branch names +docs: + - 'docs/**' + - title: /^Docs\// + - head: /docs\// + +feature: + - title: /^Feature\// + - head: /feature\// + +fix: + - title: /^(Bug|Bugfix|Fix)\// + - head: /(bug|bugfix|fix)\// \ No newline at end of file diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml new file mode 100644 index 000000000..eb7ee2ab8 --- /dev/null +++ b/.github/release-drafter.yml @@ -0,0 +1,36 @@ +name-template: ' Release v$RESOLVED_VERSION' +tag-template: 'v$RESOLVED_VERSION' +categories: + - title: 'Features' + labels: + - 'feature' + - 'enhancement' + - title: 'Fixes' + labels: + - 'fix' + - 'bugfix' + - 'bug' + - title: 'Other' + label: + - 'chore' + - 'refactor' +change-template: '- $TITLE @$AUTHOR (#$NUMBER)' +change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks. +exclude-labels: + - 'dependencies' + - 'docs' +version-resolver: + major: + labels: + - 'major' + minor: + labels: + - 'minor' + patch: + labels: + - 'patch' + default: patch +template: | + ## What’s Changed + + $CHANGES \ No newline at end of file diff --git a/.github/workflows/labeler.yaml b/.github/workflows/labeler.yaml new file mode 100644 index 000000000..7a1d2e04c --- /dev/null +++ b/.github/workflows/labeler.yaml @@ -0,0 +1,18 @@ +name: "Pull Request Labeler" + +on: + pull_request: + types: [opened, synchronize, reopened] + +jobs: + label: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Labeler + uses: actions/labeler@v3 + with: + repo-token: "${{ secrets.GITHUB_TOKEN }}" + configuration-path: ".github/labeler.yml" \ No newline at end of file diff --git a/.github/workflows/pr_size_labeler.yaml b/.github/workflows/pr_size_labeler.yaml new file mode 100644 index 000000000..e3570d3af --- /dev/null +++ b/.github/workflows/pr_size_labeler.yaml @@ -0,0 +1,53 @@ +name: "PR Size Labeler" + +on: + pull_request: + types: [opened, synchronize, reopened] + +jobs: + label: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Get PR Size + id: get_pr_size + run: | + CHANGED_FILES=$(jq '.pull_request.changed_files' $GITHUB_EVENT_PATH) + ADDITIONS=$(jq '.pull_request.additions' $GITHUB_EVENT_PATH) + DELETIONS=$(jq '.pull_request.deletions' $GITHUB_EVENT_PATH) + echo "CHANGED_FILES=$CHANGED_FILES" >> $GITHUB_ENV + echo "ADDITIONS=$ADDITIONS" >> $GITHUB_ENV + echo "DELETIONS=$DELETIONS" >> $GITHUB_ENV + + - name: Apply Labels Based on Size + if: ${{ github.event.pull_request.changed_files != '' }} + run: | + PATCH_THRESHOLD=10 + MINOR_THRESHOLD=100 + MAJOR_THRESHOLD=500 + + TOTAL_CHANGES=$(($ADDITIONS + $DELETIONS)) + + echo "Total changes: $TOTAL_CHANGES" + + if [ "$TOTAL_CHANGES" -le "$PATCH_THRESHOLD" ]; then + LABEL="patch" + elif [ "$TOTAL_CHANGES" -le "$MINOR_THRESHOLD" ]; then + LABEL="minor" + else + LABEL="major" + fi + + echo "Applying label: $LABEL" + + curl -s -X POST -H "Authorization: token $GITHUB_TOKEN" \ + -H "Accept: application/vnd.github.v3+json" \ + https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.pull_request.number }}/labels \ + -d "{\"labels\":[\"$LABEL\"]}" + + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + ADDITIONS: ${{ env.ADDITIONS }} + DELETIONS: ${{ env.DELETIONS }} \ No newline at end of file diff --git a/.github/workflows/release-drafter.yaml b/.github/workflows/release-drafter.yaml new file mode 100644 index 000000000..5f1474644 --- /dev/null +++ b/.github/workflows/release-drafter.yaml @@ -0,0 +1,41 @@ +name: Release Drafter + +on: + push: + # branches to consider in the event; optional, defaults to all + branches: + - master + # pull_request event is required only for autolabeler + pull_request: + # Only following types are handled by the action, but one can default to all as well + types: [opened, reopened, synchronize] + # pull_request_target event is required for autolabeler to support PRs from forks + # pull_request_target: + # types: [opened, reopened, synchronize] + +permissions: + contents: read + +jobs: + update_release_draft: + permissions: + # write permission is required to create a github release + contents: write + # write permission is required for autolabeler + # otherwise, read permission is required at least + pull-requests: write + runs-on: ubuntu-latest + steps: + # (Optional) GitHub Enterprise requires GHE_HOST variable set + #- name: Set GHE_HOST + # run: | + # echo "GHE_HOST=${GITHUB_SERVER_URL##https:\/\/}" >> $GITHUB_ENV + + # Drafts your next Release notes as Pull Requests are merged into "master" + - uses: release-drafter/release-drafter@v6 + # (Optional) specify config name to use, relative to .github/. Default: release-drafter.yml + # with: + # config-name: my-config.yml + # disable-autolabeler: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From 9758188719e5344c98698b95b82a29716df02a43 Mon Sep 17 00:00:00 2001 From: Fredrik Wrede Date: Tue, 11 Jun 2024 11:22:29 +0000 Subject: [PATCH 02/10] fix --- .github/workflows/pr_size_labeler.yaml | 2 +- .github/workflows/{release-drafter.yaml => release-drafter.yml} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename .github/workflows/{release-drafter.yaml => release-drafter.yml} (100%) diff --git a/.github/workflows/pr_size_labeler.yaml b/.github/workflows/pr_size_labeler.yaml index e3570d3af..51a282ac4 100644 --- a/.github/workflows/pr_size_labeler.yaml +++ b/.github/workflows/pr_size_labeler.yaml @@ -25,7 +25,7 @@ jobs: if: ${{ github.event.pull_request.changed_files != '' }} run: | PATCH_THRESHOLD=10 - MINOR_THRESHOLD=100 + MINOR_THRESHOLD=200 MAJOR_THRESHOLD=500 TOTAL_CHANGES=$(($ADDITIONS + $DELETIONS)) diff --git a/.github/workflows/release-drafter.yaml b/.github/workflows/release-drafter.yml similarity index 100% rename from .github/workflows/release-drafter.yaml rename to .github/workflows/release-drafter.yml From c16cee2424650547a48e75cce5a442cbd93fb794 Mon Sep 17 00:00:00 2001 From: Fredrik Wrede Date: Tue, 11 Jun 2024 11:32:54 +0000 Subject: [PATCH 03/10] change thresholds --- .github/workflows/pr_size_labeler.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pr_size_labeler.yaml b/.github/workflows/pr_size_labeler.yaml index 51a282ac4..fa20e4a37 100644 --- a/.github/workflows/pr_size_labeler.yaml +++ b/.github/workflows/pr_size_labeler.yaml @@ -25,8 +25,8 @@ jobs: if: ${{ github.event.pull_request.changed_files != '' }} run: | PATCH_THRESHOLD=10 - MINOR_THRESHOLD=200 - MAJOR_THRESHOLD=500 + MINOR_THRESHOLD=500 + MAJOR_THRESHOLD=1000 TOTAL_CHANGES=$(($ADDITIONS + $DELETIONS)) @@ -37,7 +37,7 @@ jobs: elif [ "$TOTAL_CHANGES" -le "$MINOR_THRESHOLD" ]; then LABEL="minor" else - LABEL="major" + LABEL="minor" fi echo "Applying label: $LABEL" From b86fa3508da19b59b3ae7ff324c049aabab5d071 Mon Sep 17 00:00:00 2001 From: Fredrik Wrede Date: Tue, 11 Jun 2024 11:41:21 +0000 Subject: [PATCH 04/10] fix labels --- .github/labeler.yml | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/.github/labeler.yml b/.github/labeler.yml index 19293b47a..ac52120d6 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -1,13 +1,10 @@ # Label pull requests based on file paths, titles, or branch names docs: - - 'docs/**' - - title: /^Docs\// - - head: /docs\// +- changed-files: + - any-glob-to-any-file: ['docs/**','**/*.md'] feature: - - title: /^Feature\// - - head: /feature\// + - head-branch: ['^feature', 'feature'] fix: - - title: /^(Bug|Bugfix|Fix)\// - - head: /(bug|bugfix|fix)\// \ No newline at end of file + - head-branch: ['^bug', 'bug', '^fix', 'fix'] \ No newline at end of file From ea7ae193b281277ae0855563371ea80e9b5742a6 Mon Sep 17 00:00:00 2001 From: Fredrik Wrede Date: Tue, 11 Jun 2024 11:45:41 +0000 Subject: [PATCH 05/10] fix --- .github/labeler.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/labeler.yml b/.github/labeler.yml index ac52120d6..fdea24b8e 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -3,8 +3,12 @@ docs: - changed-files: - any-glob-to-any-file: ['docs/**','**/*.md'] +github: +- changed-files: + - any-glob-to-any-file: ['.github/**'] + feature: - - head-branch: ['^feature', 'feature'] +- head-branch: ['^feature', 'feature'] fix: - - head-branch: ['^bug', 'bug', '^fix', 'fix'] \ No newline at end of file +- head-branch: ['^bug', 'bug', '^fix', 'fix'] \ No newline at end of file From e08d487d709685722dd13ad07fbdf739f8288df3 Mon Sep 17 00:00:00 2001 From: Fredrik Wrede Date: Tue, 11 Jun 2024 11:47:26 +0000 Subject: [PATCH 06/10] add github label to exclude --- .github/release-drafter.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml index eb7ee2ab8..66eedb62a 100644 --- a/.github/release-drafter.yml +++ b/.github/release-drafter.yml @@ -19,6 +19,7 @@ change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add exclude-labels: - 'dependencies' - 'docs' + - 'github' version-resolver: major: labels: From 3186cf4b71b38f92026e1b277ea3f8509ab19024 Mon Sep 17 00:00:00 2001 From: Fredrik Wrede Date: Tue, 11 Jun 2024 11:53:21 +0000 Subject: [PATCH 07/10] fix --- .github/workflows/labeler.yaml | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/.github/workflows/labeler.yaml b/.github/workflows/labeler.yaml index 7a1d2e04c..68b848b8c 100644 --- a/.github/workflows/labeler.yaml +++ b/.github/workflows/labeler.yaml @@ -1,18 +1,13 @@ name: "Pull Request Labeler" - on: - pull_request: - types: [opened, synchronize, reopened] +- pull_request_target jobs: - label: + labeler: + permissions: + contents: read + pull-requests: write runs-on: ubuntu-latest steps: - - name: Checkout repository - uses: actions/checkout@v3 - - - name: Labeler - uses: actions/labeler@v3 - with: - repo-token: "${{ secrets.GITHUB_TOKEN }}" - configuration-path: ".github/labeler.yml" \ No newline at end of file + - uses: actions/labeler@v5 + \ No newline at end of file From caa6f7827058603d93bc611af15c53146323b185 Mon Sep 17 00:00:00 2001 From: Fredrik Wrede Date: Tue, 11 Jun 2024 11:57:24 +0000 Subject: [PATCH 08/10] change event --- .github/workflows/labeler.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/labeler.yaml b/.github/workflows/labeler.yaml index 68b848b8c..ba5965967 100644 --- a/.github/workflows/labeler.yaml +++ b/.github/workflows/labeler.yaml @@ -1,6 +1,7 @@ name: "Pull Request Labeler" on: -- pull_request_target + pull_request: + types: [opened, synchronize, reopened] jobs: labeler: From ab25bf2dbf79897713c5cbaaf8546edd8aaa8c52 Mon Sep 17 00:00:00 2001 From: Fredrik Wrede Date: Tue, 11 Jun 2024 12:04:50 +0000 Subject: [PATCH 09/10] final --- .github/workflows/branch-name-check.yaml | 2 +- .github/workflows/pr_size_labeler.yaml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/branch-name-check.yaml b/.github/workflows/branch-name-check.yaml index 23abed21a..67ff4d04c 100644 --- a/.github/workflows/branch-name-check.yaml +++ b/.github/workflows/branch-name-check.yaml @@ -7,7 +7,7 @@ on: - master env: - BRANCH_REGEX: '^((feature|hotfix|bugfix|bug|docs|refactor)\/.+)|(release\/v((([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?))$' + BRANCH_REGEX: '^((feature|github|hotfix|bugfix|fix|bug|docs|refactor)\/.+)|(release\/v((([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?))$' jobs: branch-name-check: diff --git a/.github/workflows/pr_size_labeler.yaml b/.github/workflows/pr_size_labeler.yaml index fa20e4a37..f614e7e23 100644 --- a/.github/workflows/pr_size_labeler.yaml +++ b/.github/workflows/pr_size_labeler.yaml @@ -21,6 +21,7 @@ jobs: echo "ADDITIONS=$ADDITIONS" >> $GITHUB_ENV echo "DELETIONS=$DELETIONS" >> $GITHUB_ENV + # OBS that we are cuurently not on a stable version, thus major is disabled for now - name: Apply Labels Based on Size if: ${{ github.event.pull_request.changed_files != '' }} run: | From eaf5eb3ab62bf90f49a312f96d465452205d017b Mon Sep 17 00:00:00 2001 From: Fredrik Wrede Date: Tue, 11 Jun 2024 12:08:11 +0000 Subject: [PATCH 10/10] add paths-ignore --- .github/workflows/integration-tests.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/integration-tests.yaml b/.github/workflows/integration-tests.yaml index 19aa20593..ed354a78b 100644 --- a/.github/workflows/integration-tests.yaml +++ b/.github/workflows/integration-tests.yaml @@ -2,11 +2,17 @@ name: "integration tests" on: push: + paths-ignore: + - 'docs/**' + - '.github/**' branches: - master - develop - "release/**" pull_request: + paths-ignore: + - 'docs/**' + - '.github/**' branches: - "**"