From 2f24a9f2e11370076797c2ae1785c5600da7ee51 Mon Sep 17 00:00:00 2001 From: DavidSpek Date: Wed, 20 Jan 2021 19:34:21 +0100 Subject: [PATCH 1/3] add dependabot config script --- .github/base_dependabot.yml.tmp | 13 +++++++++++++ .github/dependabot.yml | 33 +++++++++++++++++++++++++++++++++ create_dependabot.sh | 9 +++++++++ 3 files changed, 55 insertions(+) create mode 100644 .github/base_dependabot.yml.tmp create mode 100644 .github/dependabot.yml create mode 100755 create_dependabot.sh diff --git a/.github/base_dependabot.yml.tmp b/.github/base_dependabot.yml.tmp new file mode 100644 index 000000000..6764d3e5e --- /dev/null +++ b/.github/base_dependabot.yml.tmp @@ -0,0 +1,13 @@ +version: 2 +updates: + - package-ecosystem: "gomod" + directory: "/" + schedule: + interval: "daily" + # Allow up to 10 open pull requests for pip dependencies + open-pull-requests-limit: 10 + - package-ecosystem: docker + directory: "/" + schedule: + interval: daily + open-pull-requests-limit: 10 diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000..ded97ba52 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,33 @@ +version: 2 +updates: + - package-ecosystem: "gomod" + directory: "/" + schedule: + interval: "daily" + # Allow up to 10 open pull requests for pip dependencies + open-pull-requests-limit: 10 + - package-ecosystem: docker + directory: "/" + schedule: + interval: daily + open-pull-requests-limit: 10 + - package-ecosystem: docker + directory: /kubernetes-artifacts/jobmon + schedule: + interval: daily + open-pull-requests-limit: 10 + - package-ecosystem: docker + directory: /kubernetes-artifacts/tf-operator + schedule: + interval: daily + open-pull-requests-limit: 10 + - package-ecosystem: docker + directory: /samples/docker/serve-custom-sample + schedule: + interval: daily + open-pull-requests-limit: 10 + - package-ecosystem: docker + directory: /vendor/golang.org/x/net/http2 + schedule: + interval: daily + open-pull-requests-limit: 10 diff --git a/create_dependabot.sh b/create_dependabot.sh new file mode 100755 index 000000000..e3b5fb91e --- /dev/null +++ b/create_dependabot.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +rm .github/dependabot.yml +cp .github/base_dependabot.yml.tmp .github/dependabot.yml + +for directory in $(dirname $(find . -type f -name "*ockerfile*") | sort -u | cut -c2-); do + yq eval -i ".updates += {\"package-ecosystem\":\"docker\",\"directory\":\"${directory}\",\"schedule\":{\"interval\":\"daily\"},\"open-pull-requests-limit\":10}" .github/dependabot.yml +done + From 5ff917e84eea6758dbf063e559ef7b237801deb1 Mon Sep 17 00:00:00 2001 From: DavidSpek Date: Fri, 22 Jan 2021 13:40:20 +0100 Subject: [PATCH 2/3] replace with new python script --- .github/base_dependabot.yml.tmp | 13 -- .github/dependabot.yml | 368 +++++++++++++++++++++++++++++--- Makefile | 4 + create_dependabot.sh | 9 - hack/create_dependabot.py | 92 ++++++++ 5 files changed, 432 insertions(+), 54 deletions(-) delete mode 100644 .github/base_dependabot.yml.tmp delete mode 100755 create_dependabot.sh create mode 100644 hack/create_dependabot.py diff --git a/.github/base_dependabot.yml.tmp b/.github/base_dependabot.yml.tmp deleted file mode 100644 index 6764d3e5e..000000000 --- a/.github/base_dependabot.yml.tmp +++ /dev/null @@ -1,13 +0,0 @@ -version: 2 -updates: - - package-ecosystem: "gomod" - directory: "/" - schedule: - interval: "daily" - # Allow up to 10 open pull requests for pip dependencies - open-pull-requests-limit: 10 - - package-ecosystem: docker - directory: "/" - schedule: - interval: daily - open-pull-requests-limit: 10 diff --git a/.github/dependabot.yml b/.github/dependabot.yml index ded97ba52..10e7a6d1c 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,33 +1,337 @@ -version: 2 updates: - - package-ecosystem: "gomod" - directory: "/" - schedule: - interval: "daily" - # Allow up to 10 open pull requests for pip dependencies - open-pull-requests-limit: 10 - - package-ecosystem: docker - directory: "/" - schedule: - interval: daily - open-pull-requests-limit: 10 - - package-ecosystem: docker - directory: /kubernetes-artifacts/jobmon - schedule: - interval: daily - open-pull-requests-limit: 10 - - package-ecosystem: docker - directory: /kubernetes-artifacts/tf-operator - schedule: - interval: daily - open-pull-requests-limit: 10 - - package-ecosystem: docker - directory: /samples/docker/serve-custom-sample - schedule: - interval: daily - open-pull-requests-limit: 10 - - package-ecosystem: docker - directory: /vendor/golang.org/x/net/http2 - schedule: - interval: daily - open-pull-requests-limit: 10 +- assignees: + - cheyang + - wsxiaozhang + - denverdino + directory: . + open-pull-requests-limit: 10 + package-ecosystem: docker + reviewers: + - GarnettWang + - xiaozhouX + - osswangxining + schedule: + interval: daily +- assignees: + - cheyang + - wsxiaozhang + - denverdino + directory: samples/docker/serve-custom-sample + open-pull-requests-limit: 10 + package-ecosystem: docker + reviewers: + - GarnettWang + - xiaozhouX + - osswangxining + schedule: + interval: daily +- assignees: + - cheyang + - wsxiaozhang + - denverdino + directory: vendor/golang.org/x/net/http2 + open-pull-requests-limit: 10 + package-ecosystem: docker + reviewers: + - GarnettWang + - xiaozhouX + - osswangxining + schedule: + interval: daily +- assignees: + - cheyang + - wsxiaozhang + - denverdino + directory: kubernetes-artifacts/tf-operator + open-pull-requests-limit: 10 + package-ecosystem: docker + reviewers: + - GarnettWang + - xiaozhouX + - osswangxining + schedule: + interval: daily +- assignees: + - cheyang + - wsxiaozhang + - denverdino + directory: kubernetes-artifacts/jobmon + open-pull-requests-limit: 10 + package-ecosystem: docker + reviewers: + - GarnettWang + - xiaozhouX + - osswangxining + schedule: + interval: daily +- assignees: + - cheyang + - wsxiaozhang + - denverdino + directory: . + open-pull-requests-limit: 10 + package-ecosystem: gomod + reviewers: + - GarnettWang + - xiaozhouX + - osswangxining + schedule: + interval: daily +- assignees: + - dims + - thockin + - justinsb + - tallclair + - piosz + - brancz + - DirectXMan12 + - lavalamp + directory: vendor/k8s.io/klog + open-pull-requests-limit: 10 + package-ecosystem: gomod + reviewers: + - jayunit100 + - hoegaarden + - andyxning + - neolit123 + - pohly + - yagonobre + - vincepri + - detiber + schedule: + interval: daily +- assignees: + - cheyang + - wsxiaozhang + - denverdino + directory: vendor/google.golang.org/appengine + open-pull-requests-limit: 10 + package-ecosystem: gomod + reviewers: + - GarnettWang + - xiaozhouX + - osswangxining + schedule: + interval: daily +- assignees: + - cheyang + - wsxiaozhang + - denverdino + directory: vendor/github.com/json-iterator/go + open-pull-requests-limit: 10 + package-ecosystem: gomod + reviewers: + - GarnettWang + - xiaozhouX + - osswangxining + schedule: + interval: daily +- assignees: + - cheyang + - wsxiaozhang + - denverdino + directory: vendor/github.com/hashicorp/golang-lru + open-pull-requests-limit: 10 + package-ecosystem: gomod + reviewers: + - GarnettWang + - xiaozhouX + - osswangxining + schedule: + interval: daily +- assignees: + - cheyang + - wsxiaozhang + - denverdino + directory: vendor/github.com/hashicorp/hcl + open-pull-requests-limit: 10 + package-ecosystem: gomod + reviewers: + - GarnettWang + - xiaozhouX + - osswangxining + schedule: + interval: daily +- assignees: + - cheyang + - wsxiaozhang + - denverdino + directory: vendor/github.com/mitchellh/go-homedir + open-pull-requests-limit: 10 + package-ecosystem: gomod + reviewers: + - GarnettWang + - xiaozhouX + - osswangxining + schedule: + interval: daily +- assignees: + - cheyang + - wsxiaozhang + - denverdino + directory: vendor/github.com/mitchellh/mapstructure + open-pull-requests-limit: 10 + package-ecosystem: gomod + reviewers: + - GarnettWang + - xiaozhouX + - osswangxining + schedule: + interval: daily +- assignees: + - cheyang + - wsxiaozhang + - denverdino + directory: vendor/github.com/fsnotify/fsnotify + open-pull-requests-limit: 10 + package-ecosystem: gomod + reviewers: + - GarnettWang + - xiaozhouX + - osswangxining + schedule: + interval: daily +- assignees: + - cheyang + - wsxiaozhang + - denverdino + directory: vendor/github.com/spf13/pflag + open-pull-requests-limit: 10 + package-ecosystem: gomod + reviewers: + - GarnettWang + - xiaozhouX + - osswangxining + schedule: + interval: daily +- assignees: + - cheyang + - wsxiaozhang + - denverdino + directory: vendor/github.com/spf13/viper + open-pull-requests-limit: 10 + package-ecosystem: gomod + reviewers: + - GarnettWang + - xiaozhouX + - osswangxining + schedule: + interval: daily +- assignees: + - cheyang + - wsxiaozhang + - denverdino + directory: vendor/github.com/spf13/afero + open-pull-requests-limit: 10 + package-ecosystem: gomod + reviewers: + - GarnettWang + - xiaozhouX + - osswangxining + schedule: + interval: daily +- assignees: + - cheyang + - wsxiaozhang + - denverdino + directory: vendor/github.com/spf13/cast + open-pull-requests-limit: 10 + package-ecosystem: gomod + reviewers: + - GarnettWang + - xiaozhouX + - osswangxining + schedule: + interval: daily +- assignees: + - cheyang + - wsxiaozhang + - denverdino + directory: vendor/github.com/spf13/jwalterweatherman + open-pull-requests-limit: 10 + package-ecosystem: gomod + reviewers: + - GarnettWang + - xiaozhouX + - osswangxining + schedule: + interval: daily +- assignees: + - cheyang + - wsxiaozhang + - denverdino + directory: vendor/github.com/magiconair/properties + open-pull-requests-limit: 10 + package-ecosystem: gomod + reviewers: + - GarnettWang + - xiaozhouX + - osswangxining + schedule: + interval: daily +- assignees: + - cheyang + - wsxiaozhang + - denverdino + directory: vendor/github.com/google/gofuzz + open-pull-requests-limit: 10 + package-ecosystem: gomod + reviewers: + - GarnettWang + - xiaozhouX + - osswangxining + schedule: + interval: daily +- assignees: + - cheyang + - wsxiaozhang + - denverdino + directory: vendor/github.com/konsorten/go-windows-terminal-sequences + open-pull-requests-limit: 10 + package-ecosystem: gomod + reviewers: + - GarnettWang + - xiaozhouX + - osswangxining + schedule: + interval: daily +- assignees: + - cheyang + - wsxiaozhang + - denverdino + directory: vendor/github.com/sirupsen/logrus + open-pull-requests-limit: 10 + package-ecosystem: gomod + reviewers: + - GarnettWang + - xiaozhouX + - osswangxining + schedule: + interval: daily +- assignees: + - cheyang + - wsxiaozhang + - denverdino + directory: vendor/golang.org/x/oauth2 + open-pull-requests-limit: 10 + package-ecosystem: gomod + reviewers: + - GarnettWang + - xiaozhouX + - osswangxining + schedule: + interval: daily +- assignees: + - cheyang + - wsxiaozhang + - denverdino + directory: vendor/gopkg.in/yaml.v2 + open-pull-requests-limit: 10 + package-ecosystem: gomod + reviewers: + - GarnettWang + - xiaozhouX + - osswangxining + schedule: + interval: daily +version: 2 diff --git a/Makefile b/Makefile index 0e6c6a04a..fdac052cc 100644 --- a/Makefile +++ b/Makefile @@ -119,3 +119,7 @@ build-pkg: docker run -itd --name=arena-pkg arena-build:${VERSION}-${GIT_SHORT_COMMIT}-${OS_ARCH} /bin/bash docker cp arena-pkg:/arena-installer-${VERSION}-${GIT_SHORT_COMMIT}-${OS_ARCH}.tar.gz . docker rm -f arena-pkg + + +build-dependabot: + python3 hack/create_dependabot.py diff --git a/create_dependabot.sh b/create_dependabot.sh deleted file mode 100755 index e3b5fb91e..000000000 --- a/create_dependabot.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -rm .github/dependabot.yml -cp .github/base_dependabot.yml.tmp .github/dependabot.yml - -for directory in $(dirname $(find . -type f -name "*ockerfile*") | sort -u | cut -c2-); do - yq eval -i ".updates += {\"package-ecosystem\":\"docker\",\"directory\":\"${directory}\",\"schedule\":{\"interval\":\"daily\"},\"open-pull-requests-limit\":10}" .github/dependabot.yml -done - diff --git a/hack/create_dependabot.py b/hack/create_dependabot.py new file mode 100644 index 000000000..f4ffa07ba --- /dev/null +++ b/hack/create_dependabot.py @@ -0,0 +1,92 @@ +import yaml +import collections +from pathlib import Path + +repo_path = Path(__file__).parents[1] + +dependabot = {} +dependabot['version'] = 2 +dependabot['updates'] = [] +ignored_folders = ['node_modules', 'dist', '.git', 'deprecated'] + +def get_owners(path): + while not Path(path/'OWNERS').is_file(): + path = path.parent.absolute() + with open(path/'OWNERS') as owner_file: + owners = yaml.load(owner_file) + return owners + +def get_docker_paths(): + dockerfile_list = list(repo_path.glob('**/*ockerfile*')) + docker_clean_list = [] + for dockerfile in dockerfile_list: + if all(x not in str(dockerfile) for x in ignored_folders): + if dockerfile.parents[0] not in docker_clean_list: + docker_clean_list.append(dockerfile.parents[0]) + return docker_clean_list + +def get_npm_paths(): + npm_list = list(repo_path.glob('**/package*.json')) + npm_clean_list = [] + for npm_file in npm_list: + if all(x not in str(npm_file) for x in ignored_folders): + if npm_file.parents[0] not in npm_clean_list: + npm_clean_list.append(npm_file.parents[0]) + return npm_clean_list + +def get_pip_paths(): + pip_list = list(repo_path.glob('**/*requirements.txt')) + pip_clean_list = [] + for pip_file in pip_list: + if all(x not in str(pip_file) for x in ignored_folders): + if pip_file.parents[0] not in pip_clean_list: + pip_clean_list.append(pip_file.parents[0]) + return pip_clean_list + +def get_go_paths(): + go_list = list(repo_path.glob('**/go.*')) + go_clean_list = [] + for go_file in go_list: + if all(x not in str(go_file) for x in ignored_folders): + if go_file.parents[0] not in go_clean_list: + go_clean_list.append(go_file.parents[0]) + return go_clean_list + +def append_updates(ecosystem, directory, assignees, reviewers=None): + config = {} + config['package-ecosystem'] = ecosystem + config['directory'] = directory + config['schedule']= {} + config['schedule']['interval'] = 'daily' + config['open-pull-requests-limit'] = 10 + config['assignees'] = assignees + if reviewers: + config['reviewers'] = reviewers + dependabot['updates'].append(config) + +for docker_path in get_docker_paths(): + string_path = str(docker_path) + assignees = get_owners(docker_path).get('approvers') + reviewers = get_owners(docker_path).get('reviewers') + append_updates('docker', string_path, assignees, reviewers) + +for npm_path in get_npm_paths(): + string_path = str(npm_path) + assignees = get_owners(npm_path).get('approvers') + reviewers = get_owners(npm_path).get('reviewers') + append_updates('npm', string_path, assignees, reviewers) + +for pip_path in get_pip_paths(): + string_path = str(pip_path) + assignees = get_owners(pip_path).get('approvers') + reviewers = get_owners(pip_path).get('reviewers') + append_updates('pip', string_path, assignees, reviewers) + +for go_path in get_go_paths(): + string_path = str(go_path) + assignees = get_owners(go_path).get('approvers') + reviewers = get_owners(go_path).get('reviewers') + append_updates('gomod', string_path, assignees, reviewers) + +with open('.github/dependabot.yml', 'w') as outfile: + yaml.dump(dependabot, outfile, default_flow_style=False) \ No newline at end of file From 293630c78f6346c8ab5887d8dfdd20a89c183152 Mon Sep 17 00:00:00 2001 From: DavidSpek Date: Sun, 24 Jan 2021 11:18:23 +0100 Subject: [PATCH 3/3] add main function --- hack/create_dependabot.py | 56 ++++++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/hack/create_dependabot.py b/hack/create_dependabot.py index f4ffa07ba..a83f04de5 100644 --- a/hack/create_dependabot.py +++ b/hack/create_dependabot.py @@ -2,8 +2,6 @@ import collections from pathlib import Path -repo_path = Path(__file__).parents[1] - dependabot = {} dependabot['version'] = 2 dependabot['updates'] = [] @@ -64,29 +62,39 @@ def append_updates(ecosystem, directory, assignees, reviewers=None): config['reviewers'] = reviewers dependabot['updates'].append(config) -for docker_path in get_docker_paths(): - string_path = str(docker_path) - assignees = get_owners(docker_path).get('approvers') - reviewers = get_owners(docker_path).get('reviewers') - append_updates('docker', string_path, assignees, reviewers) +def main(): + for docker_path in get_docker_paths(): + string_path = str(docker_path) + assignees = get_owners(docker_path).get('approvers') + reviewers = get_owners(docker_path).get('reviewers') + append_updates('docker', string_path, assignees, reviewers) + + for npm_path in get_npm_paths(): + string_path = str(npm_path) + assignees = get_owners(npm_path).get('approvers') + reviewers = get_owners(npm_path).get('reviewers') + append_updates('npm', string_path, assignees, reviewers) + + for pip_path in get_pip_paths(): + string_path = str(pip_path) + assignees = get_owners(pip_path).get('approvers') + reviewers = get_owners(pip_path).get('reviewers') + append_updates('pip', string_path, assignees, reviewers) -for npm_path in get_npm_paths(): - string_path = str(npm_path) - assignees = get_owners(npm_path).get('approvers') - reviewers = get_owners(npm_path).get('reviewers') - append_updates('npm', string_path, assignees, reviewers) + for go_path in get_go_paths(): + string_path = str(go_path) + assignees = get_owners(go_path).get('approvers') + reviewers = get_owners(go_path).get('reviewers') + append_updates('gomod', string_path, assignees, reviewers) -for pip_path in get_pip_paths(): - string_path = str(pip_path) - assignees = get_owners(pip_path).get('approvers') - reviewers = get_owners(pip_path).get('reviewers') - append_updates('pip', string_path, assignees, reviewers) + with open('.github/dependabot.yml', 'w') as outfile: + yaml.dump(dependabot, outfile, default_flow_style=False) -for go_path in get_go_paths(): - string_path = str(go_path) - assignees = get_owners(go_path).get('approvers') - reviewers = get_owners(go_path).get('reviewers') - append_updates('gomod', string_path, assignees, reviewers) + print(get_docker_paths()) + print(get_npm_paths()) + print(get_pip_paths()) + print(get_go_paths()) -with open('.github/dependabot.yml', 'w') as outfile: - yaml.dump(dependabot, outfile, default_flow_style=False) \ No newline at end of file +if __name__ == "__main__": + repo_path = Path(__file__).parents[1] + main() \ No newline at end of file