diff --git a/custom-jobs/krita/Krita_Release_Appimage_Build.pipeline b/custom-jobs/krita/Krita_Release_Appimage_Build.pipeline index 7b441e9..38e754a 100644 --- a/custom-jobs/krita/Krita_Release_Appimage_Build.pipeline +++ b/custom-jobs/krita/Krita_Release_Appimage_Build.pipeline @@ -1,74 +1,74 @@ // Ask for parameters we will need later on def buildParameters = input( message: 'Which version of Krita is being built?', ok: 'Begin Build', parameters: [ choice(choices: "stable\nunstable\n", description: '', name: 'Release'), string(defaultValue: '', description: '', name: 'Version', trim: true) ] ) // Request a node to be allocated to us node( "Appimage1604" ) { // 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() // Now we download the release tarball, unpack it and rename the directory to something more convenient to use everywhere else sh """ - wget "https://origin.download.kde.org/${buildParameters['Release']}/krita/${buildParameters['Version']}/krita-${buildParameters['Version']}.tar.gz" + wget "https://origin.files.kde.org/krita/.release/${buildParameters['Version']}/krita-${buildParameters['Version']}.tar.gz" tar -xf "$WORKSPACE/krita-${buildParameters['Version']}.tar.gz" mv krita-${buildParameters['Version']} krita """ } // Now retrieve the artifacts stage('Retrieving Dependencies') { // First we grab the artifacted dependencies built last time round copyArtifacts filter: 'krita-appimage-deps.tar, gmic_krita_qt-x86_64.appimage', projectName: 'Krita_Nightly_Appimage_Dependency_Build' // Now we unpack them sh """ mkdir -p $HOME/appimage-workspace/ cd $HOME/appimage-workspace/ tar -xf $WORKSPACE/krita-appimage-deps.tar """ } // Let's build Krita that we have everything we need stage('Building Krita') { // The first parameter to the script is where the scripts should work - which is our workspace in this case // Otherwise we leave everything in the hands of that script sh """ export PATH=$HOME/tools/bin/:$PATH krita/packaging/linux/appimage/build-krita.sh $HOME/appimage-workspace/ $WORKSPACE/krita/ """ } // Now we can generate the actual Appimages! stage('Generating Krita Appimage') { // The scripts handle everything here, so just run them sh """ export PATH=$HOME/tools/bin/:$PATH krita/packaging/linux/appimage/build-image.sh $HOME/appimage-workspace/ $WORKSPACE/krita/ mv $HOME/appimage-workspace/*.appimage $WORKSPACE/ """ } // Finally we capture the appimages for distribution to users stage('Capturing Appimages') { // We use Jenkins artifacts for this to save having to setup additional infrastructure archiveArtifacts artifacts: '*.appimage', onlyIfSuccessful: true } } } } diff --git a/custom-jobs/krita/Krita_Release_Windows32_Build.pipeline b/custom-jobs/krita/Krita_Release_Windows32_Build.pipeline index 859ac7a..5491018 100644 --- a/custom-jobs/krita/Krita_Release_Windows32_Build.pipeline +++ b/custom-jobs/krita/Krita_Release_Windows32_Build.pipeline @@ -1,110 +1,110 @@ // Ask for parameters we will need later on def buildParameters = input( message: 'Which version of Krita is being built?', ok: 'Begin Build', parameters: [ choice(choices: "stable\nunstable\n", description: '', name: 'Release'), string(defaultValue: '', description: '', name: 'Version', trim: true) ] ) // Request a node to be allocated to us node( "WindowsMingw" ) { // 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() // Now we download the release tarball, unpack it and rename the directory to something more convenient to use everywhere else bat """ set PATH=C:/MingW/i686-7.3.0-posix-dwarf-rt_v5-rev0/mingw32/bin;C:/PROGRA~2/Python38-32/;C:/Craft/Krita/windows-msvc2019_64-cl/bin/;C:/Craft/Krita/windows-msvc2019_64-cl/dev-utils/bin/;%PATH% set CA_CERT_BUNDLE=C:/Craft/Krita/windows-msvc2019_64-cl/etc/cacert.pem - wget --ca-certificate %CA_CERT_BUNDLE% "https://origin.download.kde.org/${buildParameters['Release']}/krita/${buildParameters['Version']}/krita-${buildParameters['Version']}.tar.gz" + wget --ca-certificate %CA_CERT_BUNDLE% "https://origin.files.kde.org/krita/.release/${buildParameters['Version']}/krita-${buildParameters['Version']}.tar.gz" 7za x "%WORKSPACE%/krita-${buildParameters['Version']}.tar.gz" 7za x "%WORKSPACE%/krita-${buildParameters['Version']}.tar" ren krita-${buildParameters['Version']} krita """ } // Now retrieve the dependency artifacts stage('Retrieving Dependencies') { // First we grab the artifacted dependencies built last time round copyArtifacts filter: 'krita-deps.zip', projectName: 'Krita_Release_Windows32_Dependency_Build' // Now we unpack them bat """ mkdir C:\\Packaging\\KritaWS\\ cd C:\\Packaging\\KritaWS\\ C:\\Craft\\Krita\\windows-msvc2019_64-cl\\dev-utils\\bin\\7za.exe x "%WORKSPACE%\\krita-deps.zip" """ } // Now we can build Krita stage('Building Krita') { // Before we can do this we need to setup some environment variables to help guide the Krita scripts around // In particular it needs: // PATH set to guide it to CMake and to allow it to find Mingw (Git and Python are already in PATH as standard convention for these builders) // SEVENZIP_EXE set to guide it to 7-Zip's console utility. It's detection support doesn't work as our binary is named 7za.exe instead of the apparently standard 7z.exe // Then we can run it // We also set SIGNTOOL_SIGN_FLAGS which is used by the package signing script when invoking signtool.exe bat """ set PATH=C:/MingW/i686-7.3.0-posix-dwarf-rt_v5-rev0/mingw32/bin;C:/PROGRA~2/Python38-32/;C:/Craft/Krita/windows-msvc2019_64-cl/bin/;C:/Craft/Krita/windows-msvc2019_64-cl/dev-utils/bin/;%PATH% set SEVENZIP_EXE=C:/Craft/Krita/windows-msvc2019_64-cl/dev-utils/bin/7za.exe set GETTEXT_SEARCH_PATH=C:/Craft/Krita/windows-msvc2019_64-cl/bin/;C:/PROGRA~2/Python38-32/ cmd /c krita\\build-tools\\windows\\build.cmd --no-interactive --skip-deps --src-dir "%WORKSPACE%\\krita" --download-dir "%WORKSPACE%\\downloads" --krita-build-dir "%WORKSPACE%\\build" --deps-install-dir "C:\\Packaging\\KritaWS\\deps-install" --krita-install-dir "C:\\Packaging\\KritaWS\\krita-install" if errorlevel 1 exit /b %errorlevel% set SIGNTOOL_SIGN_FLAGS=/v /n "K Desktop Environment e.V." /tr "http://timestamp.digicert.com" /td SHA256 /fd SHA256 cmd /c krita\\packaging\\windows\\package-complete.cmd --no-interactive --src-dir "%WORKSPACE%\\krita" --deps-install-dir "C:\\Packaging\\KritaWS\\deps-install" --krita-install-dir "C:\\Packaging\\KritaWS\\krita-install" --pre-zip-hook "%WORKSPACE%\\krita\\packaging\\windows\\sign-package.cmd" --package-name "krita-x86-${buildParameters['Version']}" if errorlevel 1 exit /b %errorlevel% """ } stage('Generating Installer') { // Let's build an installer! bat """ set PATH=C:/MingW/i686-7.3.0-posix-dwarf-rt_v5-rev0/mingw32/bin;C:/PROGRA~2/Python38-32/;C:/Craft/Krita/windows-msvc2019_64-cl/bin/;C:/Craft/Krita/windows-msvc2019_64-cl/dev-utils/bin/;%PATH% set PACKAGE_NAME=krita-x86-${buildParameters['Version']} cd C:\\Packaging\\KritaWS mkdir installer cd installer cmake -DREMOVE_DEBUG=ON -DOUTPUT_FILEPATH="%WORKSPACE%\\%PACKAGE_NAME%-setup.exe" -DKRITA_PACKAGE_ROOT="%WORKSPACE%\\%PACKAGE_NAME%" -P "C:\\Packaging\\KritaWS\\krita-install\\MakeinstallerNsis.cmake" if errorlevel 1 exit /b 1 call "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Auxiliary/Build/vcvars64.bat" set SIGNTOOL_SIGN_FLAGS=/v /n "K Desktop Environment e.V." /tr "http://timestamp.digicert.com" /td SHA256 /fd SHA256 signtool sign %SIGNTOOL_SIGN_FLAGS% "%WORKSPACE%\\%PACKAGE_NAME%-setup.exe" """ } // Now we capture them for use stage('Capturing Build') { // To do this we just ask Jenkins to capture the zip file as an artifact archiveArtifacts artifacts: 'krita-x86-*.zip, krita-x86-*-setup.exe', onlyIfSuccessful: true } } // As the Windows Slaves are permanent ones, we erase the Workspace as the last thing we do deleteDir() // Same goes for the stable workspace that we use bat """ rmdir /s /q C:\\Packaging\\KritaWS\\ """ } } diff --git a/custom-jobs/krita/Krita_Release_Windows64_Build.pipeline b/custom-jobs/krita/Krita_Release_Windows64_Build.pipeline index 91ec8a4..1236f54 100644 --- a/custom-jobs/krita/Krita_Release_Windows64_Build.pipeline +++ b/custom-jobs/krita/Krita_Release_Windows64_Build.pipeline @@ -1,109 +1,109 @@ // Ask for parameters we will need later on def buildParameters = input( message: 'Which version of Krita is being built?', ok: 'Begin Build', parameters: [ choice(choices: "stable\nunstable\n", description: '', name: 'Release'), string(defaultValue: '', description: '', name: 'Version', trim: true) ] ) // Request a node to be allocated to us node( "WindowsMingw" ) { // 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() // Now we download the release tarball, unpack it and rename the directory to something more convenient to use everywhere else bat """ set PATH=C:/MingW/x86_64-7.3.0-posix-seh-rt_v5-rev0/mingw64/bin;C:/Craft/Krita/windows-msvc2019_64-cl/bin/;C:/Craft/Krita/windows-msvc2019_64-cl/dev-utils/bin/;%PATH% set CA_CERT_BUNDLE=C:/Craft/Krita/windows-msvc2019_64-cl/etc/cacert.pem - wget --ca-certificate %CA_CERT_BUNDLE% "https://origin.download.kde.org/${buildParameters['Release']}/krita/${buildParameters['Version']}/krita-${buildParameters['Version']}.tar.gz" + wget --ca-certificate %CA_CERT_BUNDLE% "https://origin.files.kde.org/krita/.release/${buildParameters['Version']}/krita-${buildParameters['Version']}.tar.gz" 7za x "%WORKSPACE%/krita-${buildParameters['Version']}.tar.gz" 7za x "%WORKSPACE%/krita-${buildParameters['Version']}.tar" ren krita-${buildParameters['Version']} krita """ } // Now retrieve the dependency artifacts stage('Retrieving Dependencies') { // First we grab the artifacted dependencies built last time round copyArtifacts filter: 'krita-deps.zip', projectName: 'Krita_Nightly_Windows_Dependency_Build' // Now we unpack them bat """ mkdir C:\\Packaging\\KritaWS\\ cd C:\\Packaging\\KritaWS\\ C:\\Craft\\Krita\\windows-msvc2019_64-cl\\dev-utils\\bin\\7za.exe x "%WORKSPACE%\\krita-deps.zip" """ } // Now we can build Krita stage('Building Krita') { // Before we can do this we need to setup some environment variables to help guide the Krita scripts around // In particular it needs: // PATH set to guide it to CMake and to allow it to find Mingw (Git and Python are already in PATH as standard convention for these builders) // SEVENZIP_EXE set to guide it to 7-Zip's console utility. It's detection support doesn't work as our binary is named 7za.exe instead of the apparently standard 7z.exe // Then we can run it // We also set SIGNTOOL_SIGN_FLAGS which is used by the package signing script when invoking signtool.exe bat """ set PATH=C:/MingW/x86_64-7.3.0-posix-seh-rt_v5-rev0/mingw64/bin;C:/Craft/Krita/windows-msvc2019_64-cl/bin/;C:/Craft/Krita/windows-msvc2019_64-cl/dev-utils/bin/;%PATH% set SEVENZIP_EXE=C:/Craft/Krita/windows-msvc2019_64-cl/dev-utils/bin/7za.exe set GETTEXT_SEARCH_PATH=C:\\Craft\\Krita\\windows-msvc2019_64-cl\\bin cmd /c krita\\build-tools\\windows\\build.cmd --no-interactive --skip-deps --src-dir "%WORKSPACE%\\krita" --download-dir "%WORKSPACE%\\downloads" --krita-build-dir "%WORKSPACE%\\build" --deps-install-dir "C:\\Packaging\\KritaWS\\deps-install" --krita-install-dir "C:\\Packaging\\KritaWS\\krita-install" if errorlevel 1 exit /b %errorlevel% set SIGNTOOL_SIGN_FLAGS=/v /n "K Desktop Environment e.V." /tr "http://timestamp.digicert.com" /td SHA256 /fd SHA256 cmd /c krita\\packaging\\windows\\package-complete.cmd --no-interactive --src-dir "%WORKSPACE%\\krita" --deps-install-dir "C:\\Packaging\\KritaWS\\deps-install" --krita-install-dir "C:\\Packaging\\KritaWS\\krita-install" --pre-zip-hook "%WORKSPACE%\\krita\\packaging\\windows\\sign-package.cmd" --package-name "krita-x64-${buildParameters['Version']}" if errorlevel 1 exit /b %errorlevel% """ } stage('Generating Installer') { // Let's build an installer! bat """ set PATH=C:/MingW/x86_64-7.3.0-posix-seh-rt_v5-rev0/mingw64/bin;C:/Craft/Krita/windows-msvc2019_64-cl/bin/;C:/Craft/Krita/windows-msvc2019_64-cl/dev-utils/bin/;%PATH% set PACKAGE_NAME=krita-x64-${buildParameters['Version']} cd C:\\Packaging\\KritaWS mkdir installer cd installer cmake -DREMOVE_DEBUG=ON -DOUTPUT_FILEPATH="%WORKSPACE%\\%PACKAGE_NAME%-setup.exe" -DKRITA_PACKAGE_ROOT="%WORKSPACE%\\%PACKAGE_NAME%" -P "C:\\Packaging\\KritaWS\\krita-install\\MakeinstallerNsis.cmake" if errorlevel 1 exit /b 1 call "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Auxiliary/Build/vcvars64.bat" set SIGNTOOL_SIGN_FLAGS=/v /n "K Desktop Environment e.V." /tr "http://timestamp.digicert.com" /td SHA256 /fd SHA256 signtool sign %SIGNTOOL_SIGN_FLAGS% "%WORKSPACE%\\%PACKAGE_NAME%-setup.exe" """ } // Now we capture them for use stage('Capturing Build') { // To do this we just ask Jenkins to capture the zip file as an artifact archiveArtifacts artifacts: 'krita-x64-*.zip, krita-x64-*-setup.exe', onlyIfSuccessful: true } } // As the Windows Slaves are permanent ones, we erase the Workspace as the last thing we do deleteDir() // Same goes for the stable workspace that we use bat """ rmdir /s /q C:\\Packaging\\KritaWS\\ """ } }