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:
committed by
Bobby Bruce
parent
b271367a35
commit
e03395b386
29
.github/workflows/ci-tests.yaml
vendored
29
.github/workflows/ci-tests.yaml
vendored
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user