Jenkinsfile 5.77 KB
Newer Older
1
pipeline {
Anthony Lamping's avatar
Anthony Lamping committed
2
  agent none
3
  stages {
4

5
    stage('build') {
6
      parallel {
7

8 9 10 11
        stage('Android Release') {
          environment {
            CCACHE_BASEDIR = "${env.WORKSPACE}"
            QGC_CONFIG = 'release'
12
            QMAKE_VER = "5.11.0/android_armv7/bin/qmake"
13 14 15
          }
          agent {
            docker {
16
              image 'mavlink/qgc-build-android:2018-06-08'
17 18 19 20 21 22 23 24 25 26 27 28
              args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
            }
          }
          steps {
            sh 'export'
            sh 'ccache -z'
            sh 'git submodule deinit -f .'
            sh 'git clean -ff -x -d .'
            sh 'git submodule update --init --recursive --force'
            sh 'mkdir build; cd build; ${QT_PATH}/${QMAKE_VER} -r ${WORKSPACE}/qgroundcontrol.pro CONFIG+=${QGC_CONFIG} CONFIG+=WarningsAsErrorsOn'
            sh 'cd build; make -j`nproc --all`'
            sh 'ccache -s'
29 30 31 32 33
          }
          post {
            cleanup {
              sh 'git clean -ff -x -d .'
            }
34 35 36
          }
        }

Daniel Agar's avatar
Daniel Agar committed
37
        stage('Linux Debug') {
38 39 40
          environment {
            CCACHE_BASEDIR = "${env.WORKSPACE}"
            QGC_CONFIG = 'debug'
41
            QMAKE_VER = "5.11.0/gcc_64/bin/qmake"
42
          }
Daniel Agar's avatar
Daniel Agar committed
43 44
          agent {
            docker {
45
              image 'mavlink/qgc-build-linux:2018-06-08'
46
              args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
Daniel Agar's avatar
Daniel Agar committed
47 48 49
            }
          }
          steps {
50
            sh 'export'
51
            sh 'ccache -z'
Daniel Agar's avatar
Daniel Agar committed
52 53 54
            sh 'git submodule deinit -f .'
            sh 'git clean -ff -x -d .'
            sh 'git submodule update --init --recursive --force'
55 56
            sh 'mkdir build; cd build; ${QT_PATH}/${QMAKE_VER} -r ${WORKSPACE}/qgroundcontrol.pro CONFIG+=${QGC_CONFIG} CONFIG+=WarningsAsErrorsOn'
            sh 'cd build; make -j`nproc --all`'
Daniel Agar's avatar
Daniel Agar committed
57
            sh 'ccache -s'
58 59 60 61 62
          }
          post {
            cleanup {
              sh 'git clean -ff -x -d .'
            }
Daniel Agar's avatar
Daniel Agar committed
63 64
          }
        }
65

66
        stage('Linux Release') {
67 68 69
          environment {
            CCACHE_BASEDIR = "${env.WORKSPACE}"
            QGC_CONFIG = 'release'
70
            QMAKE_VER = "5.11.0/gcc_64/bin/qmake"
71
          }
72 73
          agent {
            docker {
74
              image 'mavlink/qgc-build-linux:2018-06-08'
75
              args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
76 77 78
            }
          }
          steps {
79
            sh 'export'
80
            sh 'ccache -z'
81 82 83
            sh 'git submodule deinit -f .'
            sh 'git clean -ff -x -d .'
            sh 'git submodule update --init --recursive --force'
84 85 86
            withCredentials([file(credentialsId: 'QGC_Airmap_api_key', variable: 'AIRMAP_API_HEADER')]) {
              sh 'cp $AIRMAP_API_HEADER ${WORKSPACE}/src/Airmap/Airmap_api_key.h'
            }
87 88
            sh 'mkdir build; cd build; ${QT_PATH}/${QMAKE_VER} -r ${WORKSPACE}/qgroundcontrol.pro CONFIG+=${QGC_CONFIG} CONFIG+=WarningsAsErrorsOn'
            sh 'cd build; make -j`nproc --all`'
89
            sh 'ccache -s'
90 91 92 93 94
          }
          post {
            cleanup {
              sh 'git clean -ff -x -d .'
            }
95 96
          }
        }
97

98 99 100 101 102 103 104
        stage('OSX Debug') {
          agent {
            node {
              label 'mac'
            }
          }
          environment {
105 106
            CCACHE_BASEDIR = "${env.WORKSPACE}"
            QGC_CONFIG = 'debug'
107
            QMAKE_VER = "5.11.0/clang_64/bin/qmake"
108 109
          }
          steps {
110
            sh 'export'
111
            sh 'ccache -z'
112 113 114
            sh 'git submodule deinit -f .'
            sh 'git clean -ff -x -d .'
            sh 'git submodule update --init --recursive --force'
115 116
            sh 'mkdir build; cd build; ${QT_PATH}/${QMAKE_VER} -r ${WORKSPACE}/qgroundcontrol.pro CONFIG+=${QGC_CONFIG} CONFIG+=WarningsAsErrorsOn'
            sh 'cd build; make -j`sysctl -n hw.ncpu`'
117
            sh 'ccache -s'
118 119 120 121 122
          }
          post {
            cleanup {
              sh 'git clean -ff -x -d .'
            }
123 124
          }
        }
125

126 127 128 129 130 131 132
        stage('OSX Release') {
          agent {
            node {
              label 'mac'
            }
          }
          environment {
133
            CCACHE_BASEDIR = "${env.WORKSPACE}"
134
            QGC_CONFIG = 'installer'
135
            QMAKE_VER = "5.11.0/clang_64/bin/qmake"
136
          }
137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
          stages {
            stage('Clean Checkout') {
              steps {
                sh 'export'
                sh 'ccache -z'
                sh 'git submodule deinit -f .'
                sh 'git clean -ff -x -d .'
                sh 'git submodule update --init --recursive --force'
              }
            }

            stage('Add Airmap API key') {
              steps {
                withCredentials([file(credentialsId: 'QGC_Airmap_api_key', variable: 'AIRMAP_API_HEADER')]) {
                  sh 'cp $AIRMAP_API_HEADER ${WORKSPACE}/src/Airmap/Airmap_api_key.h'
                }
              }
              when {
                anyOf {
                  branch 'master';
                  branch 'Stable_*'
                }
              }
            }

            stage('Build OSX Release') {
              steps {
                sh 'mkdir build; cd build; ${QT_PATH}/${QMAKE_VER} -r ${WORKSPACE}/qgroundcontrol.pro CONFIG+=${QGC_CONFIG} CONFIG+=WarningsAsErrorsOn'
                sh 'cd build; make -j`sysctl -n hw.ncpu`'
                archiveArtifacts(artifacts: 'build/**/*.dmg', fingerprint: true)
                sh 'ccache -s'
              }
            }
170 171 172 173 174
          }
          post {
            cleanup {
              sh 'git clean -ff -x -d .'
            }
175 176
          }
        }
177

178 179 180
      } // parallel
    } // stage('build')
  } // stages
181

182
  environment {
PX4 Build Bot's avatar
PX4 Build Bot committed
183
    CCACHE_CPP2 = '1'
184 185
    CCACHE_DIR = '/tmp/ccache'
    QT_FATAL_WARNINGS = '1'
186
  }
187 188 189 190 191

  options {
    buildDiscarder(logRotator(numToKeepStr: '10', artifactDaysToKeepStr: '30'))
    timeout(time: 60, unit: 'MINUTES')
  }
192
}