45 lines
1.4 KiB
Python
Executable file
45 lines
1.4 KiB
Python
Executable file
#!/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)}")
|