summaryrefslogtreecommitdiffstats
path: root/Jenkinsfile
blob: 8f5b5b8ac27e5e8228e0f49cb83cffd656210fe6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
import jenkins.model.*
import hudson.model.Result

def REPO = 'ssh://gerrit1.techsat.local:29418/external/Qt'

properties([
    parameters([
        gitParameter(branch: '',
                     branchFilter: 'origin/(.*)',
                     defaultValue: 'master',
                     description: '',
                     name: 'BRANCH',
                     quickFilterEnabled: false,
                     selectedValue: 'NONE',
                     sortMode: 'NONE',
                     tagFilter: '*',
                     type: 'PT_BRANCH_TAG')
    ])
])

stage('Build') {
    parallel linux: {
        node('bslp02-centos6-64') {
	    deleteDir()
	    checkout([$class: 'GitSCM', 
		    branches: [[name: BRANCH]], 
		    doGenerateSubmoduleConfigurations: false, 
		    extensions: [], 
		    submoduleCfg: [], 
		    userRemoteConfigs: [[url: REPO]]])

	    stage("Linux 64 Bit Build") {
		sh '''#!/bin/bash
		GCC_PATH=/master/DEV-Tools/gcc-suite/1.3.0/x86-linux64/gcc-8.2.0 make
		'''
	    }
        }
    },
    windows: {
        node('bslp05-win10-64') {
            try {
        	    deleteDir()
        	    checkout([$class: 'GitSCM', 
        		    branches: [[name: BRANCH]], 
        		    doGenerateSubmoduleConfigurations: false, 
        		    extensions: [], 
        		    submoduleCfg: [], 
        		    userRemoteConfigs: [[url: REPO]]])

		    stage ("Windows 64 Bit MSVC Build") {
			sh '''
			    rm -f openssl-1.0.2r/NUL
			    rm -Rf openssl-1.0.2r
			'''
			bat '''@echo off
			    set SDKDIR=C:\\dev-tools\\WinSDK\\VS2019BT\\
			    set NASMDIR=C:\\dev-tools\\nasm\\2.12.01_64
			    set MSYSDIR=C:\\dev-tools\\msys\\x86\\
			    set PERLDIR=C:\\dev-tools\\perl\\x86_64-msvc\\
			    set PATH=%PATH%;C:\\dev-tools\\Python\\2.7\\x86-windows\\
			    buildqt64.bat
			'''
		    }
		    stage ("Windows 64 Bit MinGW Build") {
			sh '''
			    echo "Cleanup prev. builds ..."
			    export PATH=/c/dev-tools/msys/x86/usr/bin:$PATH
			    rm -f openssl-1.0.2r/NUL
			    rm -Rf openssl-1.0.2r
			    cp -Rf /c/dev-tools/gcc-suite/1.3.0/x86-mingw64/gcc-8.2.0 ./
			    echo "Done."
			    make GCC_PATH=$PWD/gcc-8.2.0 -f Makefile.mingw64 all
			    rm -Rf build.$(ARCH)
			    rm -Rf install.$(ARCH)
			'''
		    }
		    stash name: "qtwin", includes: "*-msvc.zip, *-x86-mingw64.tgz"
            } catch (e) {
                echo 'Windows build failed'
		setBuildResult('FAILURE')
            } finally {
		sh '''
		    export PATH=/c/dev-tools/msys/x86/usr/bin:$PATH
		    rm -Rf openssl-1.0.2r
		    cd $WORKSPACE
		'''
		deleteDir()
            }
        }
    }
}
stage ("Post processing") {
    node('bslp02-centos6-64') {
	unstash name: 'qtwin'
	sh '''
	    QT_VER=5.12.3
	    # 
	    # cleanup temporary destination folder for final distribution ...
	    # unpack Linux archives ...
	    mkdir -p $WORKSPACE/INST/$QT_VER/x86-linux64-shared
	    tar -xzf $WORKSPACE/qt-$QT_VER-shared-x86-linux64.tgz -C $WORKSPACE/INST/$QT_VER/x86-linux64-shared
	    mkdir -p $WORKSPACE/INST/$QT_VER/x86-linux64-static
	    tar -xzf $WORKSPACE/qt-$QT_VER-static-x86-linux64.tgz -C $WORKSPACE/INST/$QT_VER/x86-linux64-static

	    mkdir -p $WORKSPACE/INST/$QT_VER/x86_64-msvc
	    unzip -o $WORKSPACE/qt-$QT_VER-x86_64-msvc.zip -d $WORKSPACE/INST/$QT_VER/x86_64-msvc

	    mkdir -p $WORKSPACE/INST/$QT_VER/x86-mingw64
	    tar -xzf $WORKSPACE/qt-$QT_VER-x86-mingw64.tgz -C $WORKSPACE/INST/$QT_VER/x86-mingw64

	    mkdir -p $WORKSPACE/INST/$QT_VER/x86-mingw64/xbin
	    cp -f $WORKSPACE/INST/$QT_VER/x86-linux64-static/bin/* $WORKSPACE/INST/$QT_VER/x86-mingw64/xbin
	    # 
	    # finally create the whole archive ...
	    cd $WORKSPACE/INST && tar -zcf $WORKSPACE/qt-$QT_VER-bin_64.tgz ./
	    rm -Rf $WORKSPACE/INST
	'''
	archiveArtifacts artifacts: '*.tgz, *.zip'
    }
}