diff --git a/craft-cache/devel-pipelines/linux.pipeline b/craft-cache/devel-pipelines/linux.pipeline index c64df7f..a9edd79 100644 --- a/craft-cache/devel-pipelines/linux.pipeline +++ b/craft-cache/devel-pipelines/linux.pipeline @@ -1,51 +1,54 @@ +// Where will the craftmaster configuration be found (relative to the working directory that is)? +def craftmasterConfigDir = "binary-factory-tooling/craft/configs/master/" + // Request a node to be allocated to us node( "Ubuntu1604Craft" ) { // 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 we want to make sure Craft is ready to go stage('Preparing Craft') { // Grab our tooling which we will need in a few moments checkout changelog: false, poll: false, scm: [ $class: 'GitSCM', branches: [[name: 'master']], extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'bf-tooling/']], userRemoteConfigs: [[url: 'https://anongit.kde.org/sysadmin/binary-factory-tooling']] ] // We are also reliant on the CI System Tooling for parts of this, so grab it too 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']] ] // Make sure that Craftmaster is ready to go sh """ python3 "$WORKSPACE/bf-tooling/craft/checkout-repository.py" --repository "git://anongit.kde.org/craftmaster" --into ~/Craft/BinaryCache/ """ } // Now that is done, it's time to rebuild the Craft Cache! stage('Build Craft Cache') { sh """ - cd ~/Craft/BinaryCache/craftmaster/ - python3.6 CraftMaster.py --config config/CraftBinaryCache.ini --target ${craftPlatform} --variables CreateCache=True UseCache=True -c -i craft - python3.6 CraftMaster.py --config config/CraftBinaryCache.ini --target ${craftPlatform} --variables CreateCache=True UseCache=True -c --option "/.buildTests=False" --option "[ContinuousIntegration]ClearBuildFolder=False" --list-file config/BinaryCachePackages.list + cd ~/Craft/BinaryCache/ + python3.6 craftmaster/CraftMaster.py --config ${craftmasterConfigDir}/CraftBinaryCache.ini --target ${craftPlatform} --variables CreateCache=True UseCache=True -c -i craft + python3.6 craftmaster/CraftMaster.py --config ${craftmasterConfigDir}/CraftBinaryCache.ini --target ${craftPlatform} --variables CreateCache=True UseCache=True -c --option "/.buildTests=False" --option "[ContinuousIntegration]ClearBuildFolder=False" --list-file ${craftmasterConfigDir}/BinaryCachePackages.list """ } } // And finally, we'll upload it to the master server stage('Publish Craft Cache') { sh """ cd "$WORKSPACE/ci-tooling/" python3 helpers/sftp-directory-mirror.py --source ~/Craft/BinaryCache/cache/ --destination /srv/archives/files/craft/master/ --server racnoss.kde.org --username craft """ } } } diff --git a/craft-cache/devel-pipelines/macos.pipeline b/craft-cache/devel-pipelines/macos.pipeline index b676391..a0214b2 100644 --- a/craft-cache/devel-pipelines/macos.pipeline +++ b/craft-cache/devel-pipelines/macos.pipeline @@ -1,68 +1,72 @@ +// Where will the craftmaster configuration be found (relative to the working directory that is)? +def craftmasterConfigDir = "binary-factory-tooling/craft/configs/master/" + // Request a node to be allocated to us node( "macOS" ) { // 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 we want to make sure Craft is ready to go stage('Preparing Craft') { // Make sure we start with a clean slate deleteDir() // Grab our tooling which we will need in a few moments checkout changelog: false, poll: false, scm: [ $class: 'GitSCM', branches: [[name: 'master']], extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'bf-tooling/']], userRemoteConfigs: [[url: 'https://anongit.kde.org/sysadmin/binary-factory-tooling']] ] // We are also reliant on the CI System Tooling for parts of this, so grab it too 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']] ] // Make sure that Craftmaster is ready to go sh """ /usr/local/bin/python3 "$WORKSPACE/bf-tooling/craft/checkout-repository.py" --repository "git://anongit.kde.org/craftmaster" --into ~/Craft/BinaryCache/ + /usr/local/bin/python3 "$WORKSPACE/bf-tooling/craft/checkout-repository.py" --repository "git://anongit.kde.org/sysadmin/binary-factory-tooling" --into ~/Craft/BinaryCache/ """ } // Now that is done, it's time to rebuild the Craft Cache! stage('Build Craft Cache') { sh """ - cd ~/Craft/BinaryCache/craftmaster/ - /usr/local/bin/python3 Craftmaster.py --config config/CraftBinaryCache.ini --target ${craftPlatform} --variables CreateCache=True UseCache=True -c -i craft - /usr/local/bin/python3 Craftmaster.py --config config/CraftBinaryCache.ini --target ${craftPlatform} --variables CreateCache=True UseCache=True -c --option "/.buildTests=False" --option "[ContinuousIntegration]ClearBuildFolder=False" --list-file config/BinaryCachePackages.list + cd ~/Craft/BinaryCache/ + /usr/local/bin/python3 craftmaster/Craftmaster.py --config ${craftmasterConfigDir}/CraftBinaryCache.ini --target ${craftPlatform} --variables CreateCache=True UseCache=True -c -i craft + /usr/local/bin/python3 craftmaster/Craftmaster.py --config ${craftmasterConfigDir}/CraftBinaryCache.ini --target ${craftPlatform} --variables CreateCache=True UseCache=True -c --option "/.buildTests=False" --option "[ContinuousIntegration]ClearBuildFolder=False" --list-file ${craftmasterConfigDir}/BinaryCachePackages.list """ } } // We need to catch errors here to ensure that the cleanup always runs, even if the upload fails // While this is a bit wasteful it at least determines that errors in the publishing process leave a builder with a very full disk! catchError { // And finally, we'll upload it to the master server stage('Publish Craft Cache') { sh """ cd "$WORKSPACE/ci-tooling/" /usr/local/bin/python3 helpers/sftp-directory-mirror.py --source ~/Craft/BinaryCache/cache/ --destination /srv/archives/files/craft/master/ --server racnoss.kde.org --username craft """ } } // Then we can cleanup everything we did stage('Cleaning Up') { sh """ rm -rf ~/Craft/BinaryCache/ """ } // As the macOS Slaves are permanent ones, we erase the Workspace as the last thing we do deleteDir() } } diff --git a/craft-cache/devel-pipelines/windows.pipeline b/craft-cache/devel-pipelines/windows.pipeline index c8fff0c..df35696 100644 --- a/craft-cache/devel-pipelines/windows.pipeline +++ b/craft-cache/devel-pipelines/windows.pipeline @@ -1,68 +1,72 @@ +// Where will the craftmaster configuration be found (relative to the working directory that is)? +def craftmasterConfigDir = "binary-factory-tooling/craft/configs/master/" + // Request a node to be allocated to us node( "WindowsMSVC" ) { // 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 we want to make sure Craft is ready to go stage('Preparing Craft') { // Make sure we start with a clean slate deleteDir() // Grab our tooling which we will need in a few moments checkout changelog: false, poll: false, scm: [ $class: 'GitSCM', branches: [[name: 'master']], extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'bf-tooling/']], userRemoteConfigs: [[url: 'https://anongit.kde.org/sysadmin/binary-factory-tooling']] ] // We are also reliant on the CI System Tooling for parts of this, so grab it too 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']] ] // Make sure that Craftmaster is ready to go bat """ python "%WORKSPACE%\\bf-tooling\\craft\\checkout-repository.py" --repository "git://anongit.kde.org/craftmaster" --into "C:/Craft/BinaryCache/" + python "%WORKSPACE%\\bf-tooling\\craft\\checkout-repository.py" --repository "git://anongit.kde.org/sysadmin/binary-factory-tooling" --into "C:/Craft/BinaryCache/" """ } // Now that is done, it's time to rebuild the Craft Cache! stage('Build Craft Cache') { bat """ - cd C:/Craft/BinaryCache/craftmaster/ - python Craftmaster.py --config config/CraftBinaryCache.ini --target ${craftPlatform} --variables CreateCache=True UseCache=True -c -i craft - python Craftmaster.py --config config/CraftBinaryCache.ini --target ${craftPlatform} --variables CreateCache=True UseCache=True -c --option "/.buildTests=False" --option "[ContinuousIntegration]ClearBuildFolder=False" --list-file config/BinaryCachePackages.list + cd C:/Craft/BinaryCache/ + python craftmaster/Craftmaster.py --config ${craftmasterConfigDir}/CraftBinaryCache.ini --target ${craftPlatform} --variables CreateCache=True UseCache=True -c -i craft + python craftmaster/Craftmaster.py --config ${craftmasterConfigDir}/CraftBinaryCache.ini --target ${craftPlatform} --variables CreateCache=True UseCache=True -c --option "/.buildTests=False" --option "[ContinuousIntegration]ClearBuildFolder=False" --list-file ${craftmasterConfigDir}/BinaryCachePackages.list """ } } // We need to catch errors here to ensure that the cleanup always runs, even if the upload fails // While this is a bit wasteful it at least determines that errors in the publishing process leave a builder with a very full disk! catchError { // Upload it to the master server stage('Publish Craft Cache') { bat """ cd "%WORKSPACE%\\ci-tooling" python helpers/sftp-directory-mirror.py --source C:/Craft/BinaryCache/cache/ --destination /srv/archives/files/craft/master/ --server racnoss.kde.org --username craft """ } } // Then we can cleanup everything we did // It is critical this always happens, otherwise builders can run out of disk space! stage('Cleaning Up') { bat """ rmdir /s /q C:\\Craft\\BinaryCache\\ """ } // As the Windows Slaves are permanent ones, we erase the Workspace as the last thing we do deleteDir() } } diff --git a/craft-cache/stable-pipelines/linux.pipeline b/craft-cache/stable-pipelines/linux.pipeline index bd8a02d..1ab1236 100644 --- a/craft-cache/stable-pipelines/linux.pipeline +++ b/craft-cache/stable-pipelines/linux.pipeline @@ -1,51 +1,55 @@ +// Where will the craftmaster configuration be found (relative to the working directory that is)? +def craftmasterConfigDir = "binary-factory-tooling/craft/configs/2018.12/" + // Request a node to be allocated to us node( "Ubuntu1604Craft" ) { // 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 we want to make sure Craft is ready to go stage('Preparing Craft') { // Grab our tooling which we will need in a few moments checkout changelog: false, poll: false, scm: [ $class: 'GitSCM', branches: [[name: 'master']], extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'bf-tooling/']], userRemoteConfigs: [[url: 'https://anongit.kde.org/sysadmin/binary-factory-tooling']] ] // We are also reliant on the CI System Tooling for parts of this, so grab it too 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']] ] // Make sure that Craftmaster is ready to go sh """ - python3 "$WORKSPACE/bf-tooling/craft/checkout-repository.py" --repository "git://anongit.kde.org/craftmaster" --into ~/Craft/BinaryCache/ --branch stable + python3 "$WORKSPACE/bf-tooling/craft/checkout-repository.py" --repository "git://anongit.kde.org/craftmaster" --into ~/Craft/BinaryCache/ + python3 "$WORKSPACE/bf-tooling/craft/checkout-repository.py" --repository "git://anongit.kde.org/sysadmin/binary-factory-tooling" --into ~/Craft/BinaryCache/ """ } // Now that is done, it's time to rebuild the Craft Cache! stage('Build Craft Cache') { sh """ - cd ~/Craft/BinaryCache/craftmaster/ - python3.6 CraftMaster.py --config config/CraftBinaryCache.ini --target ${craftPlatform} --variables CreateCache=True UseCache=True -c -i craft - python3.6 CraftMaster.py --config config/CraftBinaryCache.ini --target ${craftPlatform} --variables CreateCache=True UseCache=True -c --option "/.buildTests=False" --list-file config/BinaryCachePackages.list + cd ~/Craft/BinaryCache/ + python3.6 craftmaster/CraftMaster.py --config ${craftmasterConfigDir}/CraftBinaryCache.ini --target ${craftPlatform} --variables CreateCache=True UseCache=True -c -i craft + python3.6 craftmaster/CraftMaster.py --config ${craftmasterConfigDir}/CraftBinaryCache.ini --target ${craftPlatform} --variables CreateCache=True UseCache=True -c --option "/.buildTests=False" --list-file ${craftmasterConfigDir}/BinaryCachePackages.list """ } } // And finally, we'll upload it to the master server stage('Publish Craft Cache') { sh """ cd "$WORKSPACE/ci-tooling/" python3 helpers/sftp-directory-mirror.py --source ~/Craft/BinaryCache/cache/ --destination /srv/archives/files/craft/master/ --server racnoss.kde.org --username craft """ } } } diff --git a/craft-cache/stable-pipelines/macos.pipeline b/craft-cache/stable-pipelines/macos.pipeline index be7e1bc..ea625e4 100644 --- a/craft-cache/stable-pipelines/macos.pipeline +++ b/craft-cache/stable-pipelines/macos.pipeline @@ -1,68 +1,72 @@ +// Where will the craftmaster configuration be found (relative to the working directory that is)? +def craftmasterConfigDir = "binary-factory-tooling/craft/configs/2018.12/" + // Request a node to be allocated to us node( "macOS" ) { // 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 we want to make sure Craft is ready to go stage('Preparing Craft') { // Make sure we start with a clean slate deleteDir() // Grab our tooling which we will need in a few moments checkout changelog: false, poll: false, scm: [ $class: 'GitSCM', branches: [[name: 'master']], extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'bf-tooling/']], userRemoteConfigs: [[url: 'https://anongit.kde.org/sysadmin/binary-factory-tooling']] ] // We are also reliant on the CI System Tooling for parts of this, so grab it too 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']] ] // Make sure that Craftmaster is ready to go sh """ - /usr/local/bin/python3 "$WORKSPACE/bf-tooling/craft/checkout-repository.py" --repository "git://anongit.kde.org/craftmaster" --into ~/Craft/BinaryCache/ --branch stable + /usr/local/bin/python3 "$WORKSPACE/bf-tooling/craft/checkout-repository.py" --repository "git://anongit.kde.org/craftmaster" --into ~/Craft/BinaryCache/ + /usr/local/bin/python3 "$WORKSPACE/bf-tooling/craft/checkout-repository.py" --repository "git://anongit.kde.org/sysadmin/binary-factory-tooling" --into ~/Craft/BinaryCache/ """ } // Now that is done, it's time to rebuild the Craft Cache! stage('Build Craft Cache') { sh """ - cd ~/Craft/BinaryCache/craftmaster/ - /usr/local/bin/python3 Craftmaster.py --config config/CraftBinaryCache.ini --target ${craftPlatform} --variables CreateCache=True UseCache=True -c -i craft - /usr/local/bin/python3 Craftmaster.py --config config/CraftBinaryCache.ini --target ${craftPlatform} --variables CreateCache=True UseCache=True -c --option "/.buildTests=False" --list-file config/BinaryCachePackages.list + cd ~/Craft/BinaryCache/ + /usr/local/bin/python3 craftmaster/Craftmaster.py --config ${craftmasterConfigDir}/CraftBinaryCache.ini --target ${craftPlatform} --variables CreateCache=True UseCache=True -c -i craft + /usr/local/bin/python3 craftmaster/Craftmaster.py --config ${craftmasterConfigDir}/CraftBinaryCache.ini --target ${craftPlatform} --variables CreateCache=True UseCache=True -c --option "/.buildTests=False" --list-file ${craftmasterConfigDir}/BinaryCachePackages.list """ } } // We need to catch errors here to ensure that the cleanup always runs, even if the upload fails // While this is a bit wasteful it at least determines that errors in the publishing process leave a builder with a very full disk! catchError { // And finally, we'll upload it to the master server stage('Publish Craft Cache') { sh """ cd "$WORKSPACE/ci-tooling/" /usr/local/bin/python3 helpers/sftp-directory-mirror.py --source ~/Craft/BinaryCache/cache/ --destination /srv/archives/files/craft/master/ --server racnoss.kde.org --username craft """ } } // Then we can cleanup everything we did stage('Cleaning Up') { sh """ rm -rf ~/Craft/BinaryCache/ """ } // As the macOS Slaves are permanent ones, we erase the Workspace as the last thing we do deleteDir() } } diff --git a/craft-cache/stable-pipelines/windows.pipeline b/craft-cache/stable-pipelines/windows.pipeline index e82dc9b..2a40bc1 100644 --- a/craft-cache/stable-pipelines/windows.pipeline +++ b/craft-cache/stable-pipelines/windows.pipeline @@ -1,68 +1,72 @@ +// Where will the craftmaster configuration be found (relative to the working directory that is)? +def craftmasterConfigDir = "binary-factory-tooling/craft/configs/2018.12/" + // Request a node to be allocated to us node( "WindowsMSVC" ) { // 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 we want to make sure Craft is ready to go stage('Preparing Craft') { // Make sure we start with a clean slate deleteDir() // Grab our tooling which we will need in a few moments checkout changelog: false, poll: false, scm: [ $class: 'GitSCM', branches: [[name: 'master']], extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'bf-tooling/']], userRemoteConfigs: [[url: 'https://anongit.kde.org/sysadmin/binary-factory-tooling']] ] // We are also reliant on the CI System Tooling for parts of this, so grab it too 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']] ] // Make sure that Craftmaster is ready to go bat """ - python "%WORKSPACE%\\bf-tooling\\craft\\checkout-repository.py" --repository "git://anongit.kde.org/craftmaster" --into "C:/Craft/BinaryCache/" --branch stable + python "%WORKSPACE%\\bf-tooling\\craft\\checkout-repository.py" --repository "git://anongit.kde.org/craftmaster" --into "C:/Craft/BinaryCache/" + python "%WORKSPACE%\\bf-tooling\\craft\\checkout-repository.py" --repository "git://anongit.kde.org/sysadmin/binary-factory-tooling" --into "C:/Craft/BinaryCache/" """ } // Now that is done, it's time to rebuild the Craft Cache! stage('Build Craft Cache') { bat """ - cd C:/Craft/BinaryCache/craftmaster/ - python Craftmaster.py --config config/CraftBinaryCache.ini --target ${craftPlatform} --variables CreateCache=True UseCache=True -c -i craft - python Craftmaster.py --config config/CraftBinaryCache.ini --target ${craftPlatform} --variables CreateCache=True UseCache=True -c --option "/.buildTests=False" --list-file config/BinaryCachePackages.list + cd C:/Craft/BinaryCache/ + python craftmaster/Craftmaster.py --config ${craftmasterConfigDir}/CraftBinaryCache.ini --target ${craftPlatform} --variables CreateCache=True UseCache=True -c -i craft + python craftmaster/Craftmaster.py --config ${craftmasterConfigDir}/CraftBinaryCache.ini --target ${craftPlatform} --variables CreateCache=True UseCache=True -c --option "/.buildTests=False" --list-file ${craftmasterConfigDir}/BinaryCachePackages.list """ } } // We need to catch errors here to ensure that the cleanup always runs, even if the upload fails // While this is a bit wasteful it at least determines that errors in the publishing process leave a builder with a very full disk! catchError { // Upload it to the master server stage('Publish Craft Cache') { bat """ cd "%WORKSPACE%\\ci-tooling" python helpers/sftp-directory-mirror.py --source C:/Craft/BinaryCache/cache/ --destination /srv/archives/files/craft/master/ --server racnoss.kde.org --username craft """ } } // Then we can cleanup everything we did // It is critical this always happens, otherwise builders can run out of disk space! stage('Cleaning Up') { bat """ rmdir /s /q C:\\Craft\\BinaryCache\\ """ } // As the Windows Slaves are permanent ones, we erase the Workspace as the last thing we do deleteDir() } } diff --git a/craft/configs/2018.12/BinaryCachePackages.list b/craft/configs/2018.12/BinaryCachePackages.list new file mode 100644 index 0000000..1a8b33f --- /dev/null +++ b/craft/configs/2018.12/BinaryCachePackages.list @@ -0,0 +1,67 @@ +[Packages] +dev-utils/qtbinpatcher +dev-utils/nsis + +[Qt] +libs/qt5 + +[Frameworks] +kde/frameworks + +[kde/applications] +kde/applications/kate + +[Notifications] +qt-libs/snorenotify + +[Applications] +# Various Applications +kdesupport/qca + +# PIM Libraries +libs/libical + +# libkexiv2 +libs/exiv2 + +# KStars +libs/eigen3 + +# Minuet +libs/glib +libs/fluidsynth + +[Extragear] +# KDevelop +libs/llvm-meta/llvm +kdesupport/grantlee + +# Labplot +libs/gsl + +# Skrooge +dev-utils/pkg-config + +# akonadi +libs/boost/boost-graph + +# Alkimia +libs/libgmp +libs/mpir + +# Amarok +libs/taglib + +# ocular +qt-libs/poppler +libs/ghostscript +libs/libspectre + + +# calzy +## llvm doesn't install some import libs so we need to cache it to be able to +## get it with a cached llvm +dev-utils/clazy + +# other +binary/vlc diff --git a/craft/configs/2018.12/CraftBinaryCache.ini b/craft/configs/2018.12/CraftBinaryCache.ini new file mode 100644 index 0000000..a80fc6e --- /dev/null +++ b/craft/configs/2018.12/CraftBinaryCache.ini @@ -0,0 +1,89 @@ +[General] +Branch = master +ShallowClone = True + +[Variables] +Msys = C:/Craft/Msys +DownloadDir = C:/Craft/Downloads + +#Values need to be overwritten to create a cache +CreateCache = False +UseCache = True + +CacheVersion = Qt_5.11.2 + +# Settings applicable for all Crafts matrices +# Settings are Category/key=value +# Category is case sensitive +[GeneralSettings] +Paths/Python = C:/Program Files/Python36-32/ +Paths/Python27 = C:/Program Files (x86)/Python27-13 +Paths/DownloadDir = ${Variables:DownloadDir} +Paths/Msys = ${Variables:Msys} +ShortPath/Enabled = False +ShortPath/EnableJunctions = True +ShortPath/JunctionDir = C:/Craft/_ +Packager/CacheDir = ${Variables:Root}/cache +Packager/UseCache = ${Variables:UseCache} +Packager/CreateCache = ${Variables:CreateCache} +Packager/CacheVersion = ${Variables:CacheVersion} +Blueprints/BlueprintRoot = ${Variables:Root}/blueprints +ContinuousIntegration/Enabled = True +ContinuousIntegration/ClearBuildFolder = True +ContinuousIntegration/UpdateRepository = True +CodeSigning/Enabled = True +CodeSigning/CommonName = K Desktop Environment e.V. +CodeSigning/Organization = K Desktop Environment e.V. +CodeSigning/Locality = Berlin +CodeSigning/Country = DE +Packager/AppxPublisherId = CN=98B52D9A-DF7C-493E-BADC-37004A92EFC8 + +[BlueprintSettings] +craft/craftmaster.version = stable +craft/craft/craft-blueprints-kde.version = 2018.12 +libs/qt5.version = 5.11.2 +kde/frameworks.version = 5.52.0 +# TODO: enable with the next qt rebuild +#libs/icu.version=62.1 + +extragear/kdevelop/kdevelop.fullKDevelop = True + +# don't try to pip install on the ci +python-modules.ignored = True + +[windows-msvc2017_64-cl-debug] +General/ABI = windows-msvc2017_64-cl +Compile/BuildType = Debug + +[windows-msvc2017_64-cl] +General/ABI = windows-msvc2017_64-cl +Compile/BuildType = RelWithDebInfo + +[windows-msvc2015_64-cl] +General/ABI = windows-msvc2015_64-cl +Compile/BuildType = RelWithDebInfo + +[windows-msvc2017_32-cl] +Paths/Python = C:/Program Files (x86)/Python36-32 +General/ABI = windows-msvc2017_32-cl +Compile/BuildType = RelWithDebInfo + +[windows-mingw_64-gcc] +General/ABI = windows-mingw_64-gcc +Compile/MakeProgram = mingw32-make +Compile/BuildType = RelWithDebInfo + +[linux-64-gcc] +Paths/Python = +General/ABI = linux-64-gcc +Compile/MakeProgram = make +Compile/BuildType = RelWithDebInfo +Paths/DownloadDir = ${Variables:Root}/downloads + +[macos-64-clang] +Paths/Python = +General/ABI = macos-64-clang +Compile/MakeProgram = make +Compile/BuildType = RelWithDebInfo +Packager/PackageType = MacDMGPackager +Paths/DownloadDir = ${Variables:Root}/downloads diff --git a/craft/configs/master/BinaryCachePackages.list b/craft/configs/master/BinaryCachePackages.list new file mode 100644 index 0000000..1a8b33f --- /dev/null +++ b/craft/configs/master/BinaryCachePackages.list @@ -0,0 +1,67 @@ +[Packages] +dev-utils/qtbinpatcher +dev-utils/nsis + +[Qt] +libs/qt5 + +[Frameworks] +kde/frameworks + +[kde/applications] +kde/applications/kate + +[Notifications] +qt-libs/snorenotify + +[Applications] +# Various Applications +kdesupport/qca + +# PIM Libraries +libs/libical + +# libkexiv2 +libs/exiv2 + +# KStars +libs/eigen3 + +# Minuet +libs/glib +libs/fluidsynth + +[Extragear] +# KDevelop +libs/llvm-meta/llvm +kdesupport/grantlee + +# Labplot +libs/gsl + +# Skrooge +dev-utils/pkg-config + +# akonadi +libs/boost/boost-graph + +# Alkimia +libs/libgmp +libs/mpir + +# Amarok +libs/taglib + +# ocular +qt-libs/poppler +libs/ghostscript +libs/libspectre + + +# calzy +## llvm doesn't install some import libs so we need to cache it to be able to +## get it with a cached llvm +dev-utils/clazy + +# other +binary/vlc diff --git a/craft/configs/master/CraftBinaryCache.ini b/craft/configs/master/CraftBinaryCache.ini new file mode 100644 index 0000000..d96c697 --- /dev/null +++ b/craft/configs/master/CraftBinaryCache.ini @@ -0,0 +1,91 @@ +[General] +Branch = master +ShallowClone = True + +[Variables] +Msys = C:/Craft/Msys +DownloadDir = C:/Craft/Downloads + +#Values need to be overwritten to create a cache +CreateCache = False +UseCache = True + +CacheVersion = Qt_5.12.0 + +# Settings applicable for all Crafts matrices +# Settings are Category/key=value +# Category is case sensitive +[GeneralSettings] +Paths/Python = C:/Program Files/Python36-32/ +Paths/Python27 = C:/Program Files (x86)/Python27-13 +Paths/DownloadDir = ${Variables:DownloadDir} +Paths/Msys = ${Variables:Msys} +ShortPath/Enabled = False +ShortPath/EnableJunctions = True +ShortPath/JunctionDir = C:/_ +Packager/CacheDir = ${Variables:Root}/cache +Packager/UseCache = ${Variables:UseCache} +Packager/CreateCache = ${Variables:CreateCache} +Packager/CacheVersion = ${Variables:CacheVersion} +Blueprints/BlueprintRoot = ${Variables:Root}/blueprints +ContinuousIntegration/Enabled = True +ContinuousIntegration/ClearBuildFolder = True +ContinuousIntegration/UpdateRepository = True +CodeSigning/Enabled = True +CodeSigning/CommonName = K Desktop Environment e.V. +CodeSigning/Organization = K Desktop Environment e.V. +CodeSigning/Locality = Berlin +CodeSigning/Country = DE +Packager/AppxPublisherId = CN=98B52D9A-DF7C-493E-BADC-37004A92EFC8 + +[BlueprintSettings] +libs/qt5.version = 5.12.0 +libs/icu.version=63.1 +libs/dbus.version=1.12.12 +libs/llvm-meta.version=7.0.1 +dev-utils/mingw-w64.version=8.1.0-0 + +extragear/kdevelop/kdevelop.fullKDevelop = True + +# don't try to pip install on the ci +python-modules.ignored = True + +# keeping all build dirs around takes too much space +libs/qt5/qtdoc.ignored = True + +[windows-msvc2017_64-cl-debug] +General/ABI = windows-msvc2017_64-cl +Compile/BuildType = Debug + +[windows-msvc2017_64-cl] +General/ABI = windows-msvc2017_64-cl +Compile/BuildType = RelWithDebInfo + +[windows-msvc2015_64-cl] +General/ABI = windows-msvc2015_64-cl +Compile/BuildType = RelWithDebInfo + +[windows-msvc2017_32-cl] +Paths/Python = C:/Program Files (x86)/Python36-32 +General/ABI = windows-msvc2017_32-cl +Compile/BuildType = RelWithDebInfo + +[windows-mingw_64-gcc] +General/ABI = windows-mingw_64-gcc +Compile/MakeProgram = mingw32-make +Compile/BuildType = RelWithDebInfo + +[linux-64-gcc] +Paths/Python = +General/ABI = linux-64-gcc +Compile/MakeProgram = make +Compile/BuildType = RelWithDebInfo +Paths/DownloadDir = ${Variables:Root}/downloads + +[macos-64-clang] +Paths/Python = +General/ABI = macos-64-clang +Compile/MakeProgram = make +Compile/BuildType = RelWithDebInfo +Packager/PackageType = MacDMGPackager +Paths/DownloadDir = ${Variables:Root}/downloads diff --git a/craft/pipeline-templates/appimage.pipeline b/craft/pipeline-templates/appimage.pipeline index 09791bf..beaf0b0 100644 --- a/craft/pipeline-templates/appimage.pipeline +++ b/craft/pipeline-templates/appimage.pipeline @@ -1,80 +1,84 @@ // Sometimes we need to include additional parameters to Craft which are specific to the project def craftProjectParams = "" +// Where will the craftmaster configuration be found (relative to the working directory that is)? +def craftmasterConfig = "binary-factory-tooling/craft/configs/2018.12/CraftBinaryCache.ini" + // Determine if we need to build a specific version of this project if( craftTarget != '' ) { // If we have a specified version (Craft target) then we need to pass this along to Craft craftProjectParams = "--target ${craftTarget}" } // Request a node to be allocated to us node( "Appimage" ) { // 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 we want to make sure Craft is ready to go stage('Preparing Craft') { // Grab our tooling which we will need in a few moments checkout changelog: false, poll: false, scm: [ $class: 'GitSCM', branches: [[name: 'master']], extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'bf-tooling/']], userRemoteConfigs: [[url: 'https://anongit.kde.org/sysadmin/binary-factory-tooling']] ] // Make sure the Git checkouts are up to date sh """ python3 "$WORKSPACE/bf-tooling/craft/checkout-repository.py" --repository git://anongit.kde.org/craftmaster --into ~/Craft/BinaryFactory/ + python3 "$WORKSPACE/bf-tooling/craft/checkout-repository.py" --repository git://anongit.kde.org/sysadmin/binary-factory-tooling --into ~/Craft/BinaryFactory/ """ // Update Craft itself sh """ cd ~/Craft/BinaryFactory/ - python3 craftmaster/Craftmaster.py --config craftmaster/config/CraftBinaryCache.ini --target ${craftPlatform} -c -i craft + python3 craftmaster/Craftmaster.py --config "${craftmasterConfig}" --target ${craftPlatform} -c -i craft """ } stage('Installing Dependencies') { // Ask Craftmaster to ensure all the dependencies are installed for this application we are going to be building sh """ cd ~/Craft/BinaryFactory/ - python3 craftmaster/Craftmaster.py --config craftmaster/config/CraftBinaryCache.ini --target ${craftPlatform} -c ${craftOptions} ${craftProjectParams} --install-deps ${craftBuildBlueprint} + python3 craftmaster/Craftmaster.py --config "${craftmasterConfig}" --target ${craftPlatform} -c ${craftOptions} ${craftProjectParams} --install-deps ${craftBuildBlueprint} """ } stage('Building') { // Actually build the application now sh """ cd ~/Craft/BinaryFactory/ - python3 craftmaster/Craftmaster.py --config craftmaster/config/CraftBinaryCache.ini --target ${craftPlatform} -c ${craftOptions} --no-cache ${craftProjectParams} ${craftRebuildBlueprint} + python3 craftmaster/Craftmaster.py --config "${craftmasterConfig}" --target ${craftPlatform} -c ${craftOptions} --no-cache ${craftProjectParams} ${craftRebuildBlueprint} """ } stage('Packaging') { // Now generate the appimage for it sh """ cd ~/Craft/BinaryFactory/ // If Craft knew how to generate Appimages we could just run the below... - //python3 craftmaster/Craftmaster.py --config craftmaster/config/CraftBinaryCache.ini --target ${craftPlatform} -c ${craftOptions} ${craftProjectParams} --package ${craftBuildBlueprint} + //python3 craftmaster/Craftmaster.py --config "${craftmasterConfig}" --target ${craftPlatform} -c ${craftOptions} ${craftProjectParams} --package ${craftBuildBlueprint} // Instead we'll have to ask Craft to stage all the resources like it normally would, then we can run the necessary external tools to generate the appimage """ // Now copy it to the Jenkins workspace so it can be grabbed from there sh """ cd ~/Craft/BinaryFactory/ - packageDir=\$(python3 "craftmaster/Craftmaster.py" --config "craftmaster/config/CraftBinaryCache.ini" --target ${craftPlatform} -c ${craftOptions} -q --get "packageDestinationDir()" virtual/base) + packageDir=\$(python3 "craftmaster/Craftmaster.py" --config "${craftmasterConfig}" --target ${craftPlatform} -c ${craftOptions} -q --get "packageDestinationDir()" virtual/base) cp -vf \$packageDir/* \$WORKSPACE/ """ } stage('Capturing Package') { // Then we ask Jenkins to capture the generated installers as an artifact archiveArtifacts artifacts: '*.appimage, *.sha256', onlyIfSuccessful: true } } } } diff --git a/craft/pipeline-templates/macos.pipeline b/craft/pipeline-templates/macos.pipeline index de65852..79dd2df 100644 --- a/craft/pipeline-templates/macos.pipeline +++ b/craft/pipeline-templates/macos.pipeline @@ -1,103 +1,107 @@ // Sometimes we need to include additional parameters to Craft which are specific to the project def craftProjectParams = "" +// Where will the craftmaster configuration be found (relative to the working directory that is)? +def craftmasterConfig = "binary-factory-tooling/craft/configs/2018.12/CraftBinaryCache.ini" + // Determine if we need to build a specific version of this project if( craftTarget != '' ) { // If we have a specified version (Craft target) then we need to pass this along to Craft craftProjectParams = "--target ${craftTarget}" } // Request a node to be allocated to us node( "macOS" ) { // 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 we want to make sure Craft is ready to go stage('Preparing Craft') { // Make sure we start with a clean slate deleteDir() // Grab our tooling which we will need in a few moments checkout changelog: false, poll: false, scm: [ $class: 'GitSCM', branches: [[name: 'master']], extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'bf-tooling/']], userRemoteConfigs: [[url: 'https://anongit.kde.org/sysadmin/binary-factory-tooling']] ] // Make sure the Git checkouts are up to date sh """ - /usr/local/bin/python3 "$WORKSPACE/bf-tooling/craft/checkout-repository.py" --repository git://anongit.kde.org/craftmaster --into ~/Craft/BinaryFactory/ --branch stable + /usr/local/bin/python3 "$WORKSPACE/bf-tooling/craft/checkout-repository.py" --repository git://anongit.kde.org/craftmaster --into ~/Craft/BinaryFactory/ + /usr/local/bin/python3 "$WORKSPACE/bf-tooling/craft/checkout-repository.py" --repository git://anongit.kde.org/sysadmin/binary-factory-tooling --into ~/Craft/BinaryFactory/ """ // Update Craft itself sh """ cd ~/Craft/BinaryFactory/ - /usr/local/bin/python3 craftmaster/Craftmaster.py --config craftmaster/config/CraftBinaryCache.ini --target ${craftPlatform} -c -i craft + /usr/local/bin/python3 craftmaster/Craftmaster.py --config "${craftmasterConfig}" --target ${craftPlatform} -c -i craft """ } stage('Cleaning Up Prior Builds') { // Cleanup our workspace deleteDir() // Ensure we have nothing left behind in the packaging workspace used by Craft sh """ cd ~/Craft/BinaryFactory/ - packageDir=\$(/usr/local/bin/python3 "craftmaster/Craftmaster.py" --config "craftmaster/config/CraftBinaryCache.ini" --target ${craftPlatform} -c ${craftOptions} -q --get "packageDestinationDir()" virtual/base) + packageDir=\$(/usr/local/bin/python3 "craftmaster/Craftmaster.py" --config "${craftmasterConfig}" --target ${craftPlatform} -c ${craftOptions} -q --get "packageDestinationDir()" virtual/base) rm -rf "\$packageDir" """ // Make sure the build environment for this application is clean sh """ cd ~/Craft/BinaryFactory/ - /usr/local/bin/python3 craftmaster/Craftmaster.py --config craftmaster/config/CraftBinaryCache.ini --target ${craftPlatform} -c ${craftOptions} ${craftProjectParams} --unmerge ${craftRebuildBlueprint} + /usr/local/bin/python3 craftmaster/Craftmaster.py --config "${craftmasterConfig}" --target ${craftPlatform} -c ${craftOptions} ${craftProjectParams} --unmerge ${craftRebuildBlueprint} """ } stage('Installing Dependencies') { // Ask Craftmaster to ensure all the dependencies are installed for this application we are going to be building sh """ cd ~/Craft/BinaryFactory/ - /usr/local/bin/python3 craftmaster/Craftmaster.py --config craftmaster/config/CraftBinaryCache.ini --target ${craftPlatform} -c ${craftOptions} ${craftProjectParams} --install-deps ${craftBuildBlueprint} + /usr/local/bin/python3 craftmaster/Craftmaster.py --config "${craftmasterConfig}" --target ${craftPlatform} -c ${craftOptions} ${craftProjectParams} --install-deps ${craftBuildBlueprint} """ } stage('Building') { // Actually build the application now sh """ cd ~/Craft/BinaryFactory/ - /usr/local/bin/python3 craftmaster/Craftmaster.py --config craftmaster/config/CraftBinaryCache.ini --target ${craftPlatform} -c ${craftOptions} --no-cache ${craftProjectParams} ${craftRebuildBlueprint} + /usr/local/bin/python3 craftmaster/Craftmaster.py --config "${craftmasterConfig}" --target ${craftPlatform} -c ${craftOptions} --no-cache ${craftProjectParams} ${craftRebuildBlueprint} """ } stage('Packaging') { // Now generate an installer for it sh """ cd ~/Craft/BinaryFactory/ - /usr/local/bin/python3 craftmaster/Craftmaster.py --config craftmaster/config/CraftBinaryCache.ini --target ${craftPlatform} -c ${craftOptions} ${craftProjectParams} --package ${craftBuildBlueprint} + /usr/local/bin/python3 craftmaster/Craftmaster.py --config "${craftmasterConfig}" --target ${craftPlatform} -c ${craftOptions} ${craftProjectParams} --package ${craftBuildBlueprint} """ // Now copy it to the Jenkins workspace so it can be grabbed from there sh """ cd ~/Craft/BinaryFactory/ - packageDir=\$(/usr/local/bin/python3 "craftmaster/Craftmaster.py" --config "craftmaster/config/CraftBinaryCache.ini" --target ${craftPlatform} -c ${craftOptions} -q --get "packageDestinationDir()" virtual/base) + packageDir=\$(/usr/local/bin/python3 "craftmaster/Craftmaster.py" --config "${craftmasterConfig}" --target ${craftPlatform} -c ${craftOptions} -q --get "packageDestinationDir()" virtual/base) cp -vf \$packageDir/* \$WORKSPACE/ rm -rf "\$packageDir" """ } stage('Capturing Package') { // Then we ask Jenkins to capture the generated installers as an artifact archiveArtifacts artifacts: '*.dmg, *.sha256', onlyIfSuccessful: true } } // As the Mac Slaves are permanent ones, we erase the Workspace as the last thing we do deleteDir() } } diff --git a/craft/pipeline-templates/win64.pipeline b/craft/pipeline-templates/win64.pipeline index 328b044..17b261c 100644 --- a/craft/pipeline-templates/win64.pipeline +++ b/craft/pipeline-templates/win64.pipeline @@ -1,112 +1,116 @@ // Sometimes we need to include additional parameters to Craft which are specific to the project def craftProjectParams = "" +// Where will the craftmaster configuration be found (relative to the working directory that is)? +def craftmasterConfig = "binary-factory-tooling/craft/configs/2018.12/CraftBinaryCache.ini" + // Determine if we need to build a specific version of this project if( craftTarget != '' ) { // If we have a specified version (Craft target) then we need to pass this along to Craft craftProjectParams = "--target ${craftTarget}" } // Request a node to be allocated to us node( "WindowsMSVC" ) { // 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 we want to make sure Craft is ready to go stage('Preparing Craft') { // Make sure we start with a clean slate deleteDir() // Grab our tooling which we will need in a few moments checkout changelog: false, poll: false, scm: [ $class: 'GitSCM', branches: [[name: 'master']], extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'bf-tooling/']], userRemoteConfigs: [[url: 'https://anongit.kde.org/sysadmin/binary-factory-tooling']] ] // Make sure that Craftmaster is up to date bat """ - python "%WORKSPACE%\\bf-tooling\\craft\\checkout-repository.py" --repository git://anongit.kde.org/craftmaster --into "C:/Craft/BinaryFactory/" --branch stable + python "%WORKSPACE%\\bf-tooling\\craft\\checkout-repository.py" --repository git://anongit.kde.org/craftmaster --into "C:/Craft/BinaryFactory/" + python "%WORKSPACE%\\bf-tooling\\craft\\checkout-repository.py" --repository git://anongit.kde.org/sysadmin/binary-factory-tooling --into "C:/Craft/BinaryFactory/" """ // Update Craft itself and make sure NSIS is installed bat """ cd "C:\\Craft\\BinaryFactory\\" - python craftmaster/Craftmaster.py --config craftmaster/config/CraftBinaryCache.ini --target ${craftPlatform} -c -i craft + python craftmaster/Craftmaster.py --config "${craftmasterConfig}" --target ${craftPlatform} -c -i craft if errorlevel 1 exit /b %errorlevel% - python craftmaster/Craftmaster.py --config craftmaster/config/CraftBinaryCache.ini --target ${craftPlatform} -c ${craftOptions} nsis + python craftmaster/Craftmaster.py --config "${craftmasterConfig}" --target ${craftPlatform} -c ${craftOptions} nsis if errorlevel 1 exit /b %errorlevel% """ } stage('Cleaning Up Prior Builds') { // Ensure we have nothing left behind in the packaging workspace used by Craft powershell """ cd "C:/Craft/BinaryFactory/" - \$CRAFT_TMPDIR = python "craftmaster/Craftmaster.py" --config "craftmaster/config/CraftBinaryCache.ini" --target ${craftPlatform} -c ${craftOptions} -q --get "packageDestinationDir()" virtual/base + \$CRAFT_TMPDIR = python "craftmaster/Craftmaster.py" --config "${craftmasterConfig}" --target ${craftPlatform} -c ${craftOptions} -q --get "packageDestinationDir()" virtual/base rm "\$CRAFT_TMPDIR/*" """ // Make sure the build environment for this application is clean bat """ cd "C:\\Craft\\BinaryFactory\\" - python craftmaster/Craftmaster.py --config craftmaster/config/CraftBinaryCache.ini --target ${craftPlatform} -c ${craftOptions} ${craftProjectParams} --unmerge ${craftRebuildBlueprint} + python craftmaster/Craftmaster.py --config "${craftmasterConfig}" --target ${craftPlatform} -c ${craftOptions} ${craftProjectParams} --unmerge ${craftRebuildBlueprint} if errorlevel 1 exit /b %errorlevel% """ } stage('Installing Dependencies') { // Ask Craftmaster to ensure all the dependencies are installed for this application we are going to be building bat """ cd "C:\\Craft\\BinaryFactory\\" - python craftmaster/Craftmaster.py --config craftmaster/config/CraftBinaryCache.ini --target ${craftPlatform} -c ${craftOptions} ${craftProjectParams} --install-deps ${craftBuildBlueprint} + python craftmaster/Craftmaster.py --config "${craftmasterConfig}" --target ${craftPlatform} -c ${craftOptions} ${craftProjectParams} --install-deps ${craftBuildBlueprint} if errorlevel 1 exit /b %errorlevel% """ } stage('Building') { // Actually build the application now bat """ cd "C:\\Craft\\BinaryFactory\\" - python craftmaster/Craftmaster.py --config craftmaster/config/CraftBinaryCache.ini --target ${craftPlatform} -c ${craftOptions} --no-cache ${craftProjectParams} ${craftRebuildBlueprint} + python craftmaster/Craftmaster.py --config "${craftmasterConfig}" --target ${craftPlatform} -c ${craftOptions} --no-cache ${craftProjectParams} ${craftRebuildBlueprint} if errorlevel 1 exit /b %errorlevel% """ } stage('Packaging') { // Now generate an installer for it powershell """ cd "C:/Craft/BinaryFactory/" - python craftmaster/Craftmaster.py --config craftmaster/config/CraftBinaryCache.ini --target ${craftPlatform} -c ${craftOptions} ${craftProjectParams} --package ${craftBuildBlueprint} + python craftmaster/Craftmaster.py --config "${craftmasterConfig}" --target ${craftPlatform} -c ${craftOptions} ${craftProjectParams} --package ${craftBuildBlueprint} if(\$LASTEXITCODE -ne 0) {exit \$LASTEXITCODE} if (\$${craftPackageAppx}) { - python craftmaster/Craftmaster.py --config craftmaster/config/CraftBinaryCache.ini --target ${craftPlatform} -c ${craftOptions} --options "[Packager]PackageType=AppxPackager" ${craftProjectParams} --package ${craftBuildBlueprint} + python craftmaster/Craftmaster.py --config "${craftmasterConfig}" --target ${craftPlatform} -c ${craftOptions} --options "[Packager]PackageType=AppxPackager" ${craftProjectParams} --package ${craftBuildBlueprint} } if(\$LASTEXITCODE -ne 0) {exit \$LASTEXITCODE} """ // Copy it to the Jenkins workspace so it can be grabbed from there powershell """ cd "C:/Craft/BinaryFactory/" - \$CRAFT_TMPDIR = python "craftmaster/Craftmaster.py" --config "craftmaster/config/CraftBinaryCache.ini" --target ${craftPlatform} -c ${craftOptions} -q --get "packageDestinationDir()" virtual/base + \$CRAFT_TMPDIR = python "craftmaster/Craftmaster.py" --config "${craftmasterConfig}" --target ${craftPlatform} -c ${craftOptions} -q --get "packageDestinationDir()" virtual/base copy "\$CRAFT_TMPDIR/*" "\$env:WORKSPACE" rm "\$CRAFT_TMPDIR/*" """ } stage('Capturing Package') { // Then we ask Jenkins to capture the generated installers as an artifact archiveArtifacts artifacts: '*.appx, *.exe, *.7z, *.sha256', onlyIfSuccessful: true } } // As the Windows Slaves are permanent ones, we erase the Workspace as the last thing we do deleteDir() } }