#!/usr/bin/env python from os import getenv from os.path import dirname from re import match from shlex import quote from subprocess import run commit_before_sha = getenv("CI_COMMIT_BEFORE_SHA") commit_sha = getenv("CI_COMMIT_SHA") commit_ref_name = getenv("CI_COMMIT_REF_NAME") directories = set() dockerfile_updated = False cmd = "git clone https://code.ryuslash.org/ryuslash/git-lfs-test.git ." print(cmd) run(cmd, shell=True) cmd = "docker images ryuslash.org/freeloadio" print(cmd) process = run(cmd, shell=True, capture_output=True) process_output = process.stdout.decode() if len(process_output.strip().split("\n")) == 1: # We don't have any docker file at all yet. dockerfile_updated = True if not match(r"^0+$", commit_before_sha): cmd = f"git diff --name-only {quote(commit_before_sha)} {quote(commit_sha)}" print(cmd) process = run(cmd, shell=True, capture_output=True) process_output = process.stdout.decode() print(process_output) for filename in process_output.strip().split("\n"): if filename == "Dockerfile": dockerfile_updated = True directories.add(dirname(filename)) if dockerfile_updated: cmd = "docker build -t ryuslash.org/freeloadio:latest ." print(cmd) run(cmd, shell=True) unix_directory_list = str.join(":", directories) print(f"python tasks.py probe --directories={quote(unix_directory_list)}")