Allow configuring gen_build_info.py through environment variables (#25162)
This makes the life of forks slightly easier by letting you pass an environment variable instead of having to maintain this file yourself.
This commit is contained in:
@@ -19,11 +19,11 @@ SERVER_FILES = [
|
|||||||
"SS14.Server_osx-x64.zip"
|
"SS14.Server_osx-x64.zip"
|
||||||
]
|
]
|
||||||
|
|
||||||
VERSION = os.environ['GITHUB_SHA']
|
FORK_ID = os.environ.get("CDN_FORK_ID", "wizards")
|
||||||
FORK_ID = "wizards"
|
HOSTNAME = os.environ.get("CDN_HOSTNAME", "cdn.centcomm.spacestation14.com")
|
||||||
BUILD_URL = f"https://cdn.centcomm.spacestation14.com/builds/wizards/builds/{{FORK_VERSION}}/{FILE}"
|
BUILD_URL = f"https://{HOSTNAME}/builds/{FORK_ID}/builds/{{FORK_VERSION}}/{FILE}"
|
||||||
MANIFEST_URL = f"https://cdn.centcomm.spacestation14.com/cdn/version/{{FORK_VERSION}}/manifest"
|
MANIFEST_URL = f"https://{HOSTNAME}/version/{{FORK_VERSION}}/manifest"
|
||||||
MANIFEST_DOWNLOAD_URL = f"https://cdn.centcomm.spacestation14.com/cdn/version/{{FORK_VERSION}}/download"
|
MANIFEST_DOWNLOAD_URL = f"https://{HOSTNAME}/version/{{FORK_VERSION}}/download"
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
client_file = os.path.join("release", FILE)
|
client_file = os.path.join("release", FILE)
|
||||||
@@ -38,17 +38,25 @@ def inject_manifest(zip_path: str, manifest: str) -> None:
|
|||||||
z.writestr("build.json", manifest)
|
z.writestr("build.json", manifest)
|
||||||
|
|
||||||
|
|
||||||
|
def get_git_sha() -> str:
|
||||||
|
proc = subprocess.run(["git", "rev-parse", "HEAD"], stdout=subprocess.PIPE, check=True, encoding="UTF-8")
|
||||||
|
tag = proc.stdout.strip()
|
||||||
|
return tag
|
||||||
|
|
||||||
def generate_build_json(file: str) -> str:
|
def generate_build_json(file: str) -> str:
|
||||||
# Env variables set by Jenkins.
|
# Env variables set by Jenkins.
|
||||||
|
|
||||||
hash = sha256_file(file)
|
hash = sha256_file(file)
|
||||||
engine_version = get_engine_version()
|
engine_version = get_engine_version()
|
||||||
manifest_hash = generate_manifest_hash(file)
|
manifest_hash = generate_manifest_hash(file)
|
||||||
|
version = os.environ.get("GITHUB_SHA")
|
||||||
|
if not version:
|
||||||
|
version = get_git_sha()
|
||||||
|
|
||||||
return json.dumps({
|
return json.dumps({
|
||||||
"download": BUILD_URL,
|
"download": BUILD_URL,
|
||||||
"hash": hash,
|
"hash": hash,
|
||||||
"version": VERSION,
|
"version": version,
|
||||||
"fork_id": FORK_ID,
|
"fork_id": FORK_ID,
|
||||||
"engine_version": engine_version,
|
"engine_version": engine_version,
|
||||||
"manifest_url": MANIFEST_URL,
|
"manifest_url": MANIFEST_URL,
|
||||||
@@ -56,6 +64,7 @@ def generate_build_json(file: str) -> str:
|
|||||||
"manifest_hash": manifest_hash
|
"manifest_hash": manifest_hash
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
def generate_manifest_hash(file: str) -> str:
|
def generate_manifest_hash(file: str) -> str:
|
||||||
zip = ZipFile(file)
|
zip = ZipFile(file)
|
||||||
infos = zip.infolist()
|
infos = zip.infolist()
|
||||||
@@ -83,7 +92,6 @@ def get_engine_version() -> str:
|
|||||||
assert tag.startswith("v")
|
assert tag.startswith("v")
|
||||||
return tag[1:] # Cut off v prefix.
|
return tag[1:] # Cut off v prefix.
|
||||||
|
|
||||||
|
|
||||||
def sha256_file(path: str) -> str:
|
def sha256_file(path: str) -> str:
|
||||||
with open(path, "rb") as f:
|
with open(path, "rb") as f:
|
||||||
h = hashlib.sha256()
|
h = hashlib.sha256()
|
||||||
|
|||||||
Reference in New Issue
Block a user