From 01f9c70545b1c69e4d1e3c2552fc28c57afa6ca0 Mon Sep 17 00:00:00 2001 From: Simon Michael Date: Thu, 8 Jul 2021 21:35:14 -1000 Subject: [PATCH] ci: run commitlint to check commits (#1602) As first step in our main "check" workflows (push, linux, mac, windows), check all the commit messages with commitlint. These workflows can be triggered in various ways: pull requests, pushes, manually, or scheduled. For (each push to) a pull request, all commits currently in the PR branch are checked. For a regular push, all the pushed commits are checked, usually. Subcases: push to master, push to other branch, force push; I think at least the first two work, I don't care to spend more time on it. For a manual run, it seemed to check the same commits as a push (which push ? Not sure how this works). For a scheduled run - we'll see. --- .github/workflows/linux.yml | 22 ++++++++++++++++++++++ .github/workflows/mac.yml | 9 +++++++++ .github/workflows/push.yml | 25 ++++++++++++++++++++++++- .github/workflows/windows.yml | 9 +++++++++ 4 files changed, 64 insertions(+), 1 deletion(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 063d0a054..bffd5f4f4 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -87,6 +87,28 @@ jobs: with: fetch-depth: 0 + # - name: Print debug output + # env: + # GITHUB_CONTEXT: ${{ toJson(github) }} + # run: | + # echo + + # echo "$GITHUB_SHA" + # echo "$GITHUB_REF" + # echo "$GITHUB_HEAD_REF" + # echo "$GITHUB_BASE_REF" + # git log "$GITHUB_BASE_REF".. + # bin/commitlint "$GITHUB_BASE_REF".. + + - name: Check commit messages + env: + BEFORE: ${{ github.event.before }} + # for a PR this will be: origin/master..origin/$GITHUB_HEAD_REF + # for a push it will be: $BEFORE.. + # for a force push, BEFORE is the previous HEAD, and on github (not locally) this is an "invalid revision range" + run: | + bin/commitlint ${BEFORE:-origin/master}..${GITHUB_HEAD_REF:+origin/$GITHUB_HEAD_REF} + # things to be cached/restored: - name: Cache stack global package db diff --git a/.github/workflows/mac.yml b/.github/workflows/mac.yml index 29f254535..bb491ee96 100644 --- a/.github/workflows/mac.yml +++ b/.github/workflows/mac.yml @@ -57,6 +57,15 @@ jobs: with: fetch-depth: 0 + - name: Check commit messages + env: + BEFORE: ${{ github.event.before }} + # for a PR this will be: origin/master..origin/$GITHUB_HEAD_REF + # for a push it will be: $BEFORE.. + # for a force push, BEFORE is the previous HEAD, and on github (not locally) this is an "invalid revision range" + run: | + bin/commitlint ${BEFORE:-origin/master}..${GITHUB_HEAD_REF:+origin/$GITHUB_HEAD_REF} + # things to be cached/restored: - name: Cache stack global package db diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 50802f664..40c42029d 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -1,4 +1,5 @@ -# Runs on notable pushes to master. +# Runs on (after) notable pushes to master. +# Failure does not block the push. # Builds incrementally and runs functional tests on linux, # using the latest supported GHC version. @@ -50,6 +51,28 @@ jobs: with: fetch-depth: 0 + # - name: Print debug output + # env: + # GITHUB_CONTEXT: ${{ toJson(github) }} + # run: | + # echo + + # echo "$GITHUB_SHA" + # echo "$GITHUB_REF" + # echo "$GITHUB_HEAD_REF" + # echo "$GITHUB_BASE_REF" + # git log "$GITHUB_BASE_REF".. + # bin/commitlint "$GITHUB_BASE_REF".. + + - name: Check commit messages + env: + BEFORE: ${{ github.event.before }} + # for a PR this will be: master..origin/$GITHUB_HEAD_REF + # for a push it will be: $BEFORE.. + # for a force push, BEFORE is the previous HEAD, and on github (not locally) this is an "invalid revision range" + run: | + bin/commitlint ${BEFORE:-origin/master}..${GITHUB_HEAD_REF:+origin/$GITHUB_HEAD_REF} + # things to be cached/restored: - name: Cache stack global package db diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index fdbe7c278..ff4ecf405 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -47,6 +47,15 @@ jobs: with: fetch-depth: 0 + - name: Check commit messages + env: + BEFORE: ${{ github.event.before }} + # for a PR this will be: origin/master..origin/$GITHUB_HEAD_REF + # for a push it will be: $BEFORE.. + # for a force push, BEFORE is the previous HEAD, and on github (not locally) this is an "invalid revision range" + run: | + bin/commitlint ${BEFORE:-origin/master}..${GITHUB_HEAD_REF:+origin/$GITHUB_HEAD_REF} + # things to be cached/restored: - name: Cache stack global package db