pipeline {
environment {
name="miniprogram"
image="xxx.jbjb.com/libary/zhihui-hr:${name}$BUILD_ID"
}
agent {
kubernetes {
inheritFrom 'maven-test'
}
}
stages {
stage('Get Code') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/sit']], extensions: [], userRemoteConfigs: [[credentialsId: 'vip', url: 'https://gitlab.jbjb.com/wanghui/miniprogram.git']]])
}
}
stage('Test-maven36....') {
steps {
container('maven363'){
sh 'mvn -v'
}
}
}
stage('Test-docker....') {
steps {
container('docker'){
sh 'docker info'
//script{
//dockerlmage = docker.build name + ":" + ${BUILD_ID}
}
}
}
}
}
是maven项目记得配置存储哦
1.方式获取k8s密钥
cat .kube/config
2.导出方式或者密钥
kubectl config view --raw > k8s-config-admin
添加一个kubectl容器
stage('Deploy....') {
steps {
container('kubectl'){
withKubeConfig([credentialsId:'kj8s',namespace:'default']) {
sh "sed -i 's#{{image}}#${image}#g' k8s.yaml"
sh 'cat k8s.yaml'
sh 'kubectl apply -f k8s.yaml'
}
}
}
}
https://www.jenkins.io/doc/pipeline/steps/kubernetes-cli/
https://github.com/jenkinsci/kubernetes-cli-plugin/blob/master/README.md
完整pipeline
pipeline {
environment {
name="miniprogramnx"
image="www.jbjb.com/libary/jr-prod-01:${name}$BUILD_ID"
}
agent {
kubernetes {
inheritFrom 'maven-test'
}
}
stages {
stage('Get Code') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/sit']], extensions: [], userRemoteConfigs: [[credentialsId: 'vip', url: 'https://git.jbjb.com/wanghui/miniprogram.git']]])
}
}
stage('Node-build') {
steps {
container('node'){
sh '''
npm install cnpm -g --registry=https://registry.npm.taobao.org
npm config set registry https://registry.npm.taobao.org
npm config get registry
cnpm install
cnpm run build:sit
'''
}
}
}
stage('Docker-build') {
steps {
container('docker'){
#docker登录凭据配置不再讲了
withCredentials([usernamePassword(credentialsId: 'dockeropa', passwordVariable: 'Password', usernameVariable: 'Username')]) {
sh '''
docker login -u$Username -p$Password ccr.ccs.tencentyun.com
docker build -t ${name}:${BUILD_ID} .
docker tag ${name}:${BUILD_ID} ${image}
docker push ${image}
echo ${image}
docker rmi ${image}
docker rmi ${name}:${BUILD_ID}
echo ${name}:${BUILD_ID}
'''
//script{
//dockerlmage = docker.build name + ":" + ${BUILD_ID}
}
}
}
}
stage('Deploy....') {
steps {
container('kubectl'){
withKubeConfig([credentialsId:'kj8s',namespace:'default']) {
sh "sed -i 's#{{image}}#${image}#g' k8s.yaml"
sh 'cat k8s.yaml'
sh 'kubectl apply -f k8s.yaml'
}
}
}
}
}
}
cat <<END>k8s.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: {{image}}
ports:
- containerPort: 80
resources:
limits:
memory: 2Gi
requests:
cpu: 100m
memory: 0.5Gi
---
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
type: NodePort
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80
#nodePort: 30019
selector:
app: nginx
END