You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
155 lines
6.9 KiB
155 lines
6.9 KiB
# Generate .travis.yml automatically
|
|
|
|
# Configuration for Linux
|
|
configs = [
|
|
# OS, OS version, compiler, build type, task
|
|
("ubuntu", "18.04", "gcc", "DefaultDebug", "Test"),
|
|
("ubuntu", "18.04", "gcc", "DefaultRelease", "Test"),
|
|
("debian", "9", "gcc", "DefaultDebug", "Test"),
|
|
("debian", "9", "gcc", "DefaultRelease", "Test"),
|
|
("debian", "10", "gcc", "DefaultDebug", "Test"),
|
|
("debian", "10", "gcc", "DefaultRelease", "Test"),
|
|
("ubuntu", "20.04", "gcc", "DefaultDebugTravis", "TestDocker"),
|
|
("ubuntu", "20.04", "gcc", "DefaultReleaseTravis", "TestDockerDoxygen"),
|
|
# ("osx", "xcode9.3", "clang", "DefaultDebug", "Test"),
|
|
# ("osx", "xcode9.3", "clang", "DefaultRelease", "Test"),
|
|
]
|
|
|
|
# Stages in travis
|
|
build_stages = [
|
|
("Build (1st run)", "Build1"),
|
|
("Build (2nd run)", "Build2"),
|
|
("Build (3rd run)", "BuildLast"),
|
|
("Tasks", "Tasks"),
|
|
]
|
|
|
|
def get_env_string(os, os_version, compiler, build_type, task):
|
|
if os == "osx":
|
|
return "CONFIG={} TASK={} COMPILER={} STL=libc++\n".format(build_type, task, compiler)
|
|
else:
|
|
return "CONFIG={} TASK={} LINUX={} COMPILER={}\n".format(build_type, task, "{}-{}".format(os, os_version), compiler)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
s = ""
|
|
# Initial config
|
|
s += "#\n"
|
|
s += "# General config\n"
|
|
s += "#\n"
|
|
s += "branches:\n"
|
|
s += " only:\n"
|
|
s += " - master\n"
|
|
s += " - stable\n"
|
|
s += "sudo: required\n"
|
|
s += "language: cpp\n"
|
|
s += "\n"
|
|
s += "git:\n"
|
|
s += " depth: false\n"
|
|
s += "\n"
|
|
s += "# Enable caching\n"
|
|
s += "cache:\n"
|
|
s += " timeout: 1000\n"
|
|
s += " directories:\n"
|
|
s += " - build\n"
|
|
s += " - travis/mtime_cache\n"
|
|
s += "\n"
|
|
s += "# Enable docker support\n"
|
|
s += "services:\n"
|
|
s += "- docker\n"
|
|
s += "\n"
|
|
|
|
s += "notifications:\n"
|
|
s += " email:\n"
|
|
s += " on_failure: always\n"
|
|
s += " on_success: change\n"
|
|
s += " recipients:\n"
|
|
s += ' - secure: "VWnsiQkt1xjgRo1hfNiNQqvLSr0fshFmLV7jJlUixhCr094mgD0U2bNKdUfebm28Byg9UyDYPbOFDC0sx7KydKiL1q7FKKXkyZH0k04wUu8XiNw+fYkDpmPnQs7G2n8oJ/GFJnr1Wp/1KI3qX5LX3xot4cJfx1I5iFC2O+p+ng6v/oSX+pewlMv4i7KL16ftHHHMo80N694v3g4B2NByn4GU2/bjVQcqlBp/TiVaUa5Nqu9DxZi/n9CJqGEaRHOblWyMO3EyTZsn45BNSWeQ3DtnMwZ73rlIr9CaEgCeuArc6RGghUAVqRI5ao+N5apekIaILwTgL6AJn+Lw/+NRPa8xclgd0rKqUQJMJCDZKjKz2lmIs3bxfELOizxJ3FJQ5R95FAxeAZ6rb/j40YqVVTw2IMBDnEE0J5ZmpUYNUtPti/Adf6GD9Fb2y8sLo0XDJzkI8OxYhfgjSy5KYmRj8O5MXcP2MAE8LQauNO3MaFnL9VMVOTZePJrPozQUgM021uyahf960+QNI06Uqlmg+PwWkSdllQlxHHplOgW7zClFhtSUpnJxcsUBzgg4kVg80gXUwAQkaDi7A9Wh2bs+TvMlmHzBwg+2SaAfWDgjeJIeOaipDkF1uSGzC+EHAiiKYMLd4Aahoi8SuelJUucoyJyLAq00WdUFQIh/izVhM4Y="\n'
|
|
s += "\n"
|
|
s += "#\n"
|
|
s += "# Configurations\n"
|
|
s += "#\n"
|
|
s += "jobs:\n"
|
|
s += " include:\n"
|
|
|
|
# Start with prebuilding carl for docker
|
|
s += "\n"
|
|
s += " ###\n"
|
|
s += " # Stage: Build Carl\n"
|
|
s += " ###\n"
|
|
for config in configs:
|
|
os, os_version, compiler, build_type, task = config
|
|
os_type = "osx" if os == "osx" else "linux"
|
|
if "Travis" in build_type:
|
|
s += " # {}-{} - {}\n".format(os, os_version, build_type)
|
|
buildConfig = ""
|
|
buildConfig += " - stage: Build Carl\n"
|
|
buildConfig += " os: {}\n".format(os_type)
|
|
buildConfig += " compiler: {}\n".format(compiler)
|
|
buildConfig += " env: {}".format(get_env_string(os, os_version, compiler, build_type, task))
|
|
buildConfig += " before_script:\n"
|
|
buildConfig += ' - python -c "import fcntl; fcntl.fcntl(1, fcntl.F_SETFL, 0)" # Workaround for nonblocking mode\n'
|
|
buildConfig += " script:\n"
|
|
buildConfig += " - travis/build_carl.sh\n"
|
|
buildConfig += " before_cache:\n"
|
|
buildConfig += " - docker cp carl:/opt/carl/. .\n"
|
|
# Upload to DockerHub
|
|
buildConfig += " deploy:\n"
|
|
buildConfig += " - provider: script\n"
|
|
buildConfig += " skip_cleanup: true\n"
|
|
buildConfig += " script: bash travis/deploy_docker.sh carl\n"
|
|
s += buildConfig
|
|
|
|
# Generate all build configurations
|
|
for stage in build_stages:
|
|
s += "\n"
|
|
s += " ###\n"
|
|
s += " # Stage: {}\n".format(stage[0])
|
|
s += " ###\n"
|
|
for config in configs:
|
|
os, os_version, compiler, build_type, task = config
|
|
os_type = "osx" if os == "osx" else "linux"
|
|
s += " # {}-{} - {}\n".format(os, os_version, build_type)
|
|
buildConfig = ""
|
|
buildConfig += " - stage: {}\n".format(stage[0])
|
|
buildConfig += " os: {}\n".format(os_type)
|
|
if os_type == "osx":
|
|
buildConfig += " osx_image: {}\n".format(os_version)
|
|
buildConfig += " compiler: {}\n".format(compiler)
|
|
buildConfig += " env: {}".format(get_env_string(os, os_version, compiler, build_type, task))
|
|
buildConfig += " install:\n"
|
|
if stage[1] == "Build1":
|
|
buildConfig += " - rm -rf build\n"
|
|
buildConfig += " - travis/skip_test.sh\n"
|
|
if os_type == "osx":
|
|
buildConfig += " - travis/install_osx.sh\n"
|
|
buildConfig += " before_script:\n"
|
|
buildConfig += ' - python -c "import fcntl; fcntl.fcntl(1, fcntl.F_SETFL, 0)" # Workaround for nonblocking mode\n'
|
|
buildConfig += " script:\n"
|
|
buildConfig += " - travis/build.sh {}\n".format(stage[1])
|
|
if os_type == "linux":
|
|
buildConfig += " before_cache:\n"
|
|
buildConfig += " - docker cp storm:/opt/storm/. .\n"
|
|
buildConfig += " after_failure:\n"
|
|
buildConfig += " - find build -iname '*err*.log' -type f -print -exec cat {} \;\n"
|
|
|
|
# Deployment
|
|
if stage[1] == "Tasks":
|
|
if "Docker" in task or "Doxygen" in task:
|
|
buildConfig += " deploy:\n"
|
|
if "Docker" in task:
|
|
buildConfig += " - provider: script\n"
|
|
buildConfig += " skip_cleanup: true\n"
|
|
buildConfig += " script: bash travis/deploy_docker.sh storm\n"
|
|
if "Doxygen" in task:
|
|
buildConfig += " - provider: pages\n"
|
|
buildConfig += " skip_cleanup: true\n"
|
|
buildConfig += " github_token: $GITHUB_TOKEN\n"
|
|
buildConfig += " local_dir: build/doc/html/\n"
|
|
buildConfig += " repo: moves-rwth/storm-doc\n"
|
|
buildConfig += " target_branch: master\n"
|
|
buildConfig += " on:\n"
|
|
buildConfig += " branch: master\n"
|
|
|
|
s += buildConfig
|
|
|
|
print(s)
|