From bd99422297cb700a446dc8a2baad99ed9aa021f6 Mon Sep 17 00:00:00 2001 From: Peixin Date: Thu, 5 Sep 2024 13:00:21 +0800 Subject: [PATCH] Update signoff usage (#49) * Update signoff usage Signed-off-by: Peixin Li * Update signoff usage Signed-off-by: Peixin Li --------- Signed-off-by: Peixin Li --- .github/workflows/signoff-check.yml | 18 +++-- .github/workflows/signoff-check/Dockerfile | 22 ------ .github/workflows/signoff-check/action.yml | 19 ----- .github/workflows/signoff-check/signoff-check | 71 ------------------- 4 files changed, 8 insertions(+), 122 deletions(-) delete mode 100644 .github/workflows/signoff-check/Dockerfile delete mode 100644 .github/workflows/signoff-check/action.yml delete mode 100644 .github/workflows/signoff-check/signoff-check diff --git a/.github/workflows/signoff-check.yml b/.github/workflows/signoff-check.yml index 9cb5b13..91760b4 100644 --- a/.github/workflows/signoff-check.yml +++ b/.github/workflows/signoff-check.yml @@ -1,4 +1,4 @@ -# Copyright (c) 2022, NVIDIA CORPORATION. +# Copyright (c) 2022-2024, NVIDIA CORPORATION. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -23,12 +23,10 @@ jobs: signoff-check: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - - name: sigoff-check job - uses: ./.github/workflows/signoff-check - env: - OWNER: NVIDIA - REPO_NAME: spark-rapids-container - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - PULL_NUMBER: ${{ github.event.number }} \ No newline at end of file + - name: signoff + uses: NVIDIA/spark-rapids-common/signoff-check@main + with: + owner: ${{ github.repository_owner }} + repo: spark-rapids-container + pull_number: ${{ github.event.number }} + token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/signoff-check/Dockerfile b/.github/workflows/signoff-check/Dockerfile deleted file mode 100644 index 6d91c6c..0000000 --- a/.github/workflows/signoff-check/Dockerfile +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright (c) 2022, NVIDIA CORPORATION. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -FROM python:3.8-slim-buster - -WORKDIR / -COPY signoff-check . -RUN pip install PyGithub && chmod +x /signoff-check - -# require envs: OWNER,REPO_NAME,GITHUB_TOKEN,PULL_NUMBER -ENTRYPOINT ["/signoff-check"] diff --git a/.github/workflows/signoff-check/action.yml b/.github/workflows/signoff-check/action.yml deleted file mode 100644 index 8b608f8..0000000 --- a/.github/workflows/signoff-check/action.yml +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright (c) 2022, NVIDIA CORPORATION. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: 'signoff check action' -description: 'check if PR got signed off' -runs: - using: 'docker' - image: 'Dockerfile' diff --git a/.github/workflows/signoff-check/signoff-check b/.github/workflows/signoff-check/signoff-check deleted file mode 100644 index e1b451e..0000000 --- a/.github/workflows/signoff-check/signoff-check +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/env python - -# Copyright (c) 2022, NVIDIA CORPORATION. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""A signoff check - -The tool checks if any commit got signoff in a pull request. - -NOTE: this script is for github actions only, you should not use it anywhere else. -""" -import os -import re -import sys -from argparse import ArgumentParser - -from github import Github - -SIGNOFF_REGEX = re.compile('Signed-off-by:') - - -def signoff(token: str, owner: str, repo_name: str, pull_number: int): - gh = Github(token, per_page=100, user_agent='signoff-check', verify=True) - pr = gh.get_repo(f"{owner}/{repo_name}").get_pull(pull_number) - for c in pr.get_commits(): - if SIGNOFF_REGEX.search(c.commit.message): - print('Found signoff.\n') - print(f"Commit sha:\n{c.commit.sha}") - print(f"Commit message:\n{c.commit.message}") - return True - return False - - -def main(token: str, owner: str, repo_name: str, pull_number: int): - try: - if not signoff(token, owner, repo_name, pull_number): - raise Exception('No commits w/ signoff') - except Exception as e: # pylint: disable=broad-except - print(e) - sys.exit(1) - - -if __name__ == '__main__': - parser = ArgumentParser(description="signoff check") - parser.add_argument("--owner", help="repo owner", default='') - parser.add_argument("--repo_name", help="repo name", default='') - parser.add_argument("--token", help="github token, will use GITHUB_TOKEN if empty", default='') - parser.add_argument("--pull_number", help="pull request number", type=int) - args = parser.parse_args() - - GITHUB_TOKEN = args.token if args.token else os.environ.get('GITHUB_TOKEN') - assert GITHUB_TOKEN, 'env GITHUB_TOKEN should not be empty' - OWNER = args.owner if args.owner else os.environ.get('OWNER') - assert OWNER, 'env OWNER should not be empty' - REPO_NAME = args.repo_name if args.repo_name else os.environ.get('REPO_NAME') - assert REPO_NAME, 'env REPO_NAME should not be empty' - PULL_NUMBER = args.pull_number if args.pull_number else int(os.environ.get('PULL_NUMBER')) - assert PULL_NUMBER, 'env PULL_NUMBER should not be empty' - - main(token=GITHUB_TOKEN, owner=OWNER, repo_name=REPO_NAME, pull_number=PULL_NUMBER)