diff --git a/jenkins/Jenkinsfile b/jenkins/Jenkinsfile new file mode 100644 index 0000000..7edffca --- /dev/null +++ b/jenkins/Jenkinsfile @@ -0,0 +1,84 @@ +podTemplate(label: 'node-0', containers: [ + containerTemplate( + name: 'jnlp', + image: 'eggsy84/gcp-jenkins-slave-k8s-seed:latest', + ttyEnabled: false, + command: '', + privileged: true, + alwaysPullImage: false, + workingDir: '/home/jenkins', + args: '${computer.jnlpmac} ${computer.name}' + ) + ], + volumes: [ + secretVolume(mountPath: '/opt/config', secretName: 'gcloud-svc-account'), + hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock'), + persistentVolumeClaim(claimName: 'data-claim-compile', mountPath: '/data'), + ] +) { + node('node-0') { + stage('Compile') { + sh 'gcloud auth activate-service-account --key-file=/opt/config/gcloud-svc-account.json' + sh 'cd /data && rm -Rf *' + sh 'cd /data && git clone https://github.com/googlecartographer/cartographer_ros' + sh 'cd /data/cartographer_ros && docker build -f jenkins/Dockerfile.kinetic -t kinetic-jenkins-slave .' + } + stage('Push') { + sh 'docker tag kinetic-jenkins-slave eu.gcr.io/cartographer-141408/kinetic-jenkins-slave' + sh 'gcloud docker -- push eu.gcr.io/cartographer-141408/kinetic-jenkins-slave' + sh 'cd /data && rm -Rf *' + } + } +} + +podTemplate(label: 'node-1', containers: [ + containerTemplate( + name: 'jnlp', + image: 'eu.gcr.io/cartographer-141408/kinetic-jenkins-slave:latest', + ttyEnabled: false, + command: '', + privileged: true, + alwaysPullImage: true, + workingDir: '/home/jenkins', + args: '${computer.jnlpmac} ${computer.name}' + ) + ], + volumes: [ + secretVolume(mountPath: '/opt/config', secretName: 'gcloud-svc-account'), + hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock'), + persistentVolumeClaim(claimName: 'data-claim-compile', mountPath: '/data'), + ] +) { + node('node-1') { + stage('Run Fetch Pipeline') { + sh 'gcloud auth activate-service-account --key-file=/opt/config/gcloud-svc-account.json' + sh 'GOOGLE_APPLICATION_CREDENTIALS="/opt/config/gcloud-svc-account.json" GOOGLE_CLOUD_DISABLE_GRPC=True python /worker.py --worker_id 0 --num_workers 1 --pipeline_id fetch' + } + } +} + +podTemplate(label: 'node-2', containers: [ + containerTemplate( + name: 'jnlp', + image: 'eu.gcr.io/cartographer-141408/kinetic-jenkins-slave:latest', + ttyEnabled: false, + command: '', + privileged: true, + alwaysPullImage: true, + workingDir: '/home/jenkins', + args: '${computer.jnlpmac} ${computer.name}' + ) + ], + volumes: [ + secretVolume(mountPath: '/opt/config', secretName: 'gcloud-svc-account'), + hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock'), + persistentVolumeClaim(claimName: 'data-claim-compile', mountPath: '/data'), + ] +) { + node('node-2') { + stage('Run Backpack Pipeline') { + sh 'gcloud auth activate-service-account --key-file=/opt/config/gcloud-svc-account.json' + sh 'GOOGLE_APPLICATION_CREDENTIALS="/opt/config/gcloud-svc-account.json" GOOGLE_CLOUD_DISABLE_GRPC=True python /worker.py --worker_id 0 --num_workers 1 --pipeline_id backpack' + } + } +}