From 8a7369829f4abfc7f755033e21a75b0df965fe90 Mon Sep 17 00:00:00 2001 From: Marco Donadoni Date: Wed, 24 Jul 2024 15:13:03 +0200 Subject: [PATCH 1/2] ci(actions): upgrade to Ubuntu 24.04 (#30) Closes reanahub/reana#808 --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e94585b..ae35907 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,7 +10,7 @@ on: [push, pull_request] jobs: lint-commitlint: - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@v4 @@ -36,7 +36,7 @@ jobs: ./run-tests.sh --check-commitlint ${{ github.event.pull_request.head.sha }}~${{ github.event.pull_request.commits }} ${{ github.event.pull_request.head.sha }} ${{ github.event.pull_request.number }} lint-shellcheck: - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@v4 @@ -47,7 +47,7 @@ jobs: ./run-tests.sh --check-shellcheck lint-dockerfile: - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@v4 @@ -56,7 +56,7 @@ jobs: run: docker run -i --rm docker.io/hadolint/hadolint:v2.12.0 < Dockerfile build-docker: - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@v4 From 33f61a43cd137830eb540436db60432c9dc9ea5b Mon Sep 17 00:00:00 2001 From: Marco Donadoni Date: Tue, 6 Aug 2024 15:34:13 +0200 Subject: [PATCH 2/2] ci(commitlint): improve checking of merge commits (#30) --- .commitlintrc.yaml | 2 +- .github/workflows/ci.yml | 2 +- run-tests.sh | 27 ++++++++++++++++++++------- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/.commitlintrc.yaml b/.commitlintrc.yaml index d0b3278..67b733c 100644 --- a/.commitlintrc.yaml +++ b/.commitlintrc.yaml @@ -1,6 +1,6 @@ rules: body-case: [2, always, sentence-case] - body-full-stop: [2, always] + body-full-stop: [1, always] body-leading-blank: [2, always] body-max-line-length: [2, always, 72] footer-leading-blank: [2, always] diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ae35907..7f42d05 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,7 +33,7 @@ jobs: - name: Check commit message compliance of the pull request if: github.event_name == 'pull_request' run: | - ./run-tests.sh --check-commitlint ${{ github.event.pull_request.head.sha }}~${{ github.event.pull_request.commits }} ${{ github.event.pull_request.head.sha }} ${{ github.event.pull_request.number }} + ./run-tests.sh --check-commitlint ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} ${{ github.event.pull_request.number }} lint-shellcheck: runs-on: ubuntu-24.04 diff --git a/run-tests.sh b/run-tests.sh index 72295ea..e545128 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -16,15 +16,28 @@ check_commitlint () { npx commitlint --from="$from" --to="$to" found=0 while IFS= read -r line; do - if echo "$line" | grep -qP "\(\#$pr\)$"; then - true - elif echo "$line" | grep -qP "^chore\(.*\): release"; then - true - else - echo "✖ Headline does not end by '(#$pr)' PR number: $line" + commit_hash=$(echo "$line" | cut -d ' ' -f 1) + commit_title=$(echo "$line" | cut -d ' ' -f 2-) + commit_number_of_parents=$(git rev-list --parents "$commit_hash" -n1 | awk '{print NF-1}') + # (i) skip checking release commits generated by Release Please + if [ "$commit_number_of_parents" -le 1 ] && echo "$commit_title" | grep -qP "^chore\(.*\): release"; then + continue + fi + # (ii) check presence of PR number + if ! echo "$commit_title" | grep -qP "\(\#$pr\)$"; then + echo "✖ Headline does not end by '(#$pr)' PR number: $commit_title" found=1 fi - done < <(git log "$from..$to" --format="%s") + # (iii) check absence of merge commits in feature branches + if [ "$commit_number_of_parents" -gt 1 ]; then + if echo "$commit_title" | grep -qP "^chore\(.*\): merge "; then + break # skip checking maint-to-master merge commits + else + echo "✖ Merge commits are not allowed in feature branches: $commit_title" + found=1 + fi + fi + done < <(git log "$from..$to" --format="%H %s") if [ $found -gt 0 ]; then exit 1 fi