diff --git a/build/jenkins/pipelines/design-docs.Jenkinsfile b/build/jenkins/pipelines/design-docs.Jenkinsfile new file mode 100644 index 0000000000..13b210a0f9 --- /dev/null +++ b/build/jenkins/pipelines/design-docs.Jenkinsfile @@ -0,0 +1,54 @@ +/* Copyright (C) 2022 Wildfire Games. + * This file is part of 0 A.D. + * + * 0 A.D. is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * 0 A.D. is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with 0 A.D. If not, see . + */ + +// This pipeline is used to build the design document. + +pipeline { + agent { + node { + label 'LinuxSlave' + } + } + stages { + stage("Checkout") { + steps { + ws("/zpool0/design-docs"){ + git "https://code.wildfiregames.com/source/design.git" + } + } + } + stage("Generate") { + steps { + ws("/zpool0/design-docs"){ + sh "mkdocs build" + } + } + } + stage("Upload") { + steps { + ws("/zpool0/design-docs"){ + sh "rsync -rti --delete-after --progress site/ docs.wildfiregames.com:~/www/design/" + } + } + } + } + post { + always { + step([$class: 'PhabricatorNotifier']) + } + } +} diff --git a/build/jenkins/pipelines/docker-custom.Jenkinsfile b/build/jenkins/pipelines/docker-custom.Jenkinsfile deleted file mode 100644 index 91e44cd3d6..0000000000 --- a/build/jenkins/pipelines/docker-custom.Jenkinsfile +++ /dev/null @@ -1,96 +0,0 @@ -/* Copyright (C) 2021 Wildfire Games. - * This file is part of 0 A.D. - * - * 0 A.D. is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * 0 A.D. is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with 0 A.D. If not, see . - */ - -pipeline { - agent { - node { - label 'LinuxSlave' - customWorkspace '/zpool0/trunk' - } - } - parameters { - string(name: 'DIFF_ID', defaultValue: '', description: '(optional) ID of the Phabricator Differential.') - booleanParam(name: 'NO_PCH', defaultValue: false, description: 'Run this build without PCH.') - booleanParam(name: 'DEBUG', defaultValue: false, description: 'Compile in debug mode.') - } - - stages { - stage("Setup") { - steps { - sh "sudo zfs clone zpool0/gcc7@latest zpool0/custom" - } - } - stage("Apply Differential") { - when { - expression { return params.DIFF_ID != "" } - } - steps { - ws("/zpool0/custom") { - sh "arc patch --diff ${params.DIFF_ID} --force" - } - } - } - stage("PCH clean up") { - when { - expression { return params.NO_PCH } - } - steps { - ws("/zpool0/custom") { - sh "rm -rf build/workspaces/gcc/" - } - } - } - stage("Build") { - steps { - script { - ws("/zpool0/custom") { - // Destroy test *.cpp files as they use (invalid) absolute paths. - sh 'python3 -c \"import glob; print(\\\" \\\".join(glob.glob(\\\"source/**/tests/**.cpp\\\", recursive=True)));\" | xargs rm -v' - // Hack: ignore NVTT - sh "echo '' > libraries/source/nvtt/build.sh" - docker.image("0ad-gcc7:latest").inside { - stage("Update Workspaces") { - if (params.NO_PCH) { - sh "build/workspaces/update-workspaces.sh -j1 --without-pch" - } else { - sh "build/workspaces/update-workspaces.sh -j1" - } - } - stage("Build") { - if (params.DEBUG) { - sh "cd build/workspaces/gcc/ && make -j1 config=debug" - } - sh "cd build/workspaces/gcc/ && make -j1 config=release" - } - stage("Run tests") { - if (params.DEBUG) { - sh "binaries/system/test_dbg" - } - sh "binaries/system/test" - } - } - } - } - } - } - } - post { - always { - sh "sudo zfs destroy zpool0/custom" - } - } -} diff --git a/build/jenkins/pipelines/docker-differential-custom.Jenkinsfile b/build/jenkins/pipelines/docker-differential-custom.Jenkinsfile new file mode 100644 index 0000000000..039b1638c4 --- /dev/null +++ b/build/jenkins/pipelines/docker-differential-custom.Jenkinsfile @@ -0,0 +1,194 @@ +/* Copyright (C) 2022 Wildfire Games. + * This file is part of 0 A.D. + * + * 0 A.D. is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * 0 A.D. is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with 0 A.D. If not, see . + */ + +// This pipeline is used to build patches on various compilers. + +def compilers = [] +if (params["With Clang"]) +{ + compilers = ["clang7"] +} +else +{ + compilers = ["gcc7"] +} + +def patchesMap = compilers.collectEntries { + ["${it}": patch(it)] +} +def patch(compiler) { + return { + stage("Patch: ${compiler}") { + try { + ws("/zpool0/${compiler}") { + sh "arc patch ${params.DIFF_ID} --force" + } + } catch(e) { + sh "sudo zfs rollback zpool0/${compiler}@latest" + throw e + } + } + } +} + +def buildsMap = compilers.collectEntries { + ["${it}": build(it)] +} +def build(compiler) { + return { + stage("Build: ${compiler}") { + try { + ws("/zpool0/${compiler}") { + docker.image("0ad-${compiler}:latest").inside { + script { + def NoAudioOption = "" + def NoPchOption = "" + def GlesOption = "" + def NoLobbyOption = "" + + if (params["No PCH"]) + { + NoPchOption="--without-pch " + } + if (params["OpenGL ES"]) + { + GlesOption="--gles " + } + if (params["No Audio"]) + { + NoAudioOption="--without-audio " + } + if (params["No Lobby"]) + { + NoLobbyOption="--without-lobby " + } + + sh "build/workspaces/update-workspaces.sh ${NoAudioOption}${GlesOption}${NoPchOption}${NoLobbyOption} -j1" + } + test_env="this is test env" + withEnv(["CXXFLAGS=${params.CXXFLAGS}", "CFLAGS=${params.CFLAGS}", "LDFLAGS=${params.LDFLAGS}"]){ + if (params["CXXFLAGS"]) + { + echo "Custom CXXFLAGS: ${env.CXXFLAGS}" + } + if (params["CFLAGS"]) + { + echo "Custom CFLAGS: ${env.CFLAGS}" + } + if (params["Debug Build"]) + { + def debugBuildErrorFile = "builderr-debug-${compiler}.log" + try { + try { + sh ''' + CC_VERSION="$($CC --version | sed -e \'s/version//g\' -e \'s/(.*)//g' -e \'s/\\s//\' | sed 1q)" + CXX_VERSION="$($CXX --version | sed -e \'s/version//g\' -e \'s/(.*)//g' -e \'s/\\s//\' | sed 1q)" + echo "Building pyrogenesis in debug with $CC_VERSION/$CXX_VERSION using 2 jobs..." + ''' + sh "cd build/workspaces/gcc/ && make config=debug clean && make -j2 config=debug 2> ../../../${debugBuildErrorFile}" + } catch(e) { + sh "rm -rf build/workspaces/gcc/obj/test_Debug" + throw e + } + } catch(e) { + throw e + } finally { + archiveArtifacts artifacts: "${debugBuildErrorFile}", fingerprint: true + } + + def debugBuildTestFile = "cxxtest-debug-${compiler}.log" + try { + sh "binaries/system/test_dbg > ${debugBuildTestFile}" + } catch (e) { + echo (message: readFile (file: "${debugBuildTestFile}")) + throw e + } finally { + archiveArtifacts artifacts: "${debugBuildTestFile}", fingerprint: true + } + } + def releaseBuildErrorFile = "builderr-release-${compiler}.log" + try { + try { + sh ''' + CC_VERSION="$($CC --version | sed -e \'s/version//g\' -e \'s/(.*)//g' -e \'s/\\s//\' | sed 1q)" + CXX_VERSION="$($CXX --version | sed -e \'s/version//g\' -e \'s/(.*)//g' -e \'s/\\s//\' | sed 1q)" + echo "Building pyrogenesis in release with $CC_VERSION/$CXX_VERSION using 2 jobs..." + ''' + sh "cd build/workspaces/gcc/ && make clean && make -j2 config=release 2> ../../../${releaseBuildErrorFile}" + } catch(e) { + sh "rm -rf build/workspaces/gcc/obj/test_Release" + throw e + } + } catch(e) { + throw e + } finally { + archiveArtifacts artifacts: "${releaseBuildErrorFile}", fingerprint: true + } + + def releaseBuildTestFile = "cxxtest-release-${compiler}.log" + try { + sh "binaries/system/test > ${releaseBuildTestFile}" + } catch (e) { + echo (message: readFile (file: "${releaseBuildTestFile}")) + throw e + } finally { + archiveArtifacts artifacts: "${releaseBuildTestFile}", fingerprint: true + } + } + } + } + } catch (e) { + throw e + } finally { + sh "sudo zfs rollback zpool0/${compiler}@latest" + } + } + } +} + +pipeline { + agent { + node { + label 'LinuxSlave' + customWorkspace '/zpool0/trunk' + } + } + parameters { + string(name: 'DIFF_ID', defaultValue: '', description: 'ID of the Phabricator Differential.') + booleanParam(name: 'OpenGL ES', defaultValue: false, description: 'Build with --gles.') + booleanParam(name: 'No PCH', defaultValue: false, description: 'Build with --without-pch.') + booleanParam(name: 'No Audio', defaultValue: false, description: 'Build with --without-audio.') + booleanParam(name: 'No Lobby', defaultValue: false, description: 'Build with --without-lobby.') + } + + stages { + stage("Patch") { + when { expression { return !!params.DIFF_ID } } + steps { + script { parallel patchesMap } + } + } + stage("Build") { + options { + timeout(time: 2, unit: 'HOURS') + } + steps { + script { parallel buildsMap } + } + } + } +} diff --git a/build/jenkins/pipelines/docker-differential.Jenkinsfile b/build/jenkins/pipelines/docker-differential.Jenkinsfile index 7dd2983525..a73e82d79a 100644 --- a/build/jenkins/pipelines/docker-differential.Jenkinsfile +++ b/build/jenkins/pipelines/docker-differential.Jenkinsfile @@ -1,4 +1,4 @@ -/* Copyright (C) 2021 Wildfire Games. +/* Copyright (C) 2022 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -17,7 +17,7 @@ // This pipeline is used to build patches on various compilers. -def compilers = ["gcc7"] +def compilers = ["gcc7", "clang7"] def patchesMap = compilers.collectEntries { ["${it}": patch(it)] @@ -46,6 +46,7 @@ def build(compiler) { try { ws("/zpool0/${compiler}") { docker.image("0ad-${compiler}:latest").inside { + sh "build/workspaces/update-workspaces.sh -j1 --jenkins-tests" try { @@ -120,6 +121,7 @@ pipeline { stages { stage("Patch") { + when { expression { return !!params.DIFF_ID } } steps { sh "arc patch --diff ${params.DIFF_ID} --force" script { parallel patchesMap } @@ -157,13 +159,13 @@ pipeline { steps { script { try { - // arc lint outputs an empty file on success - unless there is nothing to lint. + // arc lint outputs an empty file on success - unless there is nothing to lint. // On failure, it'll output the file and a failure error code. // Explicitly checking for the file presence is thus best to detect the linter did run - sh 'arc lint --output jenkins --outfile .phabricator-lint && touch .phabricator-lint' + sh 'arc lint --never-apply-patches --output jenkins --outfile .phabricator-lint && touch .phabricator-lint' } catch (e) { if (!fileExists(".phabricator-lint")) { - sh '''echo '{ "path": "general", code": "Jenkins", "severity": "error", "name": "ci-error", "description": "Error running lint", "bypassChangedLineFiltering": true }' > .phabricator-lint ''' + sh '''echo '{"General":[{"line": 0, "char": 0, "code": "Jenkins", "severity": "error", "name": "ci-error", "description": "Error running lint", "original": null, "replacement": null, "granularity": 1, "locations": [], "bypassChangedLineFiltering": true, "context": null}]}' > .phabricator-lint ''' } } } @@ -172,7 +174,7 @@ pipeline { stage("Data checks") { steps { warnError('CheckRefs.pl script failed!') { - sh "cd source/tools/entity/ && perl checkrefs.pl --check-map-xml --validate-templates 2> data-errors.txt" + sh "cd source/tools/entity/ && python3 checkrefs.py -tax 2> data-errors.txt" } } } diff --git a/build/jenkins/pipelines/docker-docs.Jenkinsfile b/build/jenkins/pipelines/docker-docs.Jenkinsfile index 0aa172081a..9902cd4e85 100644 --- a/build/jenkins/pipelines/docker-docs.Jenkinsfile +++ b/build/jenkins/pipelines/docker-docs.Jenkinsfile @@ -1,73 +1,80 @@ -/* Copyright (C) 2021 Wildfire Games. - * This file is part of 0 A.D. - * - * 0 A.D. is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * 0 A.D. is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with 0 A.D. If not, see . - */ - -// This pipeline is used to build the documentation. - -pipeline { - agent { - node { - label 'LinuxSlave' - } - } - stages { - stage("Setup") { - steps { - sh "sudo zfs clone zpool0/gcc7@latest zpool0/entity-docs" - } - } - stage("Engine docs") { - steps { - ws("/zpool0/entity-docs"){ - sh "cd docs/doxygen/ && doxygen config" - } - } - } - stage("Build") { - steps { - ws("/zpool0/entity-docs"){ - sh "build/workspaces/update-workspaces.sh --disable-atlas --without-tests -j1" - sh "cd build/workspaces/gcc/ && make pyrogenesis -j1" - } - } - } - stage("Entity docs") { - steps { - ws("/zpool0/entity-docs"){ - sh "cd binaries/system/ && ./pyrogenesis -mod=public -dumpSchema" - sh "cd source/tools/entdocs/ && ./build.sh" - } - } - } - stage("Upload") { - steps { - ws("/zpool0/entity-docs"){ - sh "rsync -rti --delete-after --progress docs/doxygen/html/ docs.wildfiregames.com:~/www/pyrogenesis/" - sh "rsync -ti --progress source/tools/entdocs/entity-docs.html docs.wildfiregames.com:~/www/entity-docs/trunk.html" - sh "rsync -ti --progress source/tools/entdocs/entity-docs.css docs.wildfiregames.com:~/www/entity-docs/" - } - } - } - } - post { - always { - ws("/zpool0/trunk") { - sleep 10 - sh "sudo zfs destroy zpool0/entity-docs" - } - } - } -} +/* Copyright (C) 2022 Wildfire Games. + * This file is part of 0 A.D. + * + * 0 A.D. is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * 0 A.D. is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with 0 A.D. If not, see . + */ + +// This pipeline is used to build the documentation. + +pipeline { + agent { + node { + label 'LinuxSlave' + } + } + stages { + stage("Setup") { + steps { + sh "sudo zfs clone zpool0/gcc7@latest zpool0/entity-docs" + } + } + stage("Engine docs") { + steps { + ws("/zpool0/entity-docs"){ + sh "cd docs/doxygen/ && doxygen config" + } + } + } + stage("Build") { + steps { + ws("/zpool0/entity-docs"){ + sh "build/workspaces/update-workspaces.sh --disable-atlas --without-tests -j1" + sh "cd build/workspaces/gcc/ && make pyrogenesis -j1" + } + } + } + stage("Entity docs") { + steps { + ws("/zpool0/entity-docs"){ + sh "cd binaries/system/ && ./pyrogenesis -mod=public -dumpSchema" + sh "cd source/tools/entdocs/ && ./build.sh" + } + } + } + stage("Template Analyzer") { + steps { + ws("/zpool0/entity-docs"){ + sh "cd source/tools/templatesanalyzer/ && python3 unitTables.py" + } + } + } + stage("Upload") { + steps { + ws("/zpool0/entity-docs"){ + sh "rsync -rti --delete-after --progress docs/doxygen/html/ docs.wildfiregames.com:~/www/pyrogenesis/" + sh "rsync -ti --progress source/tools/entdocs/entity-docs.html docs.wildfiregames.com:~/www/entity-docs/trunk.html" + sh "rsync -ti --progress source/tools/templatesanalyzer/unit_summary_table.html docs.wildfiregames.com:~/www/templatesanalyzer/index.html" + } + } + } + } + post { + always { + ws("/zpool0/trunk") { + sleep 10 + sh "sudo zfs destroy zpool0/entity-docs" + } + } + } +} diff --git a/build/jenkins/pipelines/docker-rebuild.Jenkinsfile b/build/jenkins/pipelines/docker-rebuild.Jenkinsfile index fec4bea7e3..e722d1f47d 100644 --- a/build/jenkins/pipelines/docker-rebuild.Jenkinsfile +++ b/build/jenkins/pipelines/docker-rebuild.Jenkinsfile @@ -1,4 +1,4 @@ -/* Copyright (C) 2021 Wildfire Games. +/* Copyright (C) 2022 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -18,7 +18,7 @@ // This pipeline is used to build a clean base from scratch in order to // use ZFS snapshots efficiently. -def compilers = ["gcc7"] +def compilers = ["gcc7", "clang7"] def volumeUpdatesMap = compilers.collectEntries { ["${it}": volumeUpdate(it)] diff --git a/build/jenkins/pipelines/docker-svn-no-pch.Jenkinsfile b/build/jenkins/pipelines/docker-svn-no-pch.Jenkinsfile new file mode 100644 index 0000000000..ae291193ec --- /dev/null +++ b/build/jenkins/pipelines/docker-svn-no-pch.Jenkinsfile @@ -0,0 +1,64 @@ +/* Copyright (C) 2022 Wildfire Games. + * This file is part of 0 A.D. + * + * 0 A.D. is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * 0 A.D. is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with 0 A.D. If not, see . + */ + +// This pipeline is used to build the documentation. + +pipeline { + agent { + node { + label 'LinuxSlave' + } + } + stages { + stage("Setup") { + steps { + sh "sudo zfs clone zpool0/gcc7@latest zpool0/docker-nopch" + } + } + stage("Build") { + steps { + ws("/zpool0/docker-nopch"){ + dir('build/workspaces/'){ + sh "./update-workspaces.sh -j1 --without-pch" + dir('gcc/'){ + sh "make clean" + sh "make -j1" + } + } + } + } + } + stage("Test") { + steps { + ws("/zpool0/docker-nopch"){ + dir('build/workspaces/gcc'){ + // as where it was built else nothing is generated. + sh "../../../binaries/system/test" + } + } + } + } + } + post { + always { + ws("/zpool0/trunk") { + sleep 10 + sh "sudo zfs destroy zpool0/docker-nopch" + } + } + } +} diff --git a/build/jenkins/pipelines/docker-translations.Jenkinsfile b/build/jenkins/pipelines/docker-translations.Jenkinsfile index 7757d11feb..6b7aff768f 100644 --- a/build/jenkins/pipelines/docker-translations.Jenkinsfile +++ b/build/jenkins/pipelines/docker-translations.Jenkinsfile @@ -29,6 +29,11 @@ pipeline { stage("Prepare volume") { steps { sh "sudo zfs clone zpool0/trunk@latest zpool0/translations" + ws('/zpool0/translations') { + sh "svn revert . -R" + sh "svn st | cut -c 9- | xargs rm -rf" + sh "svn up" + } } } @@ -36,7 +41,11 @@ pipeline { steps { ws('/zpool0/translations') { withDockerContainer("0ad-translations:latest") { - sh "sh source/tools/i18n/maintenanceTasks.sh" + sh "python3 --version" + dir("source/tools/i18n/") { + sh "maintenanceTasks.sh" + sh "python3 generateDebugTranslation.py --long" + } } } } @@ -47,7 +56,6 @@ pipeline { ws('/zpool0/translations') { withCredentials([usernamePassword(credentialsId: 'redacted', passwordVariable: 'SVNPASS', usernameVariable: 'SVNUSER')]) { sh "svn relocate --username ${SVNUSER} --password ${SVNPASS} --no-auth-cache https://svn.wildfiregames.com/svn/ps/trunk" - sh "svn add --force binaries/" sh "svn commit --username ${SVNUSER} --password ${SVNPASS} --no-auth-cache --non-interactive -m '[i18n] Updated POT and PO files.'" } } diff --git a/build/jenkins/pipelines/macos-all-bundles.Jenkinsfile b/build/jenkins/pipelines/macos-all-bundles.Jenkinsfile index 4f65f197a6..5ef45b15e2 100644 --- a/build/jenkins/pipelines/macos-all-bundles.Jenkinsfile +++ b/build/jenkins/pipelines/macos-all-bundles.Jenkinsfile @@ -1,4 +1,4 @@ -/* Copyright (C) 2021 Wildfire Games. +/* Copyright (C) 2022 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -29,6 +29,7 @@ pipeline { booleanParam(name: 'ONLY_MOD', defaultValue: true, description: 'Only archive the mod mod.') booleanParam(name: 'DO_GZIP', defaultValue: true, description: 'Create .gz unix tarballs as well as .xz') booleanParam(name: 'FULL_REBUILD', defaultValue: true, description: 'Do a full rebuild (safer for release, slower).') + booleanParam(name: 'WINDOWS_UNIX', defaultValue: true, description: 'Build windows and unix bundles.') } stages { @@ -59,12 +60,12 @@ pipeline { } stage("Compile Mac Executable") { steps { - sh "FULL_REBUILD=${params.FULL_REBUILD} source/tools/dist/build-osx-executable.sh" + sh "JOBS=\"-j\$(sysctl -n hw.ncpu)\" FULL_REBUILD=${params.FULL_REBUILD} source/tools/dist/build-osx-executable.sh" } } stage("Create archive data") { steps { - sh "ONLY_MOD=${params.ONLY_MOD} source/tools/dist/build-archives.sh" + sh "JOBS=\"-j\$(sysctl -n hw.ncpu)\" ONLY_MOD=${params.ONLY_MOD} source/tools/dist/build-archives.sh" } } stage("Create Mac Bundle") { @@ -74,23 +75,26 @@ pipeline { } stage("Create Windows installer & *nix files") { steps { - // The files created by the mac compilation need to be deleted - sh "svn st {binaries/,build/} --no-ignore | cut -c 9- | xargs rm -rfv" - // Hide the libraries folder. - sh "mv libraries/ temp_libraries/" - sh "svn revert libraries/ -R" - // The generated tests use hardcoded paths so they must be deleted as well. - sh 'python3 -c \"import glob; print(\\\" \\\".join(glob.glob(\\\"source/**/tests/**.cpp\\\", recursive=True)));\" | xargs rm -v' - sh "svn revert build/ -R" script { - try { - // Then run the core object. - sh "BUNDLE_VERSION=${params.BUNDLE_VERSION} DO_GZIP=${params.DO_GZIP} source/tools/dist/build-unix-win32.sh" - } finally { - // Un-hide the libraries. - sh "rm -rfv libraries/" - sh "mv temp_libraries/ libraries/" - } + if(params.WINDOWS_UNIX) + { + // The files created by the mac compilation need to be deleted + sh "svn st {binaries/,build/} --no-ignore | cut -c 9- | xargs rm -rfv" + // Hide the libraries folder. + sh "mv libraries/ temp_libraries/" + sh "svn revert libraries/ -R" + // The generated tests use hardcoded paths so they must be deleted as well. + sh 'python3 -c \"import glob; print(\\\" \\\".join(glob.glob(\\\"source/**/tests/**.cpp\\\", recursive=True)));\" | xargs rm -v' + sh "svn revert build/ -R" + try { + // Then run the core object. + sh "JOBS=\"-j\$(sysctl -n hw.ncpu)\" BUNDLE_VERSION=${params.BUNDLE_VERSION} DO_GZIP=${params.DO_GZIP} source/tools/dist/build-unix-win32.sh" + } finally { + // Un-hide the libraries. + sh "rm -rfv libraries/" + sh "mv temp_libraries/ libraries/" + } + } } } } diff --git a/build/jenkins/pipelines/vs2015-autobuild.Jenkinsfile b/build/jenkins/pipelines/vs2015-autobuild.Jenkinsfile index 85b6291619..3dc393e273 100644 --- a/build/jenkins/pipelines/vs2015-autobuild.Jenkinsfile +++ b/build/jenkins/pipelines/vs2015-autobuild.Jenkinsfile @@ -55,12 +55,12 @@ pipeline { stage('Setup workspace') { steps { - bat "del binaries\\system\\pyrogenesis.pdb binaries\\system\\pyrogenesis.exe" - script { + bat "del binaries\\system\\pyrogenesis.pdb binaries\\system\\pyrogenesis.exe" + script { if (env.atlas == 'true') { echo "atlas is enabled" AtlasOption = "--atlas" - AtlasPrj = "/t:AtlasUI" + AtlasPrj = "/t:AtlasUI /t:ActorEditor" bat "(robocopy /MIR C:\\wxwidgets-3.1.4\\lib libraries\\win32\\wxwidgets\\lib) ^& IF %ERRORLEVEL% LEQ 1 exit 0" bat "(robocopy /MIR C:\\wxwidgets-3.1.4\\include libraries\\win32\\wxwidgets\\include) ^& IF %ERRORLEVEL% LEQ 1 exit 0" bat "del binaries\\system\\AtlasUI.dll" @@ -76,23 +76,24 @@ pipeline { bat "del binaries\\system\\Collada.dll" } output = bat(returnStdout: true, script: 'svnversion source -n').trim() - output = output.readLines().drop(1).join("") + output = (output.readLines().drop(1).join("").toInteger() + 1) } bat "cd build\\workspaces && update-workspaces.bat ${AtlasOption} ${GlooxOption} --large-address-aware --jenkins-tests" bat "echo L\"${output}\" > build\\svn_revision\\svn_revision.txt" + bat "echo ${output}" } } stage ('Build') { steps { - bat("cd build\\workspaces\\vs2017 && \"C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\MSBuild\\15.0\\Bin\\MSBuild.exe\" pyrogenesis.sln /m:${jobs} /p:PlatformToolset=v141_xp /t:pyrogenesis ${AtlasPrj} /t:test /p:Configuration=Release") + bat("cd build\\workspaces\\vs2017 && \"C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\MSBuild\\15.0\\Bin\\MSBuild.exe\" pyrogenesis.sln /nologo /p:XPDeprecationWarning=false /p:XPDeprecationWarning=false /m:${jobs} /p:PlatformToolset=v141_xp /t:pyrogenesis ${AtlasPrj} /t:test /p:Configuration=Release") } } stage ('Build debug glooxwrapper') { when { environment name: 'gloox', value: 'true'} steps { - bat("cd build\\workspaces\\vs2017 && \"C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\MSBuild\\15.0\\Bin\\MSBuild.exe\" pyrogenesis.sln /m:${jobs} /p:PlatformToolset=v141_xp /t:glooxwrapper /p:Configuration=Debug") + bat("cd build\\workspaces\\vs2017 && \"C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\MSBuild\\15.0\\Bin\\MSBuild.exe\" pyrogenesis.sln /nologo /p:XPDeprecationWarning=false /p:XPDeprecationWarning=false /m:${jobs} /p:PlatformToolset=v141_xp /t:glooxwrapper /p:Configuration=Debug") } } @@ -110,11 +111,11 @@ pipeline { steps { bat "svn changelist --remove --recursive --cl commit ." script { - if (env.pyrogenesis == 'true') { + if (env.pyrogenesis == 'true') { bat "svn changelist commit binaries\\system\\pyrogenesis.pdb binaries\\system\\pyrogenesis.exe" } if (env.atlas == 'true') { - bat "svn changelist commit binaries\\system\\AtlasUI.dll" + bat "svn changelist commit binaries\\system\\AtlasUI.dll binaries\\system\\ActorEditor.exe" } if (env.collada == 'true') { bat "svn changelist commit binaries\\system\\Collada.dll" diff --git a/build/jenkins/pipelines/vs2015-differential.Jenkinsfile b/build/jenkins/pipelines/vs2015-differential.Jenkinsfile index 0112d01e81..8a27fb72e6 100644 --- a/build/jenkins/pipelines/vs2015-differential.Jenkinsfile +++ b/build/jenkins/pipelines/vs2015-differential.Jenkinsfile @@ -1,4 +1,4 @@ -/* Copyright (C) 2021 Wildfire Games. +/* Copyright (C) 2022 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -58,7 +58,7 @@ pipeline { steps { script { try { - bat "arc patch --diff ${params.DIFF_ID} --force" + bat "arc patch --diff ${params.DIFF_ID} --force" } catch (e) { cleanFiles() bat "arc patch --diff ${params.DIFF_ID} --force" @@ -90,7 +90,7 @@ pipeline { timeout(time: 30) } steps { - catchError { // Debug tests might not work on Windows, see #3753. uncomment just below if they do work. + catchError { script { try { bat 'binaries\\system\\test_dbg.exe > cxxtest_debug.xml' @@ -103,9 +103,11 @@ pipeline { post { failure { echo (message: readFile (file: "cxxtest_debug.xml")) + archiveArtifacts artifacts: "cxxtest_debug.xml", fingerprint: true } always { junit "cxxtest_debug.xml" + archiveArtifacts artifacts: "cxxtest_debug.xml", fingerprint: true } } }