misc: Check for Change-Id in GitHub Actions

This adds a check to our continous integration tests that ensures
that every single commit in a pull request has a Change-Id, and
instructs you to add one if that check fails.  This ensures all
commits on GitHub are still compatible with Gerrit.

Change-Id: I3fd753da5ab3ca6d6334a8e0eb574433aa1ca589
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/72118
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Bobby Bruce <bbruce@ucdavis.edu>
Reviewed-by: Richard Cooper <richard.cooper@arm.com>
Reviewed-by: Bobby Bruce <bbruce@ucdavis.edu>
This commit is contained in:
Melissa Jost
2023-07-06 16:16:12 -07:00
committed by Bobby Bruce
parent b271367a35
commit e03395b386

View File

@@ -16,10 +16,33 @@ jobs:
- uses: actions/setup-python@v3
- uses: pre-commit/action@v3.0.0
# ensures we have a change-id in every commit, needed for gerrit
check-for-change-id:
# runs on github hosted runner
runs-on: ubuntu-latest
container: gcr.io/gem5-test/ubuntu-22.04_all-dependencies:latest
steps:
- uses: actions/github-script@v6
env:
token: "Change-Id"
pattern: ".*"
with:
script: |
const commits = ${{ toJSON(github.event.commits) }}
for (const commit of commits) {
const id = "Change-Id: "
const message = commit.message;
if (!message.includes(id)) {
core.setFailed('One or more of the commits in this pull request is missing a Change-ID, which we require for any changes made to gem5. ' +
'To automatically insert one, run the following:\n f=`git rev-parse --git-dir`/hooks/commit-msg ; mkdir -p $(dirname $f) ; ' +
'curl -Lo $f https://gerrit-review.googlesource.com/tools/hooks/commit-msg ; chmod +x $f\n Then amend the commit with git commit --amend --no-edit, and update your pull request.')
}
}
build-gem5:
runs-on: [self-hosted, linux, x64, build]
container: gcr.io/gem5-test/ubuntu-22.04_all-dependencies:latest
needs: pre-commit # only runs if pre-commit passes
needs: [pre-commit, check-for-change-id] # only runs if pre-commit and change-id passes
outputs:
artifactname: ${{ steps.name.outputs.test }}
steps:
@@ -39,7 +62,7 @@ jobs:
unittests-all-opt:
runs-on: [self-hosted, linux, x64, run]
container: gcr.io/gem5-test/ubuntu-22.04_all-dependencies:latest
needs: pre-commit # only runs if pre-commit passes
needs: [pre-commit, check-for-change-id] # only runs if pre-commit and change-id passes
timeout-minutes: 60
steps:
- uses: actions/checkout@v3
@@ -51,7 +74,7 @@ jobs:
testlib-quick:
runs-on: [self-hosted, linux, x64, run]
container: gcr.io/gem5-test/ubuntu-22.04_all-dependencies:latest
needs: [pre-commit, build-gem5]
needs: [pre-commit, check-for-change-id, build-gem5]
timeout-minutes: 360 # 6 hours
steps:
- uses: actions/checkout@v3