| /* |
| * Copyright (C) 2022-2023 Savoir-faire Linux Inc. |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU Affero General Public License as |
| * published by the Free Software Foundation; either version 3 of the |
| * License, or (at your option) any later version. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU Affero General Public License for more details. |
| * |
| * You should have received a copy of the GNU Affero General Public |
| * License along with this program. If not, see |
| * <https://www.gnu.org/licenses/>. |
| */ |
| |
| // Requirements: |
| // - gerrit-trigger plugin |
| // - Docker plugin |
| // - ansicolor plugin |
| |
| pipeline { |
| agent { |
| node { |
| label 'jami-buildmachine-02.mtl.sfl' |
| } |
| } |
| |
| triggers { |
| gerrit customUrl: '', |
| gerritProjects: [ |
| [branches: [[compareType: 'PLAIN', pattern: 'master']], |
| compareType: 'PLAIN', |
| disableStrictForbiddenFileVerification: false, |
| pattern: 'jami-plugins']], |
| triggerOnEvents: [ |
| commentAddedContains('!build'), |
| patchsetCreated(excludeDrafts: true, excludeNoCodeChange: true, |
| excludeTrivialRebase: true)] |
| } |
| |
| options { |
| ansiColor('xterm') |
| } |
| |
| parameters { |
| string(name: 'GERRIT_REFSPEC', |
| defaultValue: 'refs/heads/master', |
| description: 'The Gerrit plugins refspec to fetch.') |
| string(name: 'DAEMON_REFSPEC', |
| defaultValue: 'refs/heads/master', |
| description: 'The Gerrit daemon refspec to fetch.') |
| string(name: 'dockerfile', |
| defaultValue: 'Dockerfile_android_onnxruntime', |
| description: 'Dockerfile in plugins/docker/ repository to use for the build') |
| string(name: 'GERRIT_TOPIC', |
| defaultValue: '', |
| description: 'topic must match the plugins name if the pipeline is to build that plugins.') |
| booleanParam(name: 'ARCHIVE', |
| defaultValue: false, |
| description: 'do not propagate the release artifacts to the download server.') |
| } |
| |
| environment { |
| jenkinsUID = sh(returnStdout: true, script: 'id -u jenkins').replaceAll("\n", '').trim() |
| jenkinsGID = sh(returnStdout: true, script: 'id -g jenkins').replaceAll("\n", '').trim() |
| jenkinsUser = '${jenkinsUID}:${jenkinsGID}' |
| cpuCount = sh returnStdout: true, script: 'nproc || echo -n 4' |
| } |
| |
| stages { |
| stage('SCM Checkout') { |
| steps { |
| // Wipe workspace and fetch jami-plugins |
| checkout changelog: true, poll: false, |
| scm: [$class: 'GitSCM', |
| branches: [[name: 'FETCH_HEAD']], |
| doGenerateSubmoduleConfigurations: false, |
| extensions: [ |
| [$class: 'CloneOption', noTags: true, reference: '', shallow: true], |
| [$class: 'WipeWorkspace']], |
| submoduleCfg: [], |
| userRemoteConfigs: [[refspec: '${GERRIT_REFSPEC}', url: 'https://${JAMI_GERRIT_URL}/jami-plugins']]] |
| } |
| } |
| |
| stage('Init repository') { |
| steps { |
| script { |
| sh """ |
| git rev-parse HEAD |
| git submodule update --init --recursive |
| """ |
| if (env.DAEMON_REFSPEC != null) { |
| sh """ |
| cd daemon |
| git fetch origin ${DAEMON_REFSPEC} && git checkout FETCH_HEAD |
| """ |
| } |
| } |
| } |
| } |
| |
| stage('Building Docker Image') { |
| steps { |
| script { |
| docker.build('plugins-android', "-f docker/${dockerfile} .") |
| } |
| } |
| } |
| |
| stage('Setup and Build Dependencies') { |
| steps { |
| script { |
| docker.image('plugins-android').withRun('-t \ |
| -v /var/lib/jenkins/android-plugins/tarballs:/home/gradle/jami/daemon/contrib/tarballs:rw \ |
| -v /var/lib/jenkins/android-plugins/aarch64-linux-android:/home/gradle/jami/daemon/contrib/aarch64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/native-aarch64-linux-android:/home/gradle/jami/daemon/contrib/native-aarch64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/x86_64-linux-android:/home/gradle/jami/daemon/contrib/x86_64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/native-x86_64-linux-android:/home/gradle/jami/daemon/contrib/native-x86_64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/arm-linux-android:/home/gradle/jami/daemon/contrib/arm-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/native-arm-linux-android:/home/gradle/jami/daemon/contrib/native-arm-linux-android:rw \ |
| -v '+pwd()+':/home/gradle/jami:rw -e BATCH_MODE=1', '/bin/bash') { |
| container -> code:{ |
| def base_cmd = 'docker exec -u '+jenkinsUser+' '+container.id+" sh -c '" |
| def base_root_cmd = 'docker exec '+container.id+" sh -c '" |
| def exec_cmd = { cmd -> sh script:base_cmd+cmd+"'" } |
| def exec_root_cmd = { cmd -> sh script:base_root_cmd+cmd+"'" } |
| |
| ansiColor('css') { |
| exec_cmd(""" |
| cd ./jami/contrib |
| python3 -m pip install -r ../SDK/requirements.txt |
| ANDROID_ABI="armeabi-v7a" sh build-dependencies.sh |
| ANDROID_ABI="arm64-v8a" sh build-dependencies.sh |
| ANDROID_ABI="x86_64" sh build-dependencies.sh |
| """) |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| stage('Build GreenScreen') { |
| steps { |
| script { |
| if(env.GERRIT_TOPIC == "all" || env.GERRIT_TOPIC == "GreenScreen") { |
| docker.image('plugins-android').withRun('-t \ |
| -v /var/lib/jenkins/android-plugins/tarballs:/home/gradle/jami/daemon/contrib/tarballs:rw \ |
| -v /var/lib/jenkins/android-plugins/aarch64-linux-android:/home/gradle/jami/daemon/contrib/aarch64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/native-aarch64-linux-android:/home/gradle/jami/daemon/contrib/native-aarch64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/x86_64-linux-android:/home/gradle/jami/daemon/contrib/x86_64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/native-x86_64-linux-android:/home/gradle/jami/daemon/contrib/native-x86_64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/arm-linux-android:/home/gradle/jami/daemon/contrib/arm-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/native-arm-linux-android:/home/gradle/jami/daemon/contrib/native-arm-linux-android:rw \ |
| -v '+pwd()+':/home/gradle/jami:rw -e BATCH_MODE=1', '/bin/bash') { |
| container -> code:{ |
| def base_cmd = 'docker exec -u '+jenkinsUser+' '+container.id+" sh -c '" |
| def base_root_cmd = 'docker exec '+container.id+" sh -c '" |
| def exec_cmd = { cmd -> sh script:base_cmd+cmd+"'" } |
| def exec_root_cmd = { cmd -> sh script:base_root_cmd+cmd+"'" } |
| |
| ansiColor('css') { |
| exec_cmd(""" |
| cd jami |
| ANDROID_ABI="armeabi-v7a arm64-v8a x86_64" python3 build-plugin.py --projects="GreenScreen" --distribution="android" |
| """) |
| } |
| } |
| } |
| if (env.ARCHIVE == 'false') { |
| sshagent(credentials: [env.SSH_CREDENTIALS]) { |
| // def sshPrivateKey = '/var/lib/jenkins/.ssh/gplpriv' |
| def remoteHost = env.SSH_HOST_DL_RING_CX |
| def remoteBaseDir = '/srv/repository/ring/plugins/GreenScreen/android' |
| |
| sh """ |
| rsync --verbose build/android/GreenScreen.jpl ${remoteHost}:${remoteBaseDir}/archive/GreenScreen-\$(date '+%Y%m%d%H%M').jpl |
| rsync --verbose build/android/GreenScreen.jpl ${remoteHost}:${remoteBaseDir}/GreenScreen.jpl |
| """ |
| } |
| } else { |
| archiveArtifacts 'build/android/GreenScreen.jpl' |
| } |
| } |
| } |
| } |
| } |
| |
| stage('Build AudioFilter') { |
| steps { |
| script { |
| if(env.GERRIT_TOPIC == "all" || env.GERRIT_TOPIC == "AudioFilter") { |
| docker.image('plugins-android').withRun('-t \ |
| -v /var/lib/jenkins/android-plugins/tarballs:/home/gradle/jami/daemon/contrib/tarballs:rw \ |
| -v /var/lib/jenkins/android-plugins/aarch64-linux-android:/home/gradle/jami/daemon/contrib/aarch64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/native-aarch64-linux-android:/home/gradle/jami/daemon/contrib/native-aarch64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/x86_64-linux-android:/home/gradle/jami/daemon/contrib/x86_64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/native-x86_64-linux-android:/home/gradle/jami/daemon/contrib/native-x86_64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/arm-linux-android:/home/gradle/jami/daemon/contrib/arm-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/native-arm-linux-android:/home/gradle/jami/daemon/contrib/native-arm-linux-android:rw \ |
| -v '+pwd()+':/home/gradle/jami:rw -e BATCH_MODE=1', '/bin/bash') { |
| container -> code:{ |
| def base_cmd = 'docker exec -u '+jenkinsUser+' '+container.id+" sh -c '" |
| def base_root_cmd = 'docker exec '+container.id+" sh -c '" |
| def exec_cmd = { cmd -> sh script:base_cmd+cmd+"'" } |
| def exec_root_cmd = { cmd -> sh script:base_root_cmd+cmd+"'" } |
| |
| ansiColor('css') { |
| exec_cmd(""" |
| cd jami |
| ANDROID_ABI="armeabi-v7a arm64-v8a x86_64" python3 build-plugin.py --projects="AudioFilter" --distribution="android" |
| """) |
| } |
| } |
| } |
| if (env.ARCHIVE == 'false') { |
| sshagent(credentials: [env.SSH_CREDENTIALS]) { |
| // def sshPrivateKey = '/var/lib/jenkins/.ssh/gplpriv' |
| def remoteHost = env.SSH_HOST_DL_RING_CX |
| def remoteBaseDir = '/srv/repository/ring/plugins/AudioFilter/android' |
| |
| sh """ |
| rsync --verbose build/android/AudioFilter.jpl ${remoteHost}:${remoteBaseDir}/archive/AudioFilter-\$(date '+%Y%m%d%H%M').jpl |
| rsync --verbose build/android/AudioFilter.jpl ${remoteHost}:${remoteBaseDir}/AudioFilter.jpl |
| """ |
| } |
| } else { |
| archiveArtifacts 'build/android/AudioFilter.jpl' |
| } |
| } |
| } |
| } |
| } |
| |
| stage('Build AutoAnswer') { |
| steps { |
| script { |
| if(env.GERRIT_TOPIC == "all" || env.GERRIT_TOPIC == "AutoAnswer") { |
| docker.image('plugins-android').withRun('-t \ |
| -v /var/lib/jenkins/android-plugins/tarballs:/home/gradle/jami/daemon/contrib/tarballs:rw \ |
| -v /var/lib/jenkins/android-plugins/aarch64-linux-android:/home/gradle/jami/daemon/contrib/aarch64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/native-aarch64-linux-android:/home/gradle/jami/daemon/contrib/native-aarch64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/x86_64-linux-android:/home/gradle/jami/daemon/contrib/x86_64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/native-x86_64-linux-android:/home/gradle/jami/daemon/contrib/native-x86_64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/arm-linux-android:/home/gradle/jami/daemon/contrib/arm-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/native-arm-linux-android:/home/gradle/jami/daemon/contrib/native-arm-linux-android:rw \ |
| -v '+pwd()+':/home/gradle/jami:rw -e BATCH_MODE=1', '/bin/bash') { |
| container -> code:{ |
| def base_cmd = 'docker exec -u '+jenkinsUser+' '+container.id+" sh -c '" |
| def base_root_cmd = 'docker exec '+container.id+" sh -c '" |
| def exec_cmd = { cmd -> sh script:base_cmd+cmd+"'" } |
| def exec_root_cmd = { cmd -> sh script:base_root_cmd+cmd+"'" } |
| |
| ansiColor('css') { |
| exec_cmd(""" |
| cd jami |
| ANDROID_ABI="armeabi-v7a arm64-v8a x86_64" python3 build-plugin.py --projects="AutoAnswer" --distribution="android" |
| """) |
| } |
| } |
| } |
| if (env.ARCHIVE == 'false') { |
| sshagent(credentials: [env.SSH_CREDENTIALS]) { |
| // def sshPrivateKey = '/var/lib/jenkins/.ssh/gplpriv' |
| def remoteHost = env.SSH_HOST_DL_RING_CX |
| def remoteBaseDir = '/srv/repository/ring/plugins/AutoAnswer/android' |
| |
| sh """ |
| rsync --verbose build/android/AutoAnswer.jpl ${remoteHost}:${remoteBaseDir}/archive/AutoAnswer-\$(date '+%Y%m%d%H%M').jpl |
| rsync --verbose build/android/AutoAnswer.jpl ${remoteHost}:${remoteBaseDir}/AutoAnswer.jpl |
| """ |
| } |
| } else { |
| archiveArtifacts 'build/android/AutoAnswer.jpl' |
| } |
| } |
| } |
| } |
| } |
| |
| stage('Build WaterMark') { |
| steps { |
| script { |
| if(env.GERRIT_TOPIC == "all" || env.GERRIT_TOPIC == "WaterMark") { |
| docker.image('plugins-android').withRun('-t \ |
| -v /var/lib/jenkins/android-plugins/tarballs:/home/gradle/jami/daemon/contrib/tarballs:rw \ |
| -v /var/lib/jenkins/android-plugins/aarch64-linux-android:/home/gradle/jami/daemon/contrib/aarch64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/native-aarch64-linux-android:/home/gradle/jami/daemon/contrib/native-aarch64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/x86_64-linux-android:/home/gradle/jami/daemon/contrib/x86_64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/native-x86_64-linux-android:/home/gradle/jami/daemon/contrib/native-x86_64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/arm-linux-android:/home/gradle/jami/daemon/contrib/arm-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/native-arm-linux-android:/home/gradle/jami/daemon/contrib/native-arm-linux-android:rw \ |
| -v '+pwd()+':/home/gradle/jami:rw -e BATCH_MODE=1', '/bin/bash') { |
| container -> code:{ |
| def base_cmd = 'docker exec -u '+jenkinsUser+' '+container.id+" sh -c '" |
| def base_root_cmd = 'docker exec '+container.id+" sh -c '" |
| def exec_cmd = { cmd -> sh script:base_cmd+cmd+"'" } |
| def exec_root_cmd = { cmd -> sh script:base_root_cmd+cmd+"'" } |
| |
| ansiColor('css') { |
| exec_cmd(""" |
| cd jami |
| ANDROID_ABI="armeabi-v7a arm64-v8a x86_64" python3 build-plugin.py --projects="WaterMark" --distribution="android" |
| """) |
| } |
| } |
| } |
| if (env.ARCHIVE == 'false') { |
| sshagent(credentials: [env.SSH_CREDENTIALS]) { |
| def remoteHost = env.SSH_HOST_DL_RING_CX |
| def remoteBaseDir = '/srv/repository/ring/plugins/WaterMark/android' |
| |
| sh """ |
| rsync --verbose build/android/WaterMark.jpl ${remoteHost}:${remoteBaseDir}/archive/WaterMark-\$(date '+%Y%m%d%H%M').jpl |
| rsync --verbose build/android/WaterMark.jpl ${remoteHost}:${remoteBaseDir}/WaterMark.jpl |
| """ |
| } |
| } else { |
| archiveArtifacts 'build/android/WaterMark.jpl' |
| } |
| } |
| } |
| } |
| } |
| |
| stage('Build Whisper') { |
| steps { |
| script { |
| if(env.GERRIT_TOPIC == "all" || env.GERRIT_TOPIC == "Whisper" || env.GERRIT_TOPIC == "WhisperTranscript") { |
| docker.image('plugins-android').withRun('-t \ |
| -v /var/lib/jenkins/android-plugins/tarballs:/home/gradle/jami/daemon/contrib/tarballs:rw \ |
| -v /var/lib/jenkins/android-plugins/aarch64-linux-android:/home/gradle/jami/daemon/contrib/aarch64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/native-aarch64-linux-android:/home/gradle/jami/daemon/contrib/native-aarch64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/x86_64-linux-android:/home/gradle/jami/daemon/contrib/x86_64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/native-x86_64-linux-android:/home/gradle/jami/daemon/contrib/native-x86_64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/arm-linux-android:/home/gradle/jami/daemon/contrib/arm-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/native-arm-linux-android:/home/gradle/jami/daemon/contrib/native-arm-linux-android:rw \ |
| -v '+pwd()+':/home/gradle/jami:rw -e BATCH_MODE=1', '/bin/bash') { |
| container -> code:{ |
| def base_cmd = 'docker exec -u '+jenkinsUser+' '+container.id+" sh -c '" |
| def base_root_cmd = 'docker exec '+container.id+" sh -c '" |
| def exec_cmd = { cmd -> sh script:base_cmd+cmd+"'" } |
| def exec_root_cmd = { cmd -> sh script:base_root_cmd+cmd+"'" } |
| |
| ansiColor('css') { |
| exec_cmd(""" |
| cd jami |
| AUTHOR="SFL" DIVISION="Internal" ANDROID_ABI="arm64-v8a" python3 build-plugin.py --projects="WhisperTranscript" --distribution="android" |
| """) |
| } |
| } |
| } |
| if (env.ARCHIVE == 'false') { |
| sshagent(credentials: [env.SSH_CREDENTIALS]) { |
| // def sshPrivateKey = '/var/lib/jenkins/.ssh/gplpriv' |
| def remoteHost = env.SSH_HOST_DL_RING_CX |
| def remoteBaseDir = '/srv/repository/ring/plugins/WhisperTranscript/android' |
| |
| sh """ |
| rsync --verbose build/android/WhisperTranscript.jpl ${remoteHost}:${remoteBaseDir}/archive/WhisperTranscript-\$(date '+%Y%m%d%H%M').jpl |
| rsync --verbose build/android/WhisperTranscript.jpl ${remoteHost}:${remoteBaseDir}/WhisperTranscript.jpl |
| """ |
| } |
| } else { |
| archiveArtifacts 'build/android/WhisperTranscript.jpl' |
| } |
| } |
| } |
| } |
| } |
| |
| stage('Build Dispatcher') { |
| steps { |
| script { |
| if(env.GERRIT_TOPIC == "all" || env.GERRIT_TOPIC == "Dispatcher") { |
| docker.image('plugins-android').withRun('-t \ |
| -v /var/lib/jenkins/android-plugins/tarballs:/home/gradle/jami/daemon/contrib/tarballs:rw \ |
| -v /var/lib/jenkins/android-plugins/aarch64-linux-android:/home/gradle/jami/daemon/contrib/aarch64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/native-aarch64-linux-android:/home/gradle/jami/daemon/contrib/native-aarch64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/x86_64-linux-android:/home/gradle/jami/daemon/contrib/x86_64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/native-x86_64-linux-android:/home/gradle/jami/daemon/contrib/native-x86_64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/arm-linux-android:/home/gradle/jami/daemon/contrib/arm-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/native-arm-linux-android:/home/gradle/jami/daemon/contrib/native-arm-linux-android:rw \ |
| -v '+pwd()+':/home/gradle/jami:rw -e BATCH_MODE=1', '/bin/bash') { |
| container -> code:{ |
| def base_cmd = 'docker exec -u '+jenkinsUser+' '+container.id+" sh -c '" |
| def base_root_cmd = 'docker exec '+container.id+" sh -c '" |
| def exec_cmd = { cmd -> sh script:base_cmd+cmd+"'" } |
| def exec_root_cmd = { cmd -> sh script:base_root_cmd+cmd+"'" } |
| |
| ansiColor('css') { |
| exec_cmd(""" |
| cd jami |
| ANDROID_ABI="armeabi-v7a arm64-v8a x86_64" python3 build-plugin.py --projects="Dispatcher" --distribution="android" |
| """) |
| } |
| } |
| } |
| if (env.ARCHIVE == 'false') { |
| sshagent(credentials: [env.SSH_CREDENTIALS]) { |
| def remoteHost = env.SSH_HOST_DL_RING_CX |
| def remoteBaseDir = '/srv/repository/ring/plugins/Dispatcher/android' |
| |
| sh """ |
| rsync --verbose build/android/Dispatcher.jpl ${remoteHost}:${remoteBaseDir}/archive/Dispatcher-\$(date '+%Y%m%d%H%M').jpl |
| rsync --verbose build/android/Dispatcher.jpl ${remoteHost}:${remoteBaseDir}/Dispatcher.jpl |
| """ |
| } |
| } else { |
| archiveArtifacts 'build/android/Dispatcher.jpl' |
| } |
| } |
| } |
| } |
| } |
| |
| stage('Build Agent') { |
| steps { |
| script { |
| if(env.GERRIT_TOPIC == "all" || env.GERRIT_TOPIC == "Agent") { |
| docker.image('plugins-android').withRun('-t \ |
| -v /var/lib/jenkins/android-plugins/tarballs:/home/gradle/jami/daemon/contrib/tarballs:rw \ |
| -v /var/lib/jenkins/android-plugins/aarch64-linux-android:/home/gradle/jami/daemon/contrib/aarch64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/native-aarch64-linux-android:/home/gradle/jami/daemon/contrib/native-aarch64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/x86_64-linux-android:/home/gradle/jami/daemon/contrib/x86_64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/native-x86_64-linux-android:/home/gradle/jami/daemon/contrib/native-x86_64-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/arm-linux-android:/home/gradle/jami/daemon/contrib/arm-linux-android:rw \ |
| -v /var/lib/jenkins/android-plugins/native-arm-linux-android:/home/gradle/jami/daemon/contrib/native-arm-linux-android:rw \ |
| -v '+pwd()+':/home/gradle/jami:rw -e BATCH_MODE=1', '/bin/bash') { |
| container -> code:{ |
| def base_cmd = 'docker exec -u '+jenkinsUser+' '+container.id+" sh -c '" |
| def base_root_cmd = 'docker exec '+container.id+" sh -c '" |
| def exec_cmd = { cmd -> sh script:base_cmd+cmd+"'" } |
| def exec_root_cmd = { cmd -> sh script:base_root_cmd+cmd+"'" } |
| |
| ansiColor('css') { |
| exec_cmd(""" |
| cd jami |
| ANDROID_ABI="armeabi-v7a arm64-v8a x86_64" python3 build-plugin.py --projects="Agent" --distribution="android" |
| """) |
| } |
| } |
| } |
| if (env.ARCHIVE == 'false') { |
| sshagent(credentials: [env.SSH_CREDENTIALS]) { |
| def remoteHost = env.SSH_HOST_DL_RING_CX |
| def remoteBaseDir = '/srv/repository/ring/plugins/Agent/android' |
| |
| sh """ |
| rsync --verbose build/android/Agent.jpl ${remoteHost}:${remoteBaseDir}/archive/Agent-\$(date '+%Y%m%d%H%M').jpl |
| rsync --verbose build/android/Agent.jpl ${remoteHost}:${remoteBaseDir}/Agent.jpl |
| """ |
| } |
| } else { |
| archiveArtifacts 'build/android/Agent.jpl' |
| } |
| } |
| } |
| } |
| } |
| } |
| } |