diff --git a/ci/Jenkinsfile b/ci/Jenkinsfile new file mode 120000 index 0000000000..35f8dace38 --- /dev/null +++ b/ci/Jenkinsfile @@ -0,0 +1 @@ +Jenkinsfile.combined \ No newline at end of file diff --git a/ci/Jenkinsfile.combined b/ci/Jenkinsfile.combined new file mode 100644 index 0000000000..51300599da --- /dev/null +++ b/ci/Jenkinsfile.combined @@ -0,0 +1,63 @@ +library 'status-react-jenkins@v1.2.11' + +pipeline { + agent { label 'linux' } + + options { + timestamps() + disableConcurrentBuilds() + /* Prevent Jenkins jobs from running forever */ + timeout(time: 35, unit: 'MINUTES') + /* Limit builds retained */ + buildDiscarder(logRotator( + numToKeepStr: '10', + daysToKeepStr: '30', + artifactNumToKeepStr: '10', + )) + } + + stages { + stage('Build') { + parallel { + stage('Linux') { steps { script { + linux = jenkins.Build('status-desktop/platforms/linux') + } } } + stage('Windows') { steps { script { + windows = jenkins.Build('status-desktop/platforms/windows') + } } } + stage('MacOS') { steps { script { + macos = jenkins.Build('status-desktop/platforms/macos') + } } } + } + } + stage('Archive') { + steps { script { + sh('rm -f pkg/*') + jenkins.copyArts(linux) + jenkins.copyArts(windows) + jenkins.copyArts(macos) + sha = "pkg/${utils.pkgFilename('sha256')}" + dir('pkg') { + /* generate sha256 checksums for upload */ + sh "sha256sum * | tee ../${sha}" + archiveArtifacts('*') + } + } } + } + stage('Upload') { + steps { script { + /* object for easier URLs handling */ + urls = [ + /* mobile */ + Linux: utils.pkgUrl(linux), + Windows: utils.pkgUrl(windows), + MacOS: utils.pkgUrl(macos), + /* upload the sha256 checksums file too */ + SHA: s3.uploadArtifact(sha), + ] + /* add URLs to the build description */ + jenkins.setBuildDesc(urls) + } } + } + } +} diff --git a/ci/Jenkinsfile.linux b/ci/Jenkinsfile.linux index 870d3a0b60..bc2f4c9f35 100644 --- a/ci/Jenkinsfile.linux +++ b/ci/Jenkinsfile.linux @@ -37,6 +37,8 @@ pipeline { stages { stage('Deps') { steps { + /* trigger fetching of git submodules */ + sh 'make check-pkg-target-linux' /* avoid re-compiling Nim by using cache */ cache(maxCacheSize: 250, caches: [[ $class: 'ArbitraryFileCache', diff --git a/ci/Jenkinsfile.macos b/ci/Jenkinsfile.macos index 0c3f647789..bb348fd58e 100644 --- a/ci/Jenkinsfile.macos +++ b/ci/Jenkinsfile.macos @@ -33,6 +33,8 @@ pipeline { stages { stage('Deps') { steps { + /* trigger fetching of git submodules */ + sh 'make check-pkg-target-macos' /* avoid re-compiling Nim by using cache */ cache(maxCacheSize: 250, caches: [[ $class: 'ArbitraryFileCache', diff --git a/ci/Jenkinsfile.windows b/ci/Jenkinsfile.windows index bbc4e31895..c8eda2ba1a 100644 --- a/ci/Jenkinsfile.windows +++ b/ci/Jenkinsfile.windows @@ -43,6 +43,8 @@ pipeline { stages { stage('Deps') { steps { + /* trigger fetching of git submodules */ + sh 'make check-pkg-target-windows' /* avoid re-compiling Nim by using cache */ cache(maxCacheSize: 250, caches: [[ $class: 'ArbitraryFileCache',