/
ci.py
executable file
·64 lines (54 loc) · 2.14 KB
/
ci.py
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
#!/usr/bin/python3
###
# DO NOT EDIT THIS FILE
###
#Import Settings
from settings import VERSIONS, REPO_NAME, CODE_PATH, CI_COMMANDS, CI_EXIT_ON_FAIL, CI_ENV_BADGES, CI_ENV_BADGE_PATH
# Import Libs
import os
import subprocess
import itertools
import urllib.request
import urllib.parse
# Prep some general settings
service_names = sorted(VERSIONS.keys());
service_versions = list()
for service in service_names:
service_versions.append(VERSIONS[service])
# Iterate though each environment combination
for combination in list(itertools.product(*service_versions)):
env = "CODE_PATH=" + CODE_PATH + " "
env_slug=""
for x in range(len(combination)):
env = env + "VERSION_%s=%s " % (service_names[x].upper(), combination[x])
env_slug = env_slug + "%s=%s " % (service_names[x].upper(), combination[x])
cmd = "docker-compose exec php "
# Start ENV
returned_value = subprocess.call(env + "docker-compose up -d", shell=True)
if(returned_value > 0):
print("\nCI FAILED to start\nEnvironment: %s\n" % (env))
exit(returned_value)
# Run CI Commands
bade_color="green"
bade_message="Success"
for ci_command in CI_COMMANDS:
returned_value = subprocess.call(env + cmd + "/bin/bash -c 'cd /opt &&" + ci_command +"'", shell=True)
# Exit if Error Occurs
if(returned_value > 0):
print("\nCI FAILED \nCOMMAND: %s\nEnvironment: %s\n" % (ci_command, env))
if CI_EXIT_ON_FAIL:
subprocess.call(env + "docker-compose down", shell=True)
exit(returned_value)
else:
bade_color="red"
bade_message="Failed"
# ENV Badge
if CI_ENV_BADGES:
url = "/badge/" + env_slug[:-1] + "/" + bade_message + "/" + bade_color
r = urllib.request.urlopen('https://badgen.net' + urllib.parse.quote(url));
open(CI_ENV_BADGE_PATH + '/' + env_slug[:-1] + '.svg', 'wb').write(r.read())
# Stop ENV
returned_value = subprocess.call(env + "docker-compose down", shell=True)
if(returned_value > 0):
print("\nCI FAILED to stop\nEnvironment: %s\n" % (env))
exit(returned_value)