Add tag & feature flag support files for CI

This commit is contained in:
Max Radermacher
2025-03-24 12:45:04 -05:00
committed by GitHub
parent 4c97e7e193
commit 02e893a4f3
5 changed files with 71 additions and 8 deletions

View File

@@ -3,6 +3,7 @@
import argparse
import plistlib
import subprocess
import tag_template
INFO_PLIST_PATHS = [
"Signal/Signal-Info.plist",
@@ -77,7 +78,10 @@ if __name__ == "__main__":
for path in INFO_PLIST_PATHS:
set_version(path, version)
run(["git", "add", *INFO_PLIST_PATHS])
changed_paths = []
changed_paths.extend(tag_template.write_template())
run(["git", "add", *INFO_PLIST_PATHS, *changed_paths])
run(["git", "commit", "-m", f"Bump version to {version.pretty()}"])
if version.patch == 0:
run(["git", "tag", f"version-{version.pretty2()}"])

View File

@@ -4,6 +4,7 @@ import sys
import os
import re
import subprocess
import tag_template
FILE_PATH = "SignalServiceKit/Util/FeatureFlags+Generated.swift"
@@ -44,15 +45,15 @@ def set_feature_flags(new_flags_level):
exit(1)
new_value = generate(new_flags_level)
with open(FILE_PATH, "r") as file:
old_value = file.read()
if new_value == old_value:
changed_paths = []
changed_paths.extend(tag_template.write_if_different(FILE_PATH, new_value))
changed_paths.extend(tag_template.write_level(new_flags_level))
changed_paths.extend(tag_template.write_template())
if len(changed_paths) == 0:
print(f"Feature flags already set to {new_flags_level}; nothing to do")
exit(0)
with open(FILE_PATH, "w") as file:
file.write(new_value)
run(["git", "add", FILE_PATH])
run(["git", "add", *changed_paths])
run(["git", "commit", "-m", f"Feature flags for .{new_flags_level}."])

56
Scripts/tag_template.py Executable file
View File

@@ -0,0 +1,56 @@
#!/usr/bin/env python3
import plistlib
TEMPLATE_PATH = "ci_scripts/tag_template.txt"
FEATURE_FLAG_LEVEL_PATH = "ci_scripts/feature_flag_level.txt"
INFO_PLIST = "Signal/Signal-Info.plist"
def write_level(level):
return write_if_different(FEATURE_FLAG_LEVEL_PATH, level)
def write_template():
(major, minor, patch) = get_current_marketing_version()
tag_suffix = get_tag_suffix(get_current_feature_flag_level())
tag_template = f"{major}.{minor}.{patch}.{{build_number}}{tag_suffix}"
return write_if_different(TEMPLATE_PATH, tag_template)
def get_current_marketing_version():
with open(INFO_PLIST, "rb") as file:
return extract_marketing_version(plistlib.load(file))
def extract_marketing_version(contents):
return parse_version(contents["CFBundleShortVersionString"])
def parse_version(value):
components = list(map(int, value.split(".")))
while len(components) < 3:
components.append(0)
major, minor, patch = tuple(components)
return (major, minor, patch)
def get_current_feature_flag_level():
with open(FEATURE_FLAG_LEVEL_PATH, "r") as file:
return file.read()
def get_tag_suffix(level):
if level == "production":
return ""
return f"-{level}"
def write_if_different(file_path, new_value):
with open(file_path, "r") as file:
old_value = file.read()
if new_value != old_value:
with open(file_path, "w") as file:
file.write(new_value)
return [file_path]
return []

View File

@@ -0,0 +1 @@
internal

View File

@@ -0,0 +1 @@
7.53.0.{build_number}-internal