diff --git a/.github/workflows/commit-checker.yaml b/.github/workflows/commit-checker.yaml new file mode 100644 index 000000000000..a83ee3b0e6f9 --- /dev/null +++ b/.github/workflows/commit-checker.yaml @@ -0,0 +1,36 @@ +name: Unit Tests +on: + pull_request: + types: + - opened + - reopened + - closed + - synchronize + workflow_dispatch: +env: + RESOURCES_DIR: ${{ github.workspace }}/.github/resources +jobs: + commit_checker: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Get Commits + id: get-commits + run: | + master_commit=$(cat .git/refs/remotes/origin/master) + echo "master_commit_hash=$master_commit" >> $GITHUB_OUTPUT + last_commit=$(cat .git/refs/remotes/pull/36/merge) + echo "last_commit_hash=$last_commit" >> $GITHUB_OUTPUT + - name: Run Commit Checker + continue-on-error: true + run: | + echo "::group::Commit Checker results" > /tmp/body.txt + echo "::warning ::==== These are the results of the commit checker scans ====" > /tmp/body.txt + echo "::warning ::==== If these are not commits from upstream kfp, then ====" > /tmp/body.txt + echo "::warning ::==== please ensure you adhere to the commit checker formatting ====" > /tmp/body.txt + podman run -q -v ${{ github.workspace }}:/src/app-root quay.io/rmartine/commitchecker:latest --start ${{ steps.get-commits.outputs.master_commit_hash }} --end ${{ steps.get-commits.outputs.last_commit_hash }} > /tmp/body.txt + echo "::endgroup::" > /tmp/body.txt + + gh pr comment ${{ github.event.pull_request.number }} --body-file diff --git a/tools/commit_checker/Dockerfile b/tools/commit_checker/Dockerfile new file mode 100644 index 000000000000..a92a0808d363 --- /dev/null +++ b/tools/commit_checker/Dockerfile @@ -0,0 +1,28 @@ +FROM registry.access.redhat.com/ubi8/go-toolset:1.20 as builder + +WORKDIR /tmp +RUN git clone https://github.com/openshift/build-machinery-go.git && \ + cd /tmp/build-machinery-go/commitchecker && \ + go build + +FROM registry.access.redhat.com/ubi8/ubi-minimal:8.9 + +WORKDIR /bin + +COPY --from=builder /tmp/build-machinery-go/commitchecker/commitchecker /bin/commitchecker +RUN microdnf install git && \ + chmod +x /bin/commitchecker && \ + mkdir -p /src/app-root + +WORKDIR /src/app-root +ENTRYPOINT ["commitchecker"] + +VOLUME ["/src/app-root"] + +LABEL name="Commit Checker tool" \ + summary="commitchecker validates a range of commits in a git repository and ensures they meet specific requirements: \ + 1. The author's email address does not start with "root@". \ + 2. The message starts with one of: \ + i. UPSTREAM: : description \ + ii. UPSTREAM: revert: \ + This is useful for repositories that are downstream forks of upstream repositories." \ No newline at end of file