1
0
mirror of https://github.com/bplein/factorio-docker.git synced 2024-12-12 11:14:55 +02:00
factorio-docker-bplein/build.py
Bill Plein 3dfeee4696 update for my own repo
changed factoriotools/factorio to bplein/factorio
2023-03-05 14:24:23 -06:00

63 lines
1.8 KiB
Python
Executable File

#!/usr/bin/env python3
import os
import json
import subprocess
import shutil
import sys
import tempfile
def build_dockerfile(sha256, version, tags):
build_dir = tempfile.mktemp()
shutil.copytree("docker", build_dir)
build_command = ["docker", "build", "--build-arg", f"VERSION={version}",
"--build-arg", f"SHA256={sha256}", "."]
for tag in tags:
build_command.extend(["-t", f"bplein/factorio:{tag}"])
try:
subprocess.run(build_command, cwd=build_dir, check=True)
except subprocess.CalledProcessError:
print("Build of image failed")
exit(1)
def login():
try:
username = os.environ["DOCKER_USERNAME"]
password = os.environ["DOCKER_PASSWORD"]
subprocess.run(["docker", "login", "-u", username, "-p", password], check=True)
except KeyError:
print("Username and password need to be given")
exit(1)
except subprocess.CalledProcessError:
print("Docker login failed")
exit(1)
def main(push_tags=False):
with open(os.path.join(os.path.dirname(__file__), "buildinfo.json")) as file_handle:
builddata = json.load(file_handle)
if push_tags:
login()
for version, buildinfo in builddata.items():
sha256 = buildinfo["sha256"]
tags = buildinfo["tags"]
build_dockerfile(sha256, version, tags)
if not push_tags:
continue
for tag in tags:
try:
subprocess.run(["docker", "push", f"bplein/factorio:{tag}"],
check=True)
except subprocess.CalledProcessError:
print("Docker push failed")
exit(1)
if __name__ == '__main__':
push_tags = len(sys.argv) > 1 and sys.argv[1] == "--push-tags"
main(push_tags)