1、 Rancher创建 PVC
工作负载 -> PVC
maven缓存PVC:pvc-jenkins-maven
2、Jenkins配置Kubernetes Pod Template
名称:jenkins-slave
标签列表:jenkins-slave
用法:尽可能的使用这个节点
3、 配置Container Template
4、 配置挂载卷
5、Jenkins项目创建
创建对应项目的流水线项目
java后端pipeline
#!groovy
pipeline {
environment {
IMAGE_TAG = sh (returnStdout: true, script: 'echo "build-${BRANCH_NAME//\\//_}-$BUILD_NUMBER"').trim()
REPOSITORY="http://10.12.20.21/root/kakj-nvr-back.git"
}
agent {
node{
label 'jenkins-slave'
}
}
stages{
stage('拉取代码'){
steps{
echo "start fetch code from git:${REPOSITORY}"
deleteDir()
git branch: 'master',credentialsId: 'gitlab', url: "${REPOSITORY}"
}
}
stage('编译代码') {
steps {
container('maven') {
echo '******************************开始编译源码******************************'
sh 'mvn clean package -Dmaven.test.skip=true'
}
}
}
stage('构建并推送镜像') {
steps {
container('docker') {
script {
echo "构建Docker镜像"
def image = docker.build("10.12.20.20/nvr/kakj-nvr-back:" + "$IMAGE_TAG", ".")
withDockerRegistry([credentialsId:'docker-registry', url:"http://10.12.20.20"]){
image.push()
}
}
}
}
}
stage('发布'){
steps{
container('kubectl') {
script {
echo "部署项目"
withKubeConfig(clusterName: 'demo', contextName: 'nvr', credentialsId: 'cide', namespace: 'demo', serverUrl: 'https://kubernetes.default.svc.cluster.local') {
sh 'kubectl set image deployment/nvr-back nvr-back=10.12.20.20/nvr/kakj-nvr-back:$IMAGE_TAG --namespace demo'
}
}
}
}
}
}
}
前端pipeline
#!groovy
pipeline {
environment {
IMAGE_TAG = sh (returnStdout: true, script: 'echo "build-${BRANCH_NAME//\\//_}-$BUILD_NUMBER"').trim()
REPOSITORY="http://10.12.20.21/root/web_nvr.git"
}
agent {
node{
label 'jenkins-slave'
}
}
stages{
stage('拉取代码'){
steps{
echo "start fetch code from git:${REPOSITORY}"
deleteDir()
git branch: 'master',credentialsId: 'gitlab', url: "${REPOSITORY}"
}
}
stage('编译代码') {
steps {
container('node') {
script {
echo '******************************开始编译源码******************************'
sh 'npm install -g cnpm --registry=https://registry.npm.taobao.org'
sh 'cnpm install'
sh 'cnpm run build --prod'
}
}
}
}
stage('构建并推送镜像') {
steps {
container('docker') {
script {
echo "构建Docker镜像"
def image = docker.build("10.12.20.20/nvr/kakj-nvr-nginx:" + "$IMAGE_TAG", ".")
withDockerRegistry([credentialsId:'docker-registry', url:"http://10.12.20.20"]){
image.push()
}
}
}
}
}
stage('发布'){
steps{
container('kubectl') {
script {
echo "部署项目"
withKubeConfig(clusterName: 'demo', contextName: 'demo', credentialsId: 'cide', namespace: 'nvr', serverUrl: 'https://kubernetes.default.svc.cluster.local') {
sh 'kubectl set image deployment/nvr-nginx nvr-nginx=10.12.20.20/nvr/kakj-nvr-nginx:$IMAGE_TAG --namespace nvr'
}
}
}
}
}
}
}
关注公众号,发送 yys 获取《阿里云原生架构白皮书》。