58 lines
1.4 KiB
Python
58 lines
1.4 KiB
Python
from __future__ import annotations
|
|
|
|
import datetime as dt
|
|
import subprocess
|
|
from pathlib import Path
|
|
|
|
|
|
def get_timestamp_tag(today: dt.date) -> str:
|
|
year_suffix = today.year % 100
|
|
day_of_year = today.timetuple().tm_yday
|
|
return f"{year_suffix}.{day_of_year}"
|
|
|
|
|
|
def run_command(command: list[str], repo_root: Path) -> int:
|
|
print(" ".join(command))
|
|
result = subprocess.run(command, cwd=str(repo_root))
|
|
return result.returncode
|
|
|
|
|
|
def main() -> int:
|
|
repo_root = Path(__file__).resolve().parents[1]
|
|
|
|
today = dt.date.today()
|
|
timestamp_tag = get_timestamp_tag(today)
|
|
|
|
local_image = "troogs/astrain"
|
|
registry_image = "git.beging.de/troogs/astrain"
|
|
tags = ["latest", timestamp_tag]
|
|
|
|
for tag in tags:
|
|
tag_cmd = [
|
|
"docker",
|
|
"tag",
|
|
f"{local_image}:{tag}",
|
|
f"{registry_image}:{tag}",
|
|
]
|
|
print(f"Tagging {local_image}:{tag} as {registry_image}:{tag}")
|
|
exit_code = run_command(tag_cmd, repo_root)
|
|
if exit_code != 0:
|
|
return exit_code
|
|
|
|
for tag in tags:
|
|
push_cmd = [
|
|
"docker",
|
|
"push",
|
|
f"{registry_image}:{tag}",
|
|
]
|
|
print(f"Pushing {registry_image}:{tag}")
|
|
exit_code = run_command(push_cmd, repo_root)
|
|
if exit_code != 0:
|
|
return exit_code
|
|
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|