Jenkins使用Pipeline 使用 Kubernetes pod tmp编译java程序
Jenkisn使用K8s插件模板方式编译
我使用的是Helm安装的Jenkins所以安装完毕就有Kubernetes插件,如果不是需要去安装Kubernetes插件
安装Jenkins没啥说的,KubernetesHelm安装很简单
官网写的很清楚了,随便看看安装了行了 https://www.jenkins.io/doc/book/installing/kubernetes/
安装Kubernetes插件(Helm安装可以忽略)
配置POD Template
Manager Jenkins -> Manager Nodes and Clouds -> Configure Clouds
在Configure Cloud页面先配置K8S相关信息,
这里要按照需求去配置,能按的了K8S集群的也不需要什么指导按照信息配置就行.
配置Pod Template
配置 POD Template容器相关信息,这里以Java做示例
填写POD Template 名称
我这里填写mave,
配置POD Template Details
修改以下参数: 名称和maven,命名空间按需填写(我填写的我Jenkins的namespace)
配置容器列表 这里的Jnlp一般留着,修改下运行命令为jenkins-slave
添加一个新容器,这个容器是用来编译你程序的容器,所以需要安装编译的环境,比如我这边Java是用maven编译的 我就搞了个Java和Maven的容器
这里注意 要点分配为终端,Harbor仓库是私有的,大家访问不到按需编译就行,高级里面可以配置CPU 内存等信息,容器这就配置完毕,下面可以根据需要配置环境变量,目录映射等,因为我这边用的maven,仓库没必要每次编译都下载一次,所以我这边把maven参数的目录指定到我这边的PVC中了
再往下配置下模板的一些信息就行,比如我这边就针对maven配置了下maven的setting从cm中获取,免得以后改还要改容器
然后可以创建Pipeline使用POD模板了,相对于在Pipeline中使用yaml这么做pipeline比较清爽,后面修改编译容器不至于每个pipeline去修改,这里分享下我的Demo pipeline
def basedir='Wit-Web'
pipeline {
agent {
kubernetes {
label 'maven'
}
}
environment {
DEPLOY_ENV='dev'
PROJECT='witparking'
DOCKER_NAME='baseplatform-provider'
DOCKER_HUB='harbor.sonli.net'
}
stages {
stage('获取代码') {
steps {
echo "BRANCH:${params.BRANCH}"
git(credentialsId: 'ssh-key', url: 'git@XXXXX:zhoukai/XX-cd.git', branch: 'feature/dev_docker', changelog: true, poll: false)
}
}
stage('打包Jar') {
steps {
container ('maven'){
sh 'mvn install -Dmaven.test.skip=true'
}
}
}
stage('打包Docker'){
steps {
container ('maven') {
echo "start build image"
// build镜像
dir(basedir) { //切换文件夹 执行如下命令
sh 'docker build -t $PROJECT/$DOCKER_NAME-$DEPLOY_ENV:$BUILD_NUMBER .'
// 登录镜像仓库
sh 'docker login -u admin -p XXXXX $DOCKER_HUB'
sh 'docker tag $PROJECT/$DOCKER_NAME-$DEPLOY_ENV:$BUILD_NUMBER $DOCKER_HUB/$PROJECT/$DOCKER_NAME-$DEPLOY_ENV:$BUILD_NUMBER'
// 推送镜像到镜像仓库
sh 'docker push $DOCKER_HUB/$PROJECT/$DOCKER_NAME-$DEPLOY_ENV:$BUILD_NUMBER'
}
}
}
}
}
}
更多推荐
所有评论(0)