forked from rook/rook
112 lines
4.9 KiB
Plaintext
112 lines
4.9 KiB
Plaintext
// Jenkins Pipelines for setting up 3 node rook cluster
|
|
|
|
pipeline {
|
|
|
|
parameters {
|
|
choice(name: 'node', choices: 'gce-reg\ngce-load', description: 'select env to run tests in ')
|
|
choice(name: 'key', choices: 'master\nPR', description: 'Select master or a PR to run tests aganist - defaults to master')
|
|
string(name: 'PR', defaultValue: '', description: 'PR number, required if key value is set to PR')
|
|
string(name: 'version', defaultValue: '', description: 'Version to run tests against')
|
|
string(name: 'kube_version', defaultValue: 'v1.8.2', description: 'Version of kubernetes to tests against')
|
|
}
|
|
|
|
agent { label "${params.node}-master" }
|
|
|
|
options {
|
|
disableConcurrentBuilds()
|
|
timestamps()
|
|
}
|
|
|
|
stages {
|
|
stage('set up rook images') {
|
|
steps {
|
|
script {
|
|
if ( "${params.key}" == 'PR' ){
|
|
if ( "${params.PR}" == '' ){
|
|
echo '[FAILURE] Need A valid PR number to continue'
|
|
currentBuild.result = 'FAILURE'
|
|
error 'Exit pipeline need a pr number'
|
|
}
|
|
sh "wget -O rook.tar.gz https://release.rook.io/build/pr/${params.PR}/${params.version}/images/linux_amd64/rook.tar.gz"
|
|
sh "wget -O toolbox.tar.gz https://release.rook.io/build/pr/${params.PR}/${params.version}/images/linux_amd64/toolbox.tar.gz"
|
|
sh "wget -O version https://release.rook.io/build/pr/${params.PR}/${params.version}/version"
|
|
|
|
}else {
|
|
sh "wget -O rook.tar.gz https://release.rook.io/build/master/${params.version}/images/linux_amd64/rook.tar.gz"
|
|
sh "wget -O toolbox.tar.gz https://release.rook.io/build/master/${params.version}/images/linux_amd64/toolbox.tar.gz"
|
|
sh "wget -O version https://release.rook.io/build/master/${params.version}/version"
|
|
|
|
}
|
|
stash name: 'test-scripts',includes: 'tests/scripts/'
|
|
stash name: 'test-images', includes: 'rook.tar.gz,toolbox.tar.gz,version'
|
|
}
|
|
}
|
|
}
|
|
//start 3 node k8s cluster
|
|
stage ("Set Up k8s") {
|
|
steps{
|
|
script{
|
|
withEnv(["KUBE_VERSION=${env.kube_version}"]){
|
|
echo "setting up 3 node k8s ${env.kube_version} cluster"
|
|
setUpRookImages()
|
|
sh '''#!/bin/bash
|
|
echo " setting up master"
|
|
export KUBE_VERSION='''+ "${env.kube_version}" + '''
|
|
kubeadm_join_flags="$(tests/scripts/kubeadm.sh install master | grep '^ *kubeadm join' | sed 's/^ *kubeadm join //')"
|
|
echo ${kubeadm_join_flags} > ktoken'''
|
|
script{
|
|
token = readFile('ktoken').trim()
|
|
}
|
|
node("${params.node}-n1"){
|
|
unstash 'test-images'
|
|
setUpRookImages()
|
|
unstash 'test-scripts'
|
|
sh '''#!/bin/bash
|
|
echo " setting up node 1"
|
|
export KUBE_VERSION='''+ "${env.kube_version}" + '''
|
|
tests/scripts/kubeadm.sh install node ''' + "${token}"
|
|
}
|
|
node("${params.node}-n2"){
|
|
unstash 'test-images'
|
|
setUpRookImages()
|
|
unstash 'test-scripts'
|
|
sh '''#!/bin/bash
|
|
echo " setting up node 2"
|
|
export KUBE_VERSION='''+ "${env.kube_version}" + '''
|
|
tests/scripts/kubeadm.sh install node ''' + "${token}"
|
|
}
|
|
sh '''#!/bin/bash
|
|
export KUBECONFIG=$HOME/admin.conf
|
|
tests/scripts/kubeadm.sh wait 3'''
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
post {
|
|
always {
|
|
deleteDir()
|
|
}
|
|
}
|
|
}
|
|
|
|
def setUpRookImages(){
|
|
//tag rook images need for testing
|
|
env.versionId = readFile('version').trim()
|
|
sh'''
|
|
#!/bin/bash
|
|
docker load -i rook.tar.gz
|
|
docker load -i toolbox.tar.gz
|
|
docker images
|
|
rookImg=$(docker images |grep rook | awk '{print $1}')
|
|
echo $rookImg
|
|
toolboxImg=$(docker images |grep toolbox | awk '{print $1}')
|
|
echo $toolboxImg
|
|
echo "helm Image:"
|
|
echo ${versionId}
|
|
docker tag $rookImg rook/rook:master
|
|
docker tag $rookImg rook/rook:${versionId}
|
|
docker tag $toolboxImg rook/toolbox:master'''
|
|
}
|