diff --git a/scripts/deploy_containers.py b/scripts/deploy_containers.py index 8105f27..577f748 100644 --- a/scripts/deploy_containers.py +++ b/scripts/deploy_containers.py @@ -5,7 +5,7 @@ import subprocess def git_diff(): args = sys.argv res = subprocess.run(f"git diff --name-only {args[1]} {args[2]}", capture_output=True, shell=True, text=True) - return [x for x in res.stdout.strip().split("\n") if "tasks/" in x and "roles/" not in x] + return [x for x in res.stdout.strip().split("\n") if "tasks/" in x or "roles/" in x] def construct_command(tag = None): command = f"ANSIBLE_CONFIG=ansible.cfg /usr/bin/ansible-playbook main.yml --vault-password-file ~/.vault_pass.txt --tags {tag}_deploy" @@ -38,29 +38,33 @@ def main(): failed = [] deployed = 0 for file in diff: - if "tasks/" in file: - # separating these for now because roles will typically - # have a bunch of other things tied to them - if "roles/" not in file: - task_name = file.split("/")[1].split(".")[0] - task_file_path = os.path.join(tasks_path, file.split("/")[1]) + # separating these for now because roles will typically + # have a bunch of other things tied to them + if "roles/" not in file: + task_name = file.split("/")[1].split(".")[0] + task_file_path = os.path.join(tasks_path, file.split("/")[1]) - if not os.path.exists(task_file_path): - print(f"{task_name} doesn't exist, running cleanup") - res = subprocess.run(f"/usr/bin/docker container stop {task_name}", shell=True) - if res.returncode == 0: - subprocess.run(f"/usr/bin/docker container rm {task_name}", shell=True) - subprocess.run("/usr/bin/docker image prune -f", shell=True) - subprocess.run("/usr/bin/docker container prune -f", shell=True) + if not os.path.exists(task_file_path): + print(f"{task_name} doesn't exist, running cleanup") + res = subprocess.run(f"/usr/bin/docker container stop {task_name}", shell=True) + if res.returncode == 0: + subprocess.run(f"/usr/bin/docker container rm {task_name}", shell=True) + subprocess.run("/usr/bin/docker image prune -f", shell=True) + subprocess.run("/usr/bin/docker container prune -f", shell=True) - print(f"Cleaned up container {task_name}") + print(f"Cleaned up container {task_name}") - # deploy the task, regardless of its status + # deploy the task, regardless of its status + if "roles/" not in file: task = deploy(task_name) - if not task: - failed.append(task_name) - else: - deployed += 1 + else: + role_name = file.split("/")[1] + task = deploy(role_name) + + if not task: + failed.append(task_name) + else: + deployed += 1 if len(failed) <= 0 and deployed > 0: print("\n---------------------")