-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgitlab_manager.py
More file actions
79 lines (57 loc) · 2.19 KB
/
Copy pathgitlab_manager.py
File metadata and controls
79 lines (57 loc) · 2.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import os
import sys
from core.backup import perform_backup
from core.env import load_dotenv, parse_runner_settings
from core.gitlab_service import show_status, start_gitlab, stop_gitlab
from core.restore import perform_restore
from core.runner_manager import perform_runner_registration
from core.utils import fail
load_dotenv()
GITLAB_CONTAINER_NAME = os.getenv("GITLAB_CONTAINER_NAME")
GITLAB_HOST = os.getenv("GITLAB_HOST")
GITLAB_URL = os.getenv("GITLAB_URL")
GITLAB_PAT = os.getenv("GITLAB_PAT")
GITLAB_RUNNER_CONTAINER_NAME = os.getenv("GITLAB_RUNNER_CONTAINER_NAME")
GITLAB_RUNNER_DOCKER_IMAGE = os.getenv("GITLAB_RUNNER_DOCKER_IMAGE")
GITLAB_RUNNER_SETTINGS = parse_runner_settings(os.getenv("GITLAB_RUNNER_SETTINGS"))
AUTO_BACKUP = os.getenv("AUTO_BACKUP").lower() == "true"
BACKUP_DIR = os.getenv("BACKUP_DIR")
def start_with_optional_backup():
start_gitlab(GITLAB_URL)
if AUTO_BACKUP:
backup()
def backup():
perform_backup(BACKUP_DIR, GITLAB_CONTAINER_NAME, GITLAB_RUNNER_CONTAINER_NAME)
def stop_with_optional_backup():
if AUTO_BACKUP:
backup()
stop_gitlab()
def register_runner():
perform_runner_registration(GITLAB_URL,
GITLAB_HOST,
GITLAB_PAT,
GITLAB_RUNNER_CONTAINER_NAME,
GITLAB_RUNNER_DOCKER_IMAGE,
GITLAB_RUNNER_SETTINGS
)
def restore():
perform_restore(BACKUP_DIR, GITLAB_CONTAINER_NAME, GITLAB_RUNNER_CONTAINER_NAME)
commands = {
"start": start_with_optional_backup,
"stop": stop_with_optional_backup,
"restart": lambda: (stop_gitlab(), start_gitlab(GITLAB_URL)),
"status": lambda: show_status(GITLAB_URL),
"register_runner": register_runner,
"backup": backup,
"restore": restore
}
def main():
if len(sys.argv) < 2:
fail(f"Usage: python gitlab_manager.py [{'|'.join(commands.keys())}]")
command = sys.argv[1].lower()
if command in commands:
commands[command]()
else:
fail(f"Unknown command: {command}; Available commands: {', '.join(commands.keys())}")
if __name__ == "__main__":
main()