Changed the .gitlab-ci.yml structure
Beginned with new building system .gitlab-ci.yml can now be generated by the script assemble-gitlab-ci.py. Therefore the .gitlab-ci.yml configuration file can be split into several smaller files
This commit is contained in:
committed by
Jan Möbius
parent
8a65c81b3c
commit
00a2eac354
111
CI/gitlab-ci/assemble-gitlab-ci.py
Executable file
111
CI/gitlab-ci/assemble-gitlab-ci.py
Executable file
@@ -0,0 +1,111 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
import sys, os, re
|
||||
|
||||
# Script for automated gitlab-ci creation
|
||||
# Assembles the gitlab ci from master template file:
|
||||
master_file = 'ci-master.yml'
|
||||
# Lines in the master file are copied to the resulting
|
||||
# assemblied gitlab ci file
|
||||
target_file = '../../.gitlab-ci.yml'
|
||||
# Lines containing the String {xxx} are interpreted
|
||||
# as import statement. Therefore the file xxx is imported
|
||||
# into that line.
|
||||
error_on_path_redirection = True
|
||||
# Notice that xxx can not contain path redirections
|
||||
# like .. and /
|
||||
|
||||
|
||||
# Prefix to prepend to master file
|
||||
autogenerated_notice = """#############################################################
|
||||
# #
|
||||
# This is an auto generated file. Do not make #
|
||||
# changes to this file. They possible will be overriden. #
|
||||
# #
|
||||
# To make persistent changes changes files in #
|
||||
# ./CI/gitlab-ci/ ... #
|
||||
# and regenerate this file with the configuration tool #
|
||||
# #
|
||||
#############################################################
|
||||
|
||||
"""
|
||||
|
||||
|
||||
# Checks if an import filename is valid - free of path redirections
|
||||
def isValidImportFilename(filenameToImport):
|
||||
if not error_on_path_redirection:
|
||||
return True
|
||||
else:
|
||||
filterRegex = r"(\/|\\|\.\.+)"
|
||||
filtered = re.sub(filterRegex, '', filenameToImport)
|
||||
return filenameToImport == filtered
|
||||
|
||||
# Returns the directory to work on
|
||||
def findCIAssemblyDirectory():
|
||||
pathname = os.path.dirname(sys.argv[0])
|
||||
return os.path.abspath(pathname)
|
||||
|
||||
# Returns file content as string
|
||||
def readFile(filename):
|
||||
file = open(filename, "r")
|
||||
content = file.read()
|
||||
file.close()
|
||||
return content
|
||||
|
||||
# Assembles the file in memory and returns file content as string
|
||||
def assembleTarget(master, depth=3):
|
||||
if depth < 0:
|
||||
raise "Max depth reached. Possible circular import?"
|
||||
|
||||
master_content = readFile(master)
|
||||
regex_import_stmt = r"^\ *\{([^\}\n]+)\}\ *$"
|
||||
regex_import_comp = re.compile(regex_import_stmt)
|
||||
master_content_list = master_content.splitlines()
|
||||
|
||||
# Walk through file looking for import statements
|
||||
cur_index = 0
|
||||
while cur_index < len(master_content_list):
|
||||
cur_line = master_content_list[cur_index]
|
||||
match = regex_import_comp.match(cur_line)
|
||||
|
||||
if match:
|
||||
importFile = match.groups()[0]
|
||||
if importFile:
|
||||
# Found import statement
|
||||
print("Importing file: "+importFile)
|
||||
|
||||
if not isValidImportFilename(importFile):
|
||||
raise "Invalid filename "+importFile+ ". Do not include path redirections"
|
||||
|
||||
import_content = assembleTarget(importFile, depth=depth-1)
|
||||
import_content_list = import_content.splitlines()
|
||||
master_content_list.pop(cur_index)
|
||||
for new_line in reversed(import_content_list):
|
||||
master_content_list.insert(cur_index, new_line)
|
||||
|
||||
cur_index += 1
|
||||
|
||||
# Assemble result
|
||||
master_content = ''.join(str(e)+'\n' for e in master_content_list)
|
||||
return master_content
|
||||
|
||||
# Main function
|
||||
def main():
|
||||
print("Starting config assembly")
|
||||
os.chdir(findCIAssemblyDirectory())
|
||||
target_content = autogenerated_notice
|
||||
target_content += assembleTarget(master_file)
|
||||
print("Writing config to file "+target_file)
|
||||
|
||||
target_file_handle = open(target_file, "w")
|
||||
target_file_handle.write(target_content)
|
||||
target_file_handle.write("\n")
|
||||
target_file_handle.flush()
|
||||
target_file_handle.close()
|
||||
|
||||
print("Finished.")
|
||||
|
||||
|
||||
# Execute main function
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
37
CI/gitlab-ci/ci-master.yml
Normal file
37
CI/gitlab-ci/ci-master.yml
Normal file
@@ -0,0 +1,37 @@
|
||||
stages:
|
||||
- build
|
||||
- test
|
||||
- deploy
|
||||
|
||||
variables:
|
||||
GIT_SUBMODULE_STRATEGY: recursive
|
||||
|
||||
{linux.yml}
|
||||
|
||||
{mac.yml}
|
||||
|
||||
{windows.yml}
|
||||
|
||||
Doc-publish:
|
||||
stage: deploy
|
||||
only:
|
||||
- master
|
||||
script: "CI/ci-doc.sh"
|
||||
tags:
|
||||
- Linux
|
||||
- stretch
|
||||
|
||||
Sources:
|
||||
stage: deploy
|
||||
only:
|
||||
- master
|
||||
script: "CI/ci-source.sh"
|
||||
tags:
|
||||
- Linux
|
||||
- stretch
|
||||
artifacts:
|
||||
paths:
|
||||
- OpenMesh*.zip
|
||||
- OpenMesh*.tar.bz2
|
||||
- OpenMesh*.tar.gz
|
||||
|
||||
133
CI/gitlab-ci/linux.yml
Normal file
133
CI/gitlab-ci/linux.yml
Normal file
@@ -0,0 +1,133 @@
|
||||
# -----------------
|
||||
# Linux tasks
|
||||
# -----------------
|
||||
|
||||
cppcheck:
|
||||
stage: build
|
||||
script: "CI/ci-cppcheck.sh"
|
||||
image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container
|
||||
tags: [Docker]
|
||||
artifacts:
|
||||
paths:
|
||||
- cppcheck.log
|
||||
|
||||
gcc-c++11-test-debug:
|
||||
stage: test
|
||||
script: "CI/ci-linux-test.sh gcc C++11 debug"
|
||||
image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container
|
||||
tags: [Docker]
|
||||
|
||||
|
||||
gcc-c++11-test-release:
|
||||
stage: test
|
||||
script: "CI/ci-linux-test.sh gcc C++11 release"
|
||||
image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container
|
||||
tags: [Docker]
|
||||
|
||||
gcc-c++11-build-debug:
|
||||
stage: build
|
||||
script: "CI/ci-linux-build.sh gcc C++11 debug"
|
||||
image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container
|
||||
tags: [Docker]
|
||||
artifacts:
|
||||
paths:
|
||||
- build-debug-gcc-cpp11-Vector-Checks/
|
||||
|
||||
gcc-c++11-build-release:
|
||||
stage: build
|
||||
script: "CI/ci-linux-build.sh gcc C++11 release"
|
||||
image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container
|
||||
tags: [Docker]
|
||||
artifacts:
|
||||
paths:
|
||||
- build-release-gcc-cpp11-Vector-Checks/
|
||||
|
||||
clang-c++11-test-debug:
|
||||
stage: test
|
||||
script: "CI/ci-linux-test.sh clang C++11 debug"
|
||||
image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container
|
||||
tags: [Docker]
|
||||
|
||||
clang-c++11-test-release:
|
||||
stage: test
|
||||
script: "CI/ci-linux-test.sh clang C++11 release"
|
||||
image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container
|
||||
tags: [Docker]
|
||||
|
||||
clang-c++11-build-debug:
|
||||
stage: build
|
||||
script: "CI/ci-linux-build.sh clang C++11 debug"
|
||||
image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container
|
||||
tags: [Docker]
|
||||
artifacts:
|
||||
paths:
|
||||
- build-debug-clang-cpp11-Vector-Checks/
|
||||
|
||||
clang-c++11-build-release:
|
||||
stage: build
|
||||
script: "CI/ci-linux-build.sh clang C++11 release"
|
||||
image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container
|
||||
tags: [Docker]
|
||||
artifacts:
|
||||
paths:
|
||||
- build-release-clang-cpp11-Vector-Checks/
|
||||
|
||||
gcc-c++14-test-debug:
|
||||
stage: test
|
||||
script: "CI/ci-linux-test.sh gcc C++14 debug"
|
||||
image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container
|
||||
tags: [Docker]
|
||||
|
||||
gcc-c++14-test-release:
|
||||
stage: test
|
||||
script: "CI/ci-linux-test.sh gcc C++14 release"
|
||||
image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container
|
||||
tags: [Docker]
|
||||
|
||||
gcc-c++14-build-debug:
|
||||
stage: build
|
||||
script: "CI/ci-linux-build.sh gcc C++14 debug"
|
||||
image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container
|
||||
tags: [Docker]
|
||||
artifacts:
|
||||
paths:
|
||||
- build-debug-gcc-cpp14-Vector-Checks/
|
||||
|
||||
gcc-c++14-build-release:
|
||||
stage: build
|
||||
script: "CI/ci-linux-build.sh gcc C++14 release"
|
||||
image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container
|
||||
tags: [Docker]
|
||||
artifacts:
|
||||
paths:
|
||||
- build-release-gcc-cpp14-Vector-Checks/
|
||||
|
||||
clang-c++14-test-debug:
|
||||
stage: test
|
||||
script: "CI/ci-linux-test.sh clang C++14 debug"
|
||||
image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container
|
||||
tags: [Docker]
|
||||
|
||||
clang-c++14-test-release:
|
||||
stage: test
|
||||
script: "CI/ci-linux-test.sh clang C++14 release"
|
||||
image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container
|
||||
tags: [Docker]
|
||||
|
||||
clang-c++14-build-debug:
|
||||
stage: build
|
||||
script: "CI/ci-linux-build.sh clang C++14 debug"
|
||||
image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container
|
||||
tags: [Docker]
|
||||
artifacts:
|
||||
paths:
|
||||
- build-debug-clang-cpp14-Vector-Checks/
|
||||
|
||||
clang-c++14-build-release:
|
||||
stage: build
|
||||
script: "CI/ci-linux-build.sh clang C++14 release"
|
||||
image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container
|
||||
tags: [Docker]
|
||||
artifacts:
|
||||
paths:
|
||||
- build-release-clang-cpp14-Vector-Checks/
|
||||
35
CI/gitlab-ci/mac.yml
Normal file
35
CI/gitlab-ci/mac.yml
Normal file
@@ -0,0 +1,35 @@
|
||||
# -----------------
|
||||
# Apple tasks
|
||||
# -----------------
|
||||
|
||||
macos-cpp11-debug:
|
||||
stage: build
|
||||
script: "CI/ci-mac-build.sh C++11 debug ; CI/ci-mac-test.sh C++11 debug"
|
||||
tags:
|
||||
- Apple
|
||||
|
||||
macos-cpp14-debug:
|
||||
stage: build
|
||||
script: "CI/ci-mac-build.sh C++14 debug ; CI/ci-mac-test.sh C++14 debug"
|
||||
tags:
|
||||
- Apple
|
||||
|
||||
macos-cpp11-release:
|
||||
stage: build
|
||||
script: "CI/ci-mac-build.sh C++11 release ; CI/ci-mac-test.sh C++11 release"
|
||||
tags:
|
||||
- Apple
|
||||
artifacts:
|
||||
paths:
|
||||
- build-release-cpp11/*.dmg
|
||||
- build-release-cpp11/*.tar.gz
|
||||
|
||||
macos-cpp14-release:
|
||||
stage: build
|
||||
script: "CI/ci-mac-build.sh C++14 release ; CI/ci-mac-test.sh C++14 release"
|
||||
tags:
|
||||
- Apple
|
||||
artifacts:
|
||||
paths:
|
||||
- build-release-cpp14/*.dmg
|
||||
- build-release-cpp14/*.tar.gz
|
||||
206
CI/gitlab-ci/windows.yml
Normal file
206
CI/gitlab-ci/windows.yml
Normal file
@@ -0,0 +1,206 @@
|
||||
# -----------------
|
||||
# Windows tasks
|
||||
# -----------------
|
||||
|
||||
VS2017-64-bit-shared-apps:
|
||||
stage: build
|
||||
variables:
|
||||
BUILD_PLATFORM: "VS2017"
|
||||
ARCHITECTURE: "x64"
|
||||
SHARED: "TRUE"
|
||||
APPS: "ON"
|
||||
script: "CI\\Windows.bat"
|
||||
tags:
|
||||
- VS2017
|
||||
- Qt5101
|
||||
artifacts:
|
||||
paths:
|
||||
- build-release/*.exe
|
||||
|
||||
VS2017-64-bit-static-apps:
|
||||
stage: build
|
||||
variables:
|
||||
BUILD_PLATFORM: "VS2017"
|
||||
ARCHITECTURE: "x64"
|
||||
SHARED: "FALSE"
|
||||
APPS: "ON"
|
||||
script: "CI\\Windows.bat"
|
||||
tags:
|
||||
- VS2017
|
||||
- Qt5101
|
||||
artifacts:
|
||||
paths:
|
||||
- build-release/*.exe
|
||||
|
||||
|
||||
VS2017-64-bit-shared-no-apps:
|
||||
stage: build
|
||||
variables:
|
||||
BUILD_PLATFORM: "VS2017"
|
||||
ARCHITECTURE: "x64"
|
||||
SHARED: "TRUE"
|
||||
APPS: "OFF"
|
||||
script: "CI\\Windows.bat"
|
||||
tags:
|
||||
- VS2017
|
||||
artifacts:
|
||||
paths:
|
||||
- build-release/*.exe
|
||||
|
||||
|
||||
VS2017-32-bit-shared-no-apps:
|
||||
stage: build
|
||||
variables:
|
||||
BUILD_PLATFORM: "VS2017"
|
||||
ARCHITECTURE: "x32"
|
||||
SHARED: "TRUE"
|
||||
APPS: "OFF"
|
||||
script: "CI\\Windows.bat"
|
||||
tags:
|
||||
- VS2017
|
||||
artifacts:
|
||||
paths:
|
||||
- build-release/*.exe
|
||||
|
||||
|
||||
VS2017-64-bit-static-no-apps:
|
||||
stage: build
|
||||
variables:
|
||||
BUILD_PLATFORM: "VS2017"
|
||||
ARCHITECTURE: "x64"
|
||||
SHARED: "FALSE"
|
||||
APPS: "OFF"
|
||||
script: "CI\\Windows.bat"
|
||||
tags:
|
||||
- VS2017
|
||||
artifacts:
|
||||
paths:
|
||||
- build-release/*.exe
|
||||
|
||||
|
||||
VS2017-32-bit-static-no-apps:
|
||||
stage: build
|
||||
variables:
|
||||
BUILD_PLATFORM: "VS2017"
|
||||
ARCHITECTURE: "x32"
|
||||
SHARED: "FALSE"
|
||||
APPS: "OFF"
|
||||
script: "CI\\Windows.bat"
|
||||
tags:
|
||||
- VS2017
|
||||
artifacts:
|
||||
paths:
|
||||
- build-release/*.exe
|
||||
|
||||
VS2015-64-bit-shared-apps:
|
||||
stage: build
|
||||
variables:
|
||||
BUILD_PLATFORM: "VS2015"
|
||||
ARCHITECTURE: "x64"
|
||||
SHARED: "TRUE"
|
||||
APPS: "ON"
|
||||
script: "CI\\Windows.bat"
|
||||
tags:
|
||||
- VS2015
|
||||
artifacts:
|
||||
paths:
|
||||
- build-release/*.exe
|
||||
|
||||
|
||||
VS2015-64-bit-shared-no-apps:
|
||||
stage: build
|
||||
variables:
|
||||
BUILD_PLATFORM: "VS2015"
|
||||
ARCHITECTURE: "x64"
|
||||
SHARED: "TRUE"
|
||||
APPS: "OFF"
|
||||
script: "CI\\Windows.bat"
|
||||
tags:
|
||||
- VS2015
|
||||
artifacts:
|
||||
paths:
|
||||
- build-release/*.exe
|
||||
|
||||
VS2015-32-bit-shared-apps:
|
||||
stage: build
|
||||
variables:
|
||||
BUILD_PLATFORM: "VS2015"
|
||||
ARCHITECTURE: "x32"
|
||||
SHARED: "TRUE"
|
||||
APPS: "ON"
|
||||
script: "CI\\Windows.bat"
|
||||
tags:
|
||||
- VS2015
|
||||
artifacts:
|
||||
paths:
|
||||
- build-release/*.exe
|
||||
|
||||
VS2015-32-bit-shared-no-apps:
|
||||
stage: build
|
||||
variables:
|
||||
BUILD_PLATFORM: "VS2015"
|
||||
ARCHITECTURE: "x32"
|
||||
SHARED: "TRUE"
|
||||
APPS: "OFF"
|
||||
script: "CI\\Windows.bat"
|
||||
tags:
|
||||
- VS2015
|
||||
artifacts:
|
||||
paths:
|
||||
- build-release/*.exe
|
||||
|
||||
VS2015-64-bit-static-apps:
|
||||
stage: build
|
||||
variables:
|
||||
BUILD_PLATFORM: "VS2015"
|
||||
ARCHITECTURE: "x64"
|
||||
SHARED: "FALSE"
|
||||
APPS: "ON"
|
||||
script: "CI\\Windows.bat"
|
||||
tags:
|
||||
- VS2015
|
||||
artifacts:
|
||||
paths:
|
||||
- build-release/*.exe
|
||||
|
||||
VS2015-64-bit-static-no-apps:
|
||||
stage: build
|
||||
variables:
|
||||
BUILD_PLATFORM: "VS2015"
|
||||
ARCHITECTURE: "x64"
|
||||
SHARED: "FALSE"
|
||||
APPS: "OFF"
|
||||
script: "CI\\Windows.bat"
|
||||
tags:
|
||||
- VS2015
|
||||
artifacts:
|
||||
paths:
|
||||
- build-release/*.exe
|
||||
|
||||
VS2015-32-bit-static-apps:
|
||||
stage: build
|
||||
variables:
|
||||
BUILD_PLATFORM: "VS2015"
|
||||
ARCHITECTURE: "x32"
|
||||
SHARED: "FALSE"
|
||||
APPS: "ON"
|
||||
script: "CI\\Windows.bat"
|
||||
tags:
|
||||
- VS2015
|
||||
artifacts:
|
||||
paths:
|
||||
- build-release/*.exe
|
||||
|
||||
VS2015-32-bit-static-no-apps:
|
||||
stage: build
|
||||
variables:
|
||||
BUILD_PLATFORM: "VS2015"
|
||||
ARCHITECTURE: "x32"
|
||||
SHARED: "FALSE"
|
||||
APPS: "OFF"
|
||||
script: "CI\\Windows.bat"
|
||||
tags:
|
||||
- VS2015
|
||||
artifacts:
|
||||
paths:
|
||||
- build-release/*.exe
|
||||
Reference in New Issue
Block a user