intel-device-plugins-for-ku.../Jenkinsfile
Mikko Ylinen fdc4703597 images: set 0.18.0 tag for the release
Signed-off-by: Mikko Ylinen <mikko.ylinen@intel.com>
2020-07-03 12:17:47 +03:00

188 lines
5.6 KiB
Groovy

pipeline {
agent {
label "master"
}
options {
timeout(time: 3, unit: "HOURS")
}
environment {
GO111MODULE="on"
REG="cloud-native-image-registry.westus.cloudapp.azure.com/"
RUNC_VERSION="v1.0.0-rc90"
CRIO_VERSION="v1.18.2"
GOLANGCI_LINT_VERSION="v1.27.0"
BUILDAH_VERSION="v1.14.9"
GO_VERSION="1.13.12"
GO_TAR="go${GO_VERSION}.linux-amd64.tar.gz"
GOROOT="/usr/local/go"
GOPATH="/tmp/go"
PATH="${env.PATH}:/usr/local/go/bin:${GOPATH}/bin"
REPO_NAME="intel-device-plugins-for-kubernetes"
REPO_DIR="$GOPATH/src/github.com/intel/${REPO_NAME}"
}
stages {
stage("Set env") {
when { changeRequest() }
steps {
script {
env.TAG = env.CHANGE_ID + '-rejected'
}
}
}
stage("Build && Publish") {
agent {
label "xenial-intel-device-plugins"
}
stages {
stage("Get requirements") {
parallel {
stage("go") {
steps {
sh "curl -O https://dl.google.com/go/${GO_TAR}"
sh "tar -xvf $GO_TAR"
sh "sudo mv go $GOROOT"
sh "mkdir -p $GOPATH/src/github.com/intel $GOPATH/bin"
sh "cp -rf ${env.WORKSPACE} $REPO_DIR"
sh "curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b ${GOPATH}/bin ${GOLANGCI_LINT_VERSION}"
}
}
stage("buildah") {
steps {
sh "sudo apt-get update"
sh "sudo apt-get -y install e2fslibs-dev libfuse-dev libgpgme11-dev libdevmapper-dev libglib2.0-dev libprotobuf-dev libusb-1.0-0-dev"
sh "mkdir -p ${GOPATH}/src/github.com/containers"
dir(path: "${GOPATH}/src/github.com/containers") {
sh "git clone --single-branch --depth 1 -b $BUILDAH_VERSION https://github.com/containers/buildah"
}
dir(path: "${GOPATH}/src/github.com/containers/buildah") {
sh 'make buildah TAGS=""'
sh "sudo cp buildah /usr/local/bin"
sh "sudo mkdir -p /etc/containers"
sh "sudo mkdir -p /etc/cni/net.d"
sh "sudo mkdir -p /opt/cni/bin"
sh "sed -i -e 's/build.sh/build_linux.sh/' Makefile"
sh "make install.cni.sudo"
sh '''echo '[registries.search]' > registries.conf'''
sh '''echo 'registries = ["docker.io"]' >> registries.conf'''
sh "sudo mv registries.conf /etc/containers/registries.conf"
sh "sudo curl https://raw.githubusercontent.com/kubernetes-sigs/cri-o/$CRIO_VERSION/test/policy.json -o /etc/containers/policy.json"
sh "sudo curl -L https://github.com/opencontainers/runc/releases/download/$RUNC_VERSION/runc.amd64 -o /usr/bin/runc"
sh "sudo chmod +x /usr/bin/runc"
}
}
}
}
}
stage("make go-mod-tidy") {
steps {
dir(path: "$REPO_DIR") {
sh "make go-mod-tidy"
}
}
}
stage("make lint"){
parallel {
stage("make lint") {
steps {
dir(path: "$REPO_DIR") {
sh "make lint"
}
}
}
stage("make test BUILDTAGS=kerneldrv") {
steps {
dir(path: "$REPO_DIR") {
sh "make test BUILDTAGS=kerneldrv"
}
}
}
}
}
stage('make pre-pull') {
steps {
dir(path: "$REPO_DIR") {
sh "make pre-pull"
}
}
}
stage('make images') {
parallel {
stage("make images with docker") {
steps {
dir(path: "$REPO_DIR") {
sh "make -j4 images"
}
}
}
stage("make images with buildah") {
steps {
dir(path: "$REPO_DIR") {
sh "make images BUILDER=buildah"
}
}
}
}
}
stage('make demos') {
parallel {
stage('make demos with docker') {
steps {
dir(path: "$REPO_DIR") {
sh "make demos"
}
}
}
stage('make demos with buildah') {
steps {
dir(path: "$REPO_DIR") {
sh "make demos BUILDER=buildah"
}
}
}
}
}
}
post {
success {
withDockerRegistry([ credentialsId: "e16bd38a-76cb-4900-a5cb-7f6aa3aeb22d", url: "https://${REG}" ]) {
sh "make push"
}
}
}
}
stage('Intel Device plugins') {
when {
beforeAgent true
allOf { changeRequest(); environment name: 'BMAAS', value: 'yes' }
}
agent {
label "clr-bmaas-intel-device-plugins"
}
environment {
WORKDIR="${env.WORKSPACE}/scripts/jenkins"
}
stages {
stage('Set tag') {
steps {
sh 'make set-version'
}
}
stage('Tests') {
steps {
dir(path: "$WORKDIR") {
sh 'make tests'
}
}
}
}
post {
always {
dir(path: "$WORKDIR") {
sh 'make logs'
}
}
}
}
}
}