Skip to content
Snippets Groups Projects
Commit bbf8159c authored by Robotka István Adrián's avatar Robotka István Adrián
Browse files

add scripts

parent eee233a7
Branches
No related tags found
No related merge requests found
env env
venv
.venv
.idea
__pycache__
# Scripts to regulate git.sch repo's # Scripts to regulate repo's
## Usage ## Usage
```sh ```sh
echo -n 'gitlab personal token' > env
# install virtualenv on your machine # install virtualenv on your machine
pip3 install --user virtualenv pip3 install --user virtualenv
export PATH="~/.local/bin:$PATH" export PATH="~/.local/bin:$PATH"
...@@ -17,5 +19,5 @@ cp env.example env ...@@ -17,5 +19,5 @@ cp env.example env
vim env vim env
# rule them all # rule them all
./regulator.sh ./run.sh
``` ```
\ No newline at end of file
from functions import *
def repo_action(project_meta):
path = "/projects/" + str(project_meta['id']) + "/repository/merged_branches"
r = requests.delete(url=get_url(path))
if r.ok:
print("Updated: " + project_meta['name'])
else:
print("ERROR: " + project_meta['name'])
if __name__ == "__main__":
iterate_on_groups(repo_action)
PERSONAL_API_TOKEN=secret
import requests
personal_token = "please create an env file"
def get_url(path, extra="") -> str:
url = 'https://git.sch.bme.hu/api/v4/'
url += path
url += "?"
url += "access_token=" + personal_token + extra
return url
def request(path):
r = requests.get(url=get_url(path))
return r.json()
def iterate_group(group_id: str, repo_action):
url = "groups/" + group_id
group = request(url)
for project_meta in group['projects']:
if not project_meta['archived']:
repo_action(project_meta)
subgroups = request(url + "/subgroups")
for subgroup in subgroups:
iterate_group(str(subgroup['id']), repo_action)
def iterate_on_groups(repo_action):
global personal_token
env_file = open("env", "r")
personal_token = env_file.read()
iterate_group("1604", repo_action)
from functions import *
def repo_action(project_meta):
print('git clone ' + project_meta['ssh_url_to_repo'])
if __name__ == "__main__":
iterate_on_groups(repo_action)
#!/bin/bash
# halt on error
set -e
source ./env
export PERSONAL_API_TOKEN
log() {
echo '######################'
echo "# $*"
echo '######################'
}
log 'Setup all the things'
python3 setup.py
requests
# importing the requests library from functions import *
import requests
import os
host = "git.sch.bme.hu"
personal_token = os.environ['PERSONAL_API_TOKEN']
def get_url(path) -> str:
url = "https://"
url += host
url += "/api/v4/"
url += path
url += "?"
url += "access_token=" + personal_token
return url
def request(path):
r = requests.get(url=get_url(path))
return r.json()
def iterate_group(group_id: int):
url = "groups/" + str(group_id)
group = request(url)
for project_meta in group['projects']:
repo_action(project_meta)
subgroups = request(url + "/subgroups")
for subgroup in subgroups:
iterate_group(str(subgroup['id']))
def repo_action(project_meta): def repo_action(project_meta):
# print(project_meta)
setup_project(project_meta) setup_project(project_meta)
add_youtrack(project_meta)
add_mattermost(project_meta)
check_tags(project_meta)
def update_project(project_meta, data, postfix=''): def update_project(project_meta, data, postfix=''):
...@@ -47,6 +12,7 @@ def update_project(project_meta, data, postfix=''): ...@@ -47,6 +12,7 @@ def update_project(project_meta, data, postfix=''):
print("Updated: " + project_meta['name']) print("Updated: " + project_meta['name'])
else: else:
print("ERROR: " + project_meta['name']) print("ERROR: " + project_meta['name'])
print(r.content)
def setup_project(project_meta): def setup_project(project_meta):
...@@ -69,58 +35,5 @@ def setup_project(project_meta): ...@@ -69,58 +35,5 @@ def setup_project(project_meta):
update_project(project_meta, data) update_project(project_meta, data)
def add_youtrack(project_meta): if __name__ == "__main__":
postfix = '/services/youtrack' iterate_on_groups(repo_action)
yt = 'https://youtrack.kszk.bme.hu/'
data = {
'issues_url': yt + 'issue/:id',
'project_url': yt + '/projects/9b25aaac-1002-4fbc-ab29-c4bc7ff365da',
'description': 'KSZK YouTrack'
}
update_project(project_meta, data, postfix)
def add_mattermost(project_meta):
postfix = '/services/mattermost'
mm = 'https://mattermost.kszk.bme.hu/hooks'
data = {
'webhook': mm + '/c57a1tbduj8k9rsh71jd1gufey',
'notify_only_broken_pipelines': True,
'merge_requests_events': True,
'tag_push_events': True
}
update_project(project_meta, data, postfix)
def check_tags(project_meta):
path = 'projects/'
path += str(project_meta['id'])
path += '/protected_tags'
tags = request(path)
# unprotect_tags(path, tags)
if len(tags) == 0:
protect_tags(path)
def protect_tags(path):
data = {
'name': '1.*',
'create_access_level': '40'
}
r = requests.post(url=get_url(path), data=data)
if r.ok:
print("Protected")
else:
print("ERROR protecting tag")
def unprotect_tags(path, tags):
path += '/' + tags[0]['name']
r = requests.delete(url=get_url(path))
if r.ok:
print("tag deleted")
else:
print("ERROR deleting tag")
iterate_group(1604)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment