mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-03 03:52:38 +00:00
CI: Update matrix.py so all code is contained in functions.
Refactor matrix.py so all the logic is contained inside either helper functions or a new main function. Run the new main function by default. This lets other GitHub actions use functions in the python code without generating the whole matrix.
This commit is contained in:
parent
4f77690366
commit
b2a7840a28
278
.github/matrix.py
vendored
278
.github/matrix.py
vendored
@ -15,12 +15,6 @@ import sys
|
||||
import urllib.request
|
||||
from os import environ
|
||||
|
||||
if len(sys.argv) == 2:
|
||||
ref_name = sys.argv[1]
|
||||
else:
|
||||
print("Usage: {} <ref_name>".format(sys.argv[0]), file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
#
|
||||
# this CI is used for both development and stable branches of HAProxy
|
||||
#
|
||||
@ -29,8 +23,6 @@ else:
|
||||
# "haproxy-" - stable branches
|
||||
# otherwise - development branch (i.e. "latest" ssl variants, "latest" github images)
|
||||
#
|
||||
print("Generating matrix for branch '{}'.".format(ref_name))
|
||||
|
||||
|
||||
def clean_ssl(ssl):
|
||||
return ssl.replace("_VERSION", "").lower()
|
||||
@ -101,160 +93,170 @@ def get_asan_flags(cc):
|
||||
'CPU_CFLAGS.generic="-O1"',
|
||||
]
|
||||
|
||||
def main(ref_name):
|
||||
print("Generating matrix for branch '{}'.".format(ref_name))
|
||||
|
||||
matrix = []
|
||||
matrix = []
|
||||
|
||||
# Ubuntu
|
||||
# Ubuntu
|
||||
|
||||
if "haproxy-" in ref_name:
|
||||
os = "ubuntu-22.04" # stable branch
|
||||
else:
|
||||
os = "ubuntu-latest" # development branch
|
||||
if "haproxy-" in ref_name:
|
||||
os = "ubuntu-22.04" # stable branch
|
||||
else:
|
||||
os = "ubuntu-latest" # development branch
|
||||
|
||||
TARGET = "linux-glibc"
|
||||
for CC in ["gcc", "clang"]:
|
||||
matrix.append(
|
||||
{
|
||||
"name": "{}, {}, no features".format(os, CC),
|
||||
"os": os,
|
||||
"TARGET": TARGET,
|
||||
"CC": CC,
|
||||
"FLAGS": [],
|
||||
}
|
||||
)
|
||||
|
||||
matrix.append(
|
||||
{
|
||||
"name": "{}, {}, all features".format(os, CC),
|
||||
"os": os,
|
||||
"TARGET": TARGET,
|
||||
"CC": CC,
|
||||
"FLAGS": [
|
||||
"USE_ZLIB=1",
|
||||
"USE_OT=1",
|
||||
"OT_INC=${HOME}/opt-ot/include",
|
||||
"OT_LIB=${HOME}/opt-ot/lib",
|
||||
"OT_RUNPATH=1",
|
||||
"USE_PCRE=1",
|
||||
"USE_PCRE_JIT=1",
|
||||
"USE_LUA=1",
|
||||
"USE_OPENSSL=1",
|
||||
"USE_SYSTEMD=1",
|
||||
"USE_WURFL=1",
|
||||
"WURFL_INC=addons/wurfl/dummy",
|
||||
"WURFL_LIB=addons/wurfl/dummy",
|
||||
"USE_DEVICEATLAS=1",
|
||||
"DEVICEATLAS_SRC=addons/deviceatlas/dummy",
|
||||
"USE_PROMEX=1",
|
||||
"USE_51DEGREES=1",
|
||||
"51DEGREES_SRC=addons/51degrees/dummy/pattern",
|
||||
],
|
||||
}
|
||||
)
|
||||
|
||||
# ASAN
|
||||
|
||||
matrix.append(
|
||||
{
|
||||
"name": "{}, {}, ASAN, all features".format(os, CC),
|
||||
"os": os,
|
||||
"TARGET": TARGET,
|
||||
"CC": CC,
|
||||
"FLAGS": get_asan_flags(CC)
|
||||
+ [
|
||||
"USE_ZLIB=1",
|
||||
"USE_OT=1",
|
||||
"OT_INC=${HOME}/opt-ot/include",
|
||||
"OT_LIB=${HOME}/opt-ot/lib",
|
||||
"OT_RUNPATH=1",
|
||||
"USE_PCRE=1",
|
||||
"USE_PCRE_JIT=1",
|
||||
"USE_LUA=1",
|
||||
"USE_OPENSSL=1",
|
||||
"USE_SYSTEMD=1",
|
||||
"USE_WURFL=1",
|
||||
"WURFL_INC=addons/wurfl/dummy",
|
||||
"WURFL_LIB=addons/wurfl/dummy",
|
||||
"USE_DEVICEATLAS=1",
|
||||
"DEVICEATLAS_SRC=addons/deviceatlas/dummy",
|
||||
"USE_PROMEX=1",
|
||||
"USE_51DEGREES=1",
|
||||
"51DEGREES_SRC=addons/51degrees/dummy/pattern",
|
||||
],
|
||||
}
|
||||
)
|
||||
|
||||
for compression in ["USE_ZLIB=1"]:
|
||||
TARGET = "linux-glibc"
|
||||
for CC in ["gcc", "clang"]:
|
||||
matrix.append(
|
||||
{
|
||||
"name": "{}, {}, gz={}".format(os, CC, clean_compression(compression)),
|
||||
"name": "{}, {}, no features".format(os, CC),
|
||||
"os": os,
|
||||
"TARGET": TARGET,
|
||||
"CC": CC,
|
||||
"FLAGS": [compression],
|
||||
"FLAGS": [],
|
||||
}
|
||||
)
|
||||
|
||||
ssl_versions = [
|
||||
"stock",
|
||||
"OPENSSL_VERSION=1.0.2u",
|
||||
"OPENSSL_VERSION=1.1.1s",
|
||||
"QUICTLS=yes",
|
||||
# "BORINGSSL=yes",
|
||||
]
|
||||
matrix.append(
|
||||
{
|
||||
"name": "{}, {}, all features".format(os, CC),
|
||||
"os": os,
|
||||
"TARGET": TARGET,
|
||||
"CC": CC,
|
||||
"FLAGS": [
|
||||
"USE_ZLIB=1",
|
||||
"USE_OT=1",
|
||||
"OT_INC=${HOME}/opt-ot/include",
|
||||
"OT_LIB=${HOME}/opt-ot/lib",
|
||||
"OT_RUNPATH=1",
|
||||
"USE_PCRE=1",
|
||||
"USE_PCRE_JIT=1",
|
||||
"USE_LUA=1",
|
||||
"USE_OPENSSL=1",
|
||||
"USE_SYSTEMD=1",
|
||||
"USE_WURFL=1",
|
||||
"WURFL_INC=addons/wurfl/dummy",
|
||||
"WURFL_LIB=addons/wurfl/dummy",
|
||||
"USE_DEVICEATLAS=1",
|
||||
"DEVICEATLAS_SRC=addons/deviceatlas/dummy",
|
||||
"USE_PROMEX=1",
|
||||
"USE_51DEGREES=1",
|
||||
"51DEGREES_SRC=addons/51degrees/dummy/pattern",
|
||||
],
|
||||
}
|
||||
)
|
||||
|
||||
if "haproxy-" not in ref_name: # development branch
|
||||
ssl_versions = ssl_versions + [
|
||||
"OPENSSL_VERSION=latest",
|
||||
"LIBRESSL_VERSION=latest",
|
||||
# ASAN
|
||||
|
||||
matrix.append(
|
||||
{
|
||||
"name": "{}, {}, ASAN, all features".format(os, CC),
|
||||
"os": os,
|
||||
"TARGET": TARGET,
|
||||
"CC": CC,
|
||||
"FLAGS": get_asan_flags(CC)
|
||||
+ [
|
||||
"USE_ZLIB=1",
|
||||
"USE_OT=1",
|
||||
"OT_INC=${HOME}/opt-ot/include",
|
||||
"OT_LIB=${HOME}/opt-ot/lib",
|
||||
"OT_RUNPATH=1",
|
||||
"USE_PCRE=1",
|
||||
"USE_PCRE_JIT=1",
|
||||
"USE_LUA=1",
|
||||
"USE_OPENSSL=1",
|
||||
"USE_SYSTEMD=1",
|
||||
"USE_WURFL=1",
|
||||
"WURFL_INC=addons/wurfl/dummy",
|
||||
"WURFL_LIB=addons/wurfl/dummy",
|
||||
"USE_DEVICEATLAS=1",
|
||||
"DEVICEATLAS_SRC=addons/deviceatlas/dummy",
|
||||
"USE_PROMEX=1",
|
||||
"USE_51DEGREES=1",
|
||||
"51DEGREES_SRC=addons/51degrees/dummy/pattern",
|
||||
],
|
||||
}
|
||||
)
|
||||
|
||||
for compression in ["USE_ZLIB=1"]:
|
||||
matrix.append(
|
||||
{
|
||||
"name": "{}, {}, gz={}".format(os, CC, clean_compression(compression)),
|
||||
"os": os,
|
||||
"TARGET": TARGET,
|
||||
"CC": CC,
|
||||
"FLAGS": [compression],
|
||||
}
|
||||
)
|
||||
|
||||
ssl_versions = [
|
||||
"stock",
|
||||
"OPENSSL_VERSION=1.0.2u",
|
||||
"OPENSSL_VERSION=1.1.1s",
|
||||
"QUICTLS=yes",
|
||||
# "BORINGSSL=yes",
|
||||
]
|
||||
|
||||
for ssl in ssl_versions:
|
||||
flags = ["USE_OPENSSL=1"]
|
||||
if ssl == "BORINGSSL=yes" or ssl == "QUICTLS=yes" or "LIBRESSL" in ssl:
|
||||
flags.append("USE_QUIC=1")
|
||||
if ssl != "stock":
|
||||
flags.append("SSL_LIB=${HOME}/opt/lib")
|
||||
flags.append("SSL_INC=${HOME}/opt/include")
|
||||
if "LIBRESSL" in ssl and "latest" in ssl:
|
||||
ssl = determine_latest_libressl(ssl)
|
||||
if "OPENSSL" in ssl and "latest" in ssl:
|
||||
ssl = determine_latest_openssl(ssl)
|
||||
if "haproxy-" not in ref_name: # development branch
|
||||
ssl_versions = ssl_versions + [
|
||||
"OPENSSL_VERSION=latest",
|
||||
"LIBRESSL_VERSION=latest",
|
||||
]
|
||||
|
||||
for ssl in ssl_versions:
|
||||
flags = ["USE_OPENSSL=1"]
|
||||
if ssl == "BORINGSSL=yes" or ssl == "QUICTLS=yes" or "LIBRESSL" in ssl:
|
||||
flags.append("USE_QUIC=1")
|
||||
if ssl != "stock":
|
||||
flags.append("SSL_LIB=${HOME}/opt/lib")
|
||||
flags.append("SSL_INC=${HOME}/opt/include")
|
||||
if "LIBRESSL" in ssl and "latest" in ssl:
|
||||
ssl = determine_latest_libressl(ssl)
|
||||
if "OPENSSL" in ssl and "latest" in ssl:
|
||||
ssl = determine_latest_openssl(ssl)
|
||||
|
||||
matrix.append(
|
||||
{
|
||||
"name": "{}, {}, ssl={}".format(os, CC, clean_ssl(ssl)),
|
||||
"os": os,
|
||||
"TARGET": TARGET,
|
||||
"CC": CC,
|
||||
"ssl": ssl,
|
||||
"FLAGS": flags,
|
||||
}
|
||||
)
|
||||
|
||||
# macOS
|
||||
|
||||
if "haproxy-" in ref_name:
|
||||
os = "macos-12" # stable branch
|
||||
else:
|
||||
os = "macos-latest" # development branch
|
||||
|
||||
TARGET = "osx"
|
||||
for CC in ["clang"]:
|
||||
matrix.append(
|
||||
{
|
||||
"name": "{}, {}, ssl={}".format(os, CC, clean_ssl(ssl)),
|
||||
"name": "{}, {}, no features".format(os, CC),
|
||||
"os": os,
|
||||
"TARGET": TARGET,
|
||||
"CC": CC,
|
||||
"ssl": ssl,
|
||||
"FLAGS": flags,
|
||||
"FLAGS": [],
|
||||
}
|
||||
)
|
||||
|
||||
# macOS
|
||||
# Print matrix
|
||||
|
||||
if "haproxy-" in ref_name:
|
||||
os = "macos-12" # stable branch
|
||||
else:
|
||||
os = "macos-latest" # development branch
|
||||
print(json.dumps(matrix, indent=4, sort_keys=True))
|
||||
|
||||
TARGET = "osx"
|
||||
for CC in ["clang"]:
|
||||
matrix.append(
|
||||
{
|
||||
"name": "{}, {}, no features".format(os, CC),
|
||||
"os": os,
|
||||
"TARGET": TARGET,
|
||||
"CC": CC,
|
||||
"FLAGS": [],
|
||||
}
|
||||
)
|
||||
if environ.get("GITHUB_OUTPUT") is not None:
|
||||
with open(environ.get("GITHUB_OUTPUT"), "a") as f:
|
||||
print("matrix={}".format(json.dumps({"include": matrix})), file=f)
|
||||
|
||||
# Print matrix
|
||||
|
||||
print(json.dumps(matrix, indent=4, sort_keys=True))
|
||||
|
||||
if environ.get("GITHUB_OUTPUT") is not None:
|
||||
with open(environ.get("GITHUB_OUTPUT"), "a") as f:
|
||||
print("matrix={}".format(json.dumps({"include": matrix})), file=f)
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) == 2:
|
||||
ref_name = sys.argv[1]
|
||||
main(ref_name)
|
||||
else:
|
||||
print("Usage: {} <ref_name>".format(sys.argv[0]), file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
Loading…
Reference in New Issue
Block a user