diff --git a/archive-configs/production.yaml b/archive-configs/production.yaml index e48dceb..a084c30 100644 --- a/archive-configs/production.yaml +++ b/archive-configs/production.yaml @@ -1,18 +1,17 @@ client: downloadBaseUrl: "https://build-artifacts.kde.org/production/" uploadHostname: "build-artifacts.kde.org" uploadUsername: "productionclient" uploadDirectory: "/home/productionclient/uploads/" uploadTools: "/home/productionclient/ci-tooling/" server: archiveDirectory: "/srv/production/" cacheLocation: - WindowsMSVCQt5.13: "C:\\CI\\archives\\WindowsMSVCQt5.13\\" WindowsMSVCQt5.14: "C:\\CI\\archives\\WindowsMSVCQt5.14\\" SUSEQt5.12: "/srv/archives/production/SUSEQt5.12/" SUSEQt5.13: "/srv/archives/production/SUSEQt5.13/" FreeBSDQt5.13: "/usr/home/jenkins/archives/production/" AndroidQt5.13: "/srv/archives/production/AndroidQt5.13/" ABIReference: "/srv/archives/production/ABIReference" diff --git a/archive-configs/sandbox.yaml b/archive-configs/sandbox.yaml index 3b1c16b..36591fd 100644 --- a/archive-configs/sandbox.yaml +++ b/archive-configs/sandbox.yaml @@ -1,17 +1,17 @@ client: downloadBaseUrl: "https://build-artifacts.kde.org/sandbox/" uploadHostname: "build-artifacts.kde.org" uploadUsername: "sandboxclient" uploadDirectory: "/home/sandboxclient/uploads/" uploadTools: "/home/sandboxclient/ci-tooling/" server: archiveDirectory: "/srv/sandbox/" cacheLocation: - WindowsMSVCQt5.13: "C:\\CI\\sandbox-archives\\WindowsMSVCQt5.13\\" + WindowsMSVCQt5.14: "C:\\CI\\sandbox-archives\\WindowsMSVCQt5.14\\" SUSEQt5.12: "/srv/archives/sandbox/SUSEQt5.12/" SUSEQt5.13: "/srv/archives/sandbox/SUSEQt5.13/" FreeBSDQt5.13: "/usr/home/jenkins/archives/sandbox/" AndroidQt5.13: "/srv/archives/sandbox/AndroidQt5.13/" ABIReference: "/srv/archives/sandbox/ABIReference/" diff --git a/build-specs/Frameworks/kio-WindowsMSVCQt5.13.yaml b/build-specs/Frameworks/kio-WindowsMSVCQt5.13.yaml deleted file mode 100644 index b235a3b..0000000 --- a/build-specs/Frameworks/kio-WindowsMSVCQt5.13.yaml +++ /dev/null @@ -1,5 +0,0 @@ -kf5-qt5: - run-tests: False - -stable-kf5-qt5: - run-tests: False diff --git a/build-specs/KDevelop/kdev-python-WindowsMSVCQt5.13.yaml b/build-specs/KDevelop/kdev-python-WindowsMSVCQt5.13.yaml deleted file mode 100644 index 5ed7163..0000000 --- a/build-specs/KDevelop/kdev-python-WindowsMSVCQt5.13.yaml +++ /dev/null @@ -1,9 +0,0 @@ -"kf5-qt5": - "cmake-options": '-DPYTHON_EXECUTABLE="C:/Program Files/Python36-32/python.exe"' - "per-test-timeout": 60 - -"stable-kf5-qt5": - "cmake-options": '-DPYTHON_EXECUTABLE="C:/Program Files/Python36-32/python.exe"' - "per-test-timeout": 60 - - diff --git a/build-specs/KDevelop/kdevelop-WindowsMSVCQt5.13.yaml b/build-specs/KDevelop/kdevelop-WindowsMSVCQt5.13.yaml deleted file mode 100644 index 14bf22a..0000000 --- a/build-specs/KDevelop/kdevelop-WindowsMSVCQt5.13.yaml +++ /dev/null @@ -1,7 +0,0 @@ -"kf5-qt5": - "per-test-timeout": 60 - -"stable-kf5-qt5": - "per-test-timeout": 60 - - diff --git a/helpers/check-platform.py b/helpers/check-platform.py index 4eb0acb..fac9368 100644 --- a/helpers/check-platform.py +++ b/helpers/check-platform.py @@ -1,42 +1,41 @@ #!/usr/bin/python3 import os import sys import argparse import subprocess import yaml from helperslib import BuildSpecs, Buildable, CommonUtils, EnvironmentHandler parser = argparse.ArgumentParser(description='Utility to check if metainfo.yaml is lying.', formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument('metainfo', nargs='+', help='metainfo.yaml files', type=str) arguments = parser.parse_args() allPlatforms = { 'SUSEQt5.12': 'Linux', 'SUSEQt5.13': 'Linux', 'FreeBSDQt5.13': 'FreeBSD', - 'WindowsMSVCQt5.13': 'Windows', 'WindowsMSVCQt5.14': 'Windows', None: 'MacOSX', 'AndroidQt5.13': 'Android' } resolver = Buildable.DependencyResolver() resolver.loadProjectsFromTree(os.path.join( CommonUtils.scriptsBaseDirectory(), 'repo-metadata', 'projects' )) resolver.loadProjectsIgnoreRules(os.path.join( CommonUtils.scriptsBaseDirectory(), 'local-metadata', 'project-ignore-rules.yaml' )) for metainfo in arguments.metainfo: metainfoFile = open(metainfo, 'r', encoding='utf-8') read = yaml.safe_load(metainfoFile) platforms = [p['name'] for p in read['platforms']] if 'All' in platforms: platforms = allPlatforms.values() projectname=os.path.split(metainfo)[-2] p = resolver.retrieveProject( projectname ) if not p: # could not find the project for some reason continue ignoredPlatforms = [allPlatforms[ignoredPlatform] for ignoredPlatform in p.ignoredOnPlatforms] for ip in ignoredPlatforms: if ip in platforms: print('%s: %s is disabled in build.kde.org' % (projectname, ip)) diff --git a/local-metadata/product-definitions.yaml b/local-metadata/product-definitions.yaml index 2baa342..bbe8392 100644 --- a/local-metadata/product-definitions.yaml +++ b/local-metadata/product-definitions.yaml @@ -1,303 +1,302 @@ "Frameworks": includes: - repositories: - "frameworks/*" platforms: - "SUSEQt5.12" - "SUSEQt5.13" - - "WindowsMSVCQt5.13" + - "WindowsMSVCQt5.14" - "FreeBSDQt5.13" - repositories: - "frameworks/extra-cmake-modules" - "frameworks/karchive" - "frameworks/attica" - "frameworks/breeze-icons" - "frameworks/kcodecs" - "frameworks/kconfig" - "frameworks/kcoreaddons" - "frameworks/kguiaddons" - "frameworks/kconfig" - "frameworks/ki18n" - "frameworks/kirigami" - "frameworks/kwidgetsaddons" - "frameworks/threadweaver" - "frameworks/kpackage" - "frameworks/kunitconversion" - "frameworks/kimageformats" - "frameworks/kjobwidgets" - "frameworks/kcompletion" - "frameworks/kwindowsystem" - "frameworks/prison" - "frameworks/knotifications" - "frameworks/kholidays" - "frameworks/kitemmodels" - "frameworks/kitemviews" - "frameworks/kplotting" - "frameworks/syndication" - "frameworks/kpeople" platforms: - "AndroidQt5.13" branchGroups: - "kf5-qt5" notifications: - match: "frameworks/*" to: "kde-frameworks-devel@kde.org" failuresOnly: false "Plasma": includes: - repositories: - "kde/workspace/*" - "frameworks/kwindowsystem" - "frameworks/kwayland" - "frameworks/plasma-framework" platforms: - "SUSEQt5.12" - "FreeBSDQt5.13" - repositories: - "kde/workspace/drkonqi" platforms: - - "WindowsMSVCQt5.13" + - "WindowsMSVCQt5.14" branchGroups: - "kf5-qt5" - "stable-kf5-qt5" notifications: - match: "frameworks/*" to: "plasma-devel@kde.org" failuresOnly: true - match: "kde/workspace/*" to: "plasma-devel@kde.org" failuresOnly: true "Applications": includes: - repositories: - "kde/applications/*" - "kde/kdeaccessibility/*" - "kde/kdeadmin/*" - "kde/kdeedu/*" - "kde/kdegames/*" - "kde/kdegraphics/*" - "kde/kdemultimedia/*" - "kde/kdenetwork/*" - "kde/kdesdk/*" - "kde/kdeutils/*" - "kde/kdewebdev/*" - "kde/pim/*" platforms: - "SUSEQt5.12" - "FreeBSDQt5.13" - repositories: - "kde/applications/baloo-widgets" - "kde/applications/dolphin" - "kde/applications/kate" - "kde/kdeedu/kalgebra" - "kde/kdeedu/kbruch" - "kde/kdeedu/kig" - "kde/kdeedu/kmplot" - "kde/kdeedu/kturtle" - "kde/kdeedu/kwordquiz" - "kde/kdeedu/minuet" - "kde/kdeedu/parley" - "kde/kdegraphics/libs/libkexiv2" - "kde/kdegraphics/kdegraphics-mobipocket" - "kde/kdegraphics/kolourpaint" - "kde/kdegraphics/okular" - "kde/kdemultimedia/elisa" - "kde/kdenetwork/kdeconnect-kde" - "kde/kdenetwork/kio-extras" - "kde/kdesdk/umbrello" - "kde/kdeutils/filelight" - "kde/pim/akonadi" - "kde/pim/kcalcore" - "kde/pim/kcalutils" - 'kde/pim/kidentitymanagement' - 'kde/pim/kcontacts' - "kde/pim/kpimtextedit" platforms: - - "WindowsMSVCQt5.13" + - "WindowsMSVCQt5.14" - repositories: - "kde/kdemultimedia/elisa" platforms: - "AndroidQt5.13" branchGroups: - "kf5-qt5" - "stable-kf5-qt5" notifications: - match: "kde/pim/*" to: "kde-pim@kde.org" failuresOnly: true - match: "kde/applications/dolphin" to: "kfm-devel@kde.org" failuresOnly: false - match: "kde/applications/kate" to: "christoph@cullmann.io" failuresOnly: true - match: "kde/applications/konsole" to: "konsole-devel@kde.org" failuresOnly: true - match: "kde/kdeutils/*" to: "kde-utils-devel@kde.org" failuresOnly: false - match: "kde/kdegraphics/okular" to: "okular-devel@kde.org" failuresOnly: false - match: "kde/kdeedu/cantor" to: "alexander.semke@web.de" failuresOnly: false - match: "kde/kdeedu/cantor" to: "warquark@gmail.com" failuresOnly: false - match: "kde/kdemultimedia/kdenlive" to: "kdenlive@kde.org" failuresOnly: true - match: "kde/kdemultimedia/elisa" to: "elisa@kde.org" failuresOnly: false - match: "kde/kdenetwork/kdeconnect-kde" to: "kdeconnect@kde.org" failuresOnly: false "Extragear": includes: - repositories: - "extragear/network/choqok" - "extragear/network/kio-gdrive" - "extragear/office/kbibtex" - "extragear/pim/zanshin" - "extragear/sdk/clazy" - "extragear/utils/kronometer" - "kdereview/rust-qt-binding-generator" platforms: - "SUSEQt5.12" - repositories: - "extragear/base/kwebkitpart" - "extragear/base/latte-dock" - "extragear/base/wacomtablet" - "extragear/edu/gcompris" - "extragear/games/knights" - "extragear/graphics/kgraphviewer" - "extragear/graphics/kphotoalbum" - "extragear/graphics/krita" - "extragear/libs/kuserfeedback" - "extragear/libs/libqaccessibilityclient" - "extragear/libs/pulseaudio-qt" - "extragear/multimedia/amarok" - "extragear/multimedia/kaffeine" - "extragear/network/falkon" - "extragear/network/libktorrent" - "extragear/network/ktorrent" - "extragear/office/tellico" - "extragear/pim/ring-kde" - "extragear/sdk/kdesvn" - "extragear/utils/keurocalc" - "extragear/utils/krusader" - "extragear/utils/kio-stash" - "extragear/utils/kmarkdownwebview" - "extragear/utils/plasma-mycroft" - "extragear/utils/rsibreak" - "kdereview/plasma-active-window-control" - "kdereview/keysmith" - "playground/multimedia/subtitlecomposer" platforms: - "SUSEQt5.12" - "FreeBSDQt5.13" - repositories: - "extragear/base/atcore" - "extragear/network/konversation" - "extragear/edu/labplot" - "extragear/edu/kstars" - "extragear/graphics/digikam" - "extragear/office/alkimia" - "extragear/office/kile" - "extragear/office/kmymoney" - "extragear/office/skrooge" - "extragear/pim/ktimetracker" - "extragear/utils/krename" - "extragear/utils/okteta" - "extragear/utils/kdiff3" - "kdereview/rkward" - "playground/base/peruse" - "playground/graphics/washipad" - "playground/network/ruqola" platforms: - "SUSEQt5.12" - - "WindowsMSVCQt5.13" - "WindowsMSVCQt5.14" - "FreeBSDQt5.13" - repositories: - "playground/base/kirogi" platforms: - "SUSEQt5.13" - "FreeBSDQt5.13" - "AndroidQt5.13" branchGroups: - "kf5-qt5" - "stable-kf5-qt5" notifications: - match: "extragear/utils/kronometer" to: "kde-utils-devel@kde.org" failuresOnly: false - match: "extragear/graphics/digikam" to: "digikam-devel@kde.org" failuresOnly: false - match: "extragear/network/kio-gdrive" to: "kfm-devel@kde.org" failuresOnly: false - match: "extragear/sdk/clazy" to: "smartins@kde.org" failuresOnly: false - match: "extragear/pim/zanshin" to: "zanshin-devel@kde.org" failuresOnly: false - match: "extragear/edu/labplot" to: "stefan.gerlach@uni-konstanz.de" failuresOnly: false - match: "extragear/edu/labplot" to: "alexander.semke@web.de" failuresOnly: false - match: "extragear/edu/kstars" to: "mutlaqja@ikarustech.com" failuresOnly: false - match: "extragear/utils/kdiff3" to: "reeves87@gmail.com" failuresOnly: true - match: "extragear/pim/ktimetracker" to: "aspotashev@gmail.com" failuresOnly: true "KDevelop": includes: - repositories: - "extragear/kdevelop/*" - "playground/devtools/kdev-*" - "playground/devtools/plugins/kdev-*" platforms: - "SUSEQt5.12" - "FreeBSDQt5.13" - - "WindowsMSVCQt5.13" + - "WindowsMSVCQt5.14" branchGroups: - "kf5-qt5" - "stable-kf5-qt5" "Calligra": includes: - repositories: - "calligra/kexi" - "extragear/libs/kdb" - "extragear/libs/kproperty" - "extragear/libs/kreport" - "extragear/graphics/kdiagram" platforms: - "SUSEQt5.12" - "FreeBSDQt5.13" - - "WindowsMSVCQt5.13" + - "WindowsMSVCQt5.14" - repositories: - "calligra/calligra" - "calligra/calligraplan" platforms: - "SUSEQt5.12" - "FreeBSDQt5.13" branchGroups: - "kf5-qt5" - "stable-kf5-qt5" diff --git a/local-metadata/project-ignore-rules.yaml b/local-metadata/project-ignore-rules.yaml index 641adac..2b2525b 100644 --- a/local-metadata/project-ignore-rules.yaml +++ b/local-metadata/project-ignore-rules.yaml @@ -1,78 +1,62 @@ 'SUSEQt5.12': - 'kdesupport/qca' 'SUSEQt5.13': - 'kdesupport/qca' -'WindowsMSVCQt5.13': -- 'kdesupport/polkit-qt-1' -- 'kdesupport/qca' -- 'frameworks/networkmanager-qt' -- 'frameworks/modemmanager-qt' -- 'frameworks/bluez-qt' -- 'frameworks/prison' -- 'frameworks/kdesu' -- 'frameworks/kpty' -- 'frameworks/kwayland' -- 'frameworks/kactivities-stats' -- 'kde/workspace/libksysguard' -- 'kde/kdeedu/marble' -- 'kde/kdenetwork/kaccounts-integration' -- 'extragear/libs/pulseaudio-qt' - 'WindowsMSVCQt5.14': - 'kdesupport/polkit-qt-1' - 'kdesupport/qca' - 'frameworks/networkmanager-qt' - 'frameworks/modemmanager-qt' - 'frameworks/bluez-qt' - 'frameworks/prison' - 'frameworks/kdesu' - 'frameworks/kpty' - 'frameworks/kwayland' - 'frameworks/kactivities-stats' - 'kde/workspace/libksysguard' - 'kde/kdeedu/marble' - 'kde/kdenetwork/kaccounts-integration' - 'extragear/libs/pulseaudio-qt' 'FreeBSDQt5.13': - 'kdesupport/polkit-qt-1' - 'frameworks/networkmanager-qt' - 'frameworks/modemmanager-qt' - 'kde/workspace/plymouth-kcm' - 'kde/workspace/plasma-nm' - 'kde/workspace/powerdevil' - 'kde/workspace/plasma-vault' - 'kde/kdeedu/marble' - 'kde/kdegraphics/libs/libkgeomap' - 'kde/kdenetwork/kio-extras' 'AndroidQt5.13': - 'frameworks/kross' # ld: error: cannot find -lc++ - 'frameworks/polkit-qt-1' # requires glib2 - 'frameworks/kwallet' # requires gpgme - 'frameworks/kactivities' # requires boost - 'frameworks/kactivities-stats' # requires boost - 'frameworks/khtml' # requires kio - 'frameworks/kdelibs4support' # requires kio - 'frameworks/baloo' #kfilemetadata - 'frameworks/modemmanager-qt' - 'frameworks/networkmanager-qt' - 'frameworks/breeze-icons' # shouldn't be installed like we do for xdg, we have an ad-hoc solution in kirigami - 'frameworks/kjs' # looks like we need to switch to clang for this one >> https://github.com/android-ndk/ndk/issues/442 - 'frameworks/kpty' # Doesn't build, didn't investigate: kpty.cpp:587:35: error: 'getsid' was not declared in this scope - 'frameworks/kdesu' # requires kpty - 'frameworks/plasma-framework' # requires kactivities - 'frameworks/krunner' # requires plasma - 'frameworks/kwayland' # requires wayland - 'frameworks/kdoctools' # not very useful for Android - 'frameworks/kjsembed' # requires kjs - 'frameworks/kdesignerplugin' # requires kdoctools - 'frameworks/kdewebkit' # we don't have QtWebKitWidgets on the image - 'kde/kdenetwork/kaccounts-integration' #libaccounts isn't working, this is an integration framework, I don't think it makes sense there # to look into: - 'kde/kdegames/libkdegames' # needs openal - 'kde/kdegraphics/libs/libkexiv2' #has exiv2 external dependency - 'frameworks/kfilemetadata' # FIXME needs #include which can't be found ATM diff --git a/pipeline-templates/Frameworks/WindowsMSVCQt5.13.template b/pipeline-templates/Frameworks/WindowsMSVCQt5.13.template deleted file mode 100644 index 9306163..0000000 --- a/pipeline-templates/Frameworks/WindowsMSVCQt5.13.template +++ /dev/null @@ -1,184 +0,0 @@ -// Provisionally mark the build as successful -currentBuild.result = 'SUCCESS' - -// Request a node to be allocated to us -node( currentPlatform ) { -// We want Timestamps on everything -timestamps { - // We want to catch any errors that occur to allow us to send out notifications (ie. emails) if needed - catchError { - // First Thing: Checkout Sources - stage('Checkout Sources') { - // Make sure we have a clean slate to begin with - deleteDir() - - // This includes any potential install directory - bat """ - if exist "C:\\CI\\Software Installs\\${projectName}" rmdir /s /q "C:\\CI\\Software Installs\\${projectName}" - """ - - // Actual Application Sources - checkout changelog: true, poll: true, scm: [ - $class: 'GitSCM', - branches: [[name: branchToBuild]], - browser: [$class: 'CGit', repoUrl: browserUrl], - extensions: [[$class: 'CloneOption', timeout: 120]], - userRemoteConfigs: [[url: repositoryUrl]] - ] - - // Our CI scripts - checkout changelog: false, poll: false, scm: [ - $class: 'GitSCM', - branches: [[name: 'master']], - extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'ci-tooling/']], - userRemoteConfigs: [[url: 'https://anongit.kde.org/sysadmin/ci-tooling']] - ] - - // Projects metadata and next generation dependency metadata - checkout changelog: false, poll: false, scm: [ - $class: 'GitSCM', - branches: [[name: 'master']], - extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'ci-tooling/repo-metadata/']], - userRemoteConfigs: [[url: 'https://anongit.kde.org/sysadmin/repo-metadata']] - ] - - // Dependency Metadata - checkout changelog: false, poll: false, scm: [ - $class: 'GitSCM', - branches: [[name: 'master']], - extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'ci-tooling/kde-build-metadata/']], - userRemoteConfigs: [[url: 'https://anongit.kde.org/kde-build-metadata']] - ] - - } - - // Now Prepare to Build: Get the dependencies ready - stage('Setup Dependencies') { - // Now we can determine what our dependencies are - // Then update to the latest version of the dependencies available from the master server - // Finally extract all of those dependencies in turn into the given 'installTo' directory - bat """ - python -u ci-tooling/helpers/prepare-dependencies.py --product ${productName} --project ${projectName} --branchGroup ${branchGroup} --environment ${ciEnvironment} --platform ${currentPlatform} --installTo "C:/CI/Software Installs/${projectName}/" - """ - } - - // Now we can configure our build - stage('Configuring Build') { - // This is delegated through a helper script to handle minor special cases like inSourceBuilds, non-CMake build systems, etc - bat """ - call "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Auxiliary/Build/vcvars64.bat" -vcvars_ver=14.16 - set CRAFT_ROOT=C:/Craft/CI-Qt513/windows-msvc2017_64-cl-debug/ - python -u ci-tooling/helpers/configure-build.py --product ${productName} --project ${projectName} --branchGroup ${branchGroup} --platform ${currentPlatform} --installTo "C:/CI/Software Installs/${projectName}/" - """ - } - - // Finally we can build it! (Once again, through a helper) - stage('Compiling') { - // We use a helper here so we can determine the appropriate number of CPUs (-j) to build with - bat """ - call "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Auxiliary/Build/vcvars64.bat" -vcvars_ver=14.16 - set CRAFT_ROOT=C:/Craft/CI-Qt513/windows-msvc2017_64-cl-debug/ - python -u ci-tooling/helpers/compile-build.py --product ${productName} --project ${projectName} --branchGroup ${branchGroup} --platform ${currentPlatform} --usingInstall "C:/CI/Software Installs/${projectName}/" - """ - } - - // Now ensure that it installs.... - stage('Installing') { - // The helper ensures that DESTDIR and INSTALL_ROOT are set to 'divertTo' - // This allows us to capture the install at the next stage for later reuse in the Setup Dependencies step - bat """ - call "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Auxiliary/Build/vcvars64.bat" -vcvars_ver=14.16 - set CRAFT_ROOT=C:/Craft/CI-Qt513/windows-msvc2017_64-cl-debug/ - python -u ci-tooling/helpers/install-build.py --product ${productName} --project ${projectName} --branchGroup ${branchGroup} --platform ${currentPlatform} --installTo "C:/CI/Software Installs/${projectName}/" --divertTo "%WORKSPACE%/install-divert/" - """ - } - - // Now we can run our tests - stage('Running Tests') { - // Run the unit tests for this project - // Tests are run in a basic environment (X, DBus) - bat """ - call "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Auxiliary/Build/vcvars64.bat" -vcvars_ver=14.16 - set CRAFT_ROOT=C:/Craft/CI-Qt513/windows-msvc2017_64-cl-debug/ - python -u ci-tooling/helpers/run-tests.py --product ${productName} --project ${projectName} --branchGroup ${branchGroup} --platform ${currentPlatform} --usingInstall "C:/CI/Software Installs/${projectName}/" - """ - - // Collect our results - junit allowEmptyResults: true, testResults: 'JUnitTestResults.xml' - } - - // Looks like it built okay - let's capture this for later use - // We'll also take the opportunity to extract metadata from CMake used by packagers and api.kde.org - stage('Capturing Installation') { - // First we create a tar archive of the installation which was diverted - // Then we upload a copy of that to the master server and have it publish the new archive - // Finally to save bandwidth our copy of the tar archive is moved to our local cache for reuse on later builds on this node - bat """ - python -u ci-tooling/helpers/capture-install.py --product ${productName} --project ${projectName} --branchGroup ${branchGroup} --environment ${ciEnvironment} --platform ${currentPlatform} --divertedTo "%WORKSPACE%/install-divert/" --installedTo "C:/CI/Software Installs/${projectName}/" - """ - } - - // Final thing to do: some code quality checks - stage('Checking Code Quality') { - - // cppcheck is not supported by Pipeline at the moment, so we don't run that for now - // See https://issues.jenkins-ci.org/browse/JENKINS-35096 - - // Cobertura doesn't support Pipeline either, so no code coverage publishing... - // See https://issues.jenkins-ci.org/browse/JENKINS-30700 - - // Scan the logs and publish a warnings report - warnings consoleParsers: [[parserName: 'MSBuild']], excludePattern: '(C|c):/(Program Files \\(x86\\)|program files \\(x86\\)|Craft|craft)/.*' - - } - - } - - // Let's determine if we need to send out notifications - // What happened in our previous build? - def previousResult = currentBuild.previousBuild?.result - // If our condition has changed or is FAILURE then we want to send an email - if( previousResult != currentBuild.result || currentBuild.result == 'FAILURE' ) { - // Start constructing the list of our recipients - // At this point we can only be either a failure or an unstable build, so notify those who have requested unstable build notifications - def mailTo = [ unstableBuildEmails ] - - // If the build was a solid failure (either now or previously) then notify those who want to know about failures only - if( previousResult == 'FAILURE' || currentBuild.result == 'FAILURE' ) { - // Add them to the list - mailTo << buildFailureEmails - } - - // If someone kicked this job off, they're presumably interested as well - mailTo << emailextrecipients( [[$class: 'RequesterRecipientProvider']] ) - // We always want to notify our dashboard as well - mailTo << "kde-dashboard@kde.org" - - // Finalise the list of recipients - mailTo = mailTo.join(',') - - // Send the email now - emailext( - to: mailTo, - body: '${JELLY_SCRIPT,template="html_gmail"}', - mimeType: 'text/html', - subject: 'KDE CI: ${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!', - attachLog: false - ) - } - - // IRC Notifications are currently not supported by Pipeline - // See https://issues.jenkins-ci.org/browse/JENKINS-33922 - // We can probably workaround this using Pursuivant and the emails Jenkins sends out - // This would allow subscribing to build notifications for IRC channels in much the same way one subscribes for Commits and Bugzilla changes - - // As the Windows Slaves are permanent ones, we erase the Workspace as the last thing we do - deleteDir() - - // Cleanup the installation directory too - bat """ - if exist "C:\\CI\\Software Installs\\${projectName}" rmdir /s /q "C:\\CI\\Software Installs\\${projectName}" - """ - -} -} diff --git a/pipeline-templates/WindowsMSVCQt5.13.template b/pipeline-templates/WindowsMSVCQt5.13.template deleted file mode 100644 index 086cae9..0000000 --- a/pipeline-templates/WindowsMSVCQt5.13.template +++ /dev/null @@ -1,184 +0,0 @@ -// Provisionally mark the build as successful -currentBuild.result = 'SUCCESS' - -// Request a node to be allocated to us -node( currentPlatform ) { -// We want Timestamps on everything -timestamps { - // We want to catch any errors that occur to allow us to send out notifications (ie. emails) if needed - catchError { - // First Thing: Checkout Sources - stage('Checkout Sources') { - // Make sure we have a clean slate to begin with - deleteDir() - - // This includes any potential install directory - bat """ - if exist "C:\\CI\\Software Installs\\${projectName}" rmdir /s /q "C:\\CI\\Software Installs\\${projectName}" - """ - - // Actual Application Sources - checkout changelog: true, poll: true, scm: [ - $class: 'GitSCM', - branches: [[name: branchToBuild]], - browser: [$class: 'CGit', repoUrl: browserUrl], - extensions: [[$class: 'CloneOption', timeout: 120]], - userRemoteConfigs: [[url: repositoryUrl]] - ] - - // Our CI scripts - checkout changelog: false, poll: false, scm: [ - $class: 'GitSCM', - branches: [[name: 'master']], - extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'ci-tooling/']], - userRemoteConfigs: [[url: 'https://anongit.kde.org/sysadmin/ci-tooling']] - ] - - // Projects metadata and next generation dependency metadata - checkout changelog: false, poll: false, scm: [ - $class: 'GitSCM', - branches: [[name: 'master']], - extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'ci-tooling/repo-metadata/']], - userRemoteConfigs: [[url: 'https://anongit.kde.org/sysadmin/repo-metadata']] - ] - - // Dependency Metadata - checkout changelog: false, poll: false, scm: [ - $class: 'GitSCM', - branches: [[name: 'master']], - extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'ci-tooling/kde-build-metadata/']], - userRemoteConfigs: [[url: 'https://anongit.kde.org/kde-build-metadata']] - ] - - } - - // Now Prepare to Build: Get the dependencies ready - stage('Setup Dependencies') { - // Now we can determine what our dependencies are - // Then update to the latest version of the dependencies available from the master server - // Finally extract all of those dependencies in turn into the given 'installTo' directory - bat """ - python -u ci-tooling/helpers/prepare-dependencies.py --product ${productName} --project ${projectName} --branchGroup ${branchGroup} --environment ${ciEnvironment} --platform ${currentPlatform} --installTo "C:/CI/Software Installs/${projectName}/" - """ - } - - // Now we can configure our build - stage('Configuring Build') { - // This is delegated through a helper script to handle minor special cases like inSourceBuilds, non-CMake build systems, etc - bat """ - call "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Auxiliary/Build/vcvars64.bat" -vcvars_ver=14.16 - set CRAFT_ROOT=C:/Craft/CI-Qt513/windows-msvc2017_64-cl-debug/ - python -u ci-tooling/helpers/configure-build.py --product ${productName} --project ${projectName} --branchGroup ${branchGroup} --platform ${currentPlatform} --installTo "C:/CI/Software Installs/${projectName}/" - """ - } - - // Finally we can build it! (Once again, through a helper) - stage('Compiling') { - // We use a helper here so we can determine the appropriate number of CPUs (-j) to build with - bat """ - call "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Auxiliary/Build/vcvars64.bat" -vcvars_ver=14.16 - set CRAFT_ROOT=C:/Craft/CI-Qt513/windows-msvc2017_64-cl-debug/ - python -u ci-tooling/helpers/compile-build.py --product ${productName} --project ${projectName} --branchGroup ${branchGroup} --platform ${currentPlatform} --usingInstall "C:/CI/Software Installs/${projectName}/" - """ - } - - // Now ensure that it installs.... - stage('Installing') { - // The helper ensures that DESTDIR and INSTALL_ROOT are set to 'divertTo' - // This allows us to capture the install at the next stage for later reuse in the Setup Dependencies step - bat """ - call "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Auxiliary/Build/vcvars64.bat" -vcvars_ver=14.16 - set CRAFT_ROOT=C:/Craft/CI-Qt513/windows-msvc2017_64-cl-debug/ - python -u ci-tooling/helpers/install-build.py --product ${productName} --project ${projectName} --branchGroup ${branchGroup} --platform ${currentPlatform} --installTo "C:/CI/Software Installs/${projectName}/" --divertTo "%WORKSPACE%/install-divert/" - """ - } - - // Looks like it built okay - let's capture this for later use - // We'll also take the opportunity to extract metadata from CMake used by packagers and api.kde.org - stage('Capturing Installation') { - // First we create a tar archive of the installation which was diverted - // Then we upload a copy of that to the master server and have it publish the new archive - // Finally to save bandwidth our copy of the tar archive is moved to our local cache for reuse on later builds on this node - bat """ - python -u ci-tooling/helpers/capture-install.py --product ${productName} --project ${projectName} --branchGroup ${branchGroup} --environment ${ciEnvironment} --platform ${currentPlatform} --divertedTo "%WORKSPACE%/install-divert/" --installedTo "C:/CI/Software Installs/${projectName}/" - """ - } - - // Now we can run our tests - stage('Running Tests') { - // Run the unit tests for this project - // Tests are run in a basic environment (X, DBus) - bat """ - call "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Auxiliary/Build/vcvars64.bat" -vcvars_ver=14.16 - set CRAFT_ROOT=C:/Craft/CI-Qt513/windows-msvc2017_64-cl-debug/ - python -u ci-tooling/helpers/run-tests.py --product ${productName} --project ${projectName} --branchGroup ${branchGroup} --platform ${currentPlatform} --usingInstall "C:/CI/Software Installs/${projectName}/" - """ - - // Collect our results - junit allowEmptyResults: true, testResults: 'JUnitTestResults.xml' - } - - // Final thing to do: some code quality checks - stage('Checking Code Quality') { - - // cppcheck is not supported by Pipeline at the moment, so we don't run that for now - // See https://issues.jenkins-ci.org/browse/JENKINS-35096 - - // Cobertura doesn't support Pipeline either, so no code coverage publishing... - // See https://issues.jenkins-ci.org/browse/JENKINS-30700 - - // Scan the logs and publish a warnings report - warnings consoleParsers: [[parserName: 'MSBuild']], excludePattern: '(C|c):/(Program Files \\(x86\\)|program files \\(x86\\)|Craft|craft)/.*' - - } - - } - - // Let's determine if we need to send out notifications - // What happened in our previous build? - def previousResult = currentBuild.previousBuild?.result - // If our condition has changed or is FAILURE then we want to send an email - if( previousResult != currentBuild.result || currentBuild.result == 'FAILURE' ) { - // Start constructing the list of our recipients - // At this point we can only be either a failure or an unstable build, so notify those who have requested unstable build notifications - def mailTo = [ unstableBuildEmails ] - - // If the build was a solid failure (either now or previously) then notify those who want to know about failures only - if( previousResult == 'FAILURE' || currentBuild.result == 'FAILURE' ) { - // Add them to the list - mailTo << buildFailureEmails - } - - // If someone kicked this job off, they're presumably interested as well - mailTo << emailextrecipients( [[$class: 'RequesterRecipientProvider']] ) - // We always want to notify our dashboard as well - mailTo << "kde-dashboard@kde.org" - - // Finalise the list of recipients - mailTo = mailTo.join(',') - - // Send the email now - emailext( - to: mailTo, - body: '${JELLY_SCRIPT,template="html_gmail"}', - mimeType: 'text/html', - subject: 'KDE CI: ${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!', - attachLog: false - ) - } - - // IRC Notifications are currently not supported by Pipeline - // See https://issues.jenkins-ci.org/browse/JENKINS-33922 - // We can probably workaround this using Pursuivant and the emails Jenkins sends out - // This would allow subscribing to build notifications for IRC channels in much the same way one subscribes for Commits and Bugzilla changes - - // As the Windows Slaves are permanent ones, we erase the Workspace as the last thing we do - deleteDir() - - // Cleanup the installation directory too - bat """ - if exist "C:\\CI\\Software Installs\\${projectName}" rmdir /s /q "C:\\CI\\Software Installs\\${projectName}" - """ - -} -} diff --git a/pipeline-templates/dependency-build/WindowsMSVCQt5.13.template b/pipeline-templates/dependency-build/WindowsMSVCQt5.13.template deleted file mode 100644 index bd42908..0000000 --- a/pipeline-templates/dependency-build/WindowsMSVCQt5.13.template +++ /dev/null @@ -1,100 +0,0 @@ -// Request a node to be allocated to us -node( currentPlatform ) { -// We want Timestamps on everything -timestamps { - -// For Windows we need to help keep the path short otherwise builds might trip up due to path length limitation -// This isn't a concern for most jobs, but the Dependency Build jobs get bitten by this quite badly due to $BASEDIR/Administration/Dependency Build.... -ws('C:/CI/DepBuild/') { - - // We want to catch any errors that occur to allow us to send out notifications (ie. emails) if needed - catchError { - - // First Thing: Checkout Sources - stage('Checkout Sources') { - // Make sure we have a clean slate to begin with - deleteDir() - - // This includes any potential install directory - bat """ - if exist "C:\\CI\\Software Installs\\Dependencies" rmdir /s /q "C:\\CI\\Software Installs\\Dependencies" - """ - - // Our CI scripts - checkout changelog: false, poll: false, scm: [ - $class: 'GitSCM', - branches: [[name: 'master']], - extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'ci-tooling/']], - userRemoteConfigs: [[url: 'https://anongit.kde.org/sysadmin/ci-tooling']] - ] - - // Projects metadata and next generation dependency metadata - checkout changelog: false, poll: false, scm: [ - $class: 'GitSCM', - branches: [[name: 'master']], - extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'ci-tooling/repo-metadata/']], - userRemoteConfigs: [[url: 'https://anongit.kde.org/sysadmin/repo-metadata']] - ] - - // Dependency Metadata - checkout changelog: false, poll: false, scm: [ - $class: 'GitSCM', - branches: [[name: 'master']], - extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'ci-tooling/kde-build-metadata/']], - userRemoteConfigs: [[url: 'https://anongit.kde.org/kde-build-metadata']] - ] - - } - - // Now we can build the dependencies of this product - stage('Build Product Dependencies') { - // This script will do the following: - // 1) Determine what is in this Product - // 2) Determine what those repositories depend on - // 3) Determine what dependencies are outside of this Product - // 4) Sort those dependencies into an appropriate order to build them - // 5) Checkout, Configure, Compile, Install and Capture the Installation each of those dependencies in turn - // We can't do this as Pipeline steps unfortunately (at least not easily) - // Tests and Other Quality Tests won't be run during this process - // The results of this process are only intended to be used as part of the base of this Product, so don't need testing - bat """ - call "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Auxiliary/Build/vcvars64.bat" -vcvars_ver=14.16 - set CRAFT_ROOT=C:/Craft/CI-Qt513/windows-msvc2017_64-cl-debug/ - python -u ci-tooling/helpers/build-product-dependencies.py --product ${productName} --branchGroup ${branchGroup} --environment ${ciEnvironment} --platform ${currentPlatform} --installTo "C:/CI/Software Installs/Dependencies/" - """ - } - - } - - // As the Windows Slaves are permanent ones, we erase the Workspace as the last thing we do - deleteDir() - - // This includes any potential install directory - bat """ - if exist "C:\\CI\\Software Installs\\Dependencies" rmdir /s /q "C:\\CI\\Software Installs\\Dependencies" - """ - - // Let's determine if we need to send out notifications - // What happened in our previous build? - def previousResult = currentBuild.previousBuild?.result - // If our condition has changed, is FAILURE or UNSTABLE then we want to send an email - if( previousResult != currentBuild.result || currentBuild.result == 'FAILURE' || currentBuild.result == 'UNSTABLE' ) { - // Construct the list of our recipients - these people always want to be notified about Dependency Build jobs - def mailTo = [] - // If someone kicked this job off, they're presumably interested as well - mailTo << emailextrecipients( [[$class: 'RequesterRecipientProvider']] ) - // Finalise the list of recipients - mailTo = mailTo.join(',') - - // Send the email now - emailext( - to: mailTo, - body: '${JELLY_SCRIPT,template="html_gmail"}', - mimeType: 'text/html', - subject: 'KDE CI: ${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!', - attachLog: false - ) - } -} -} -}