avatar

Wz Blog

运维学习・持续更新

  • 首页
  • 文章
  • 登录/注册
  • 管理后台
主页 jenkins流水线代码
文章

jenkins流水线代码

发表于 2026-10-11 更新于 2026-10- 11
作者 Administrator
8~11 分钟 阅读

▶ 指定命名空间创建:

pipeline {

agent {

kubernetes {

yaml '''


apiVersion: v1
kind: Pod
metadata:
labels:
jenkins: agent
spec:
securityContext:
runAsUser: 0
runAsGroup: 0
serviceAccountName: jenkins-k8s-sa
containers:
- name: jnlp
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/jenkins/inbound-agent:latest-jdk21
resources:
requests:
cpu: "500m"
memory: "512Mi"
env:
- name: JENKINS_URL
value: "http://jenkins-service.devops.svc.cluster.local:8080"
- name: JENKINS_TUNNEL
value: "jenkins-service.devops.svc.cluster.local:50000"
args: ['\$(JENKINS_SECRET)', '\$(JENKINS_NAME)']
- name: docker
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/docker:24.0.7-cli
command: ["cat"]
tty: true
resources:
requests:
cpu: "200m"
memory: "256Mi"
volumeMounts:
- name: docker-sock
mountPath: /var/run/docker.sock
- name: kubectl
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/bitnami/kubectl:latest
command: ["cat"]
tty: true
resources:
requests:
cpu: "200m"
memory: "256Mi"
volumeMounts:
- name: kube-config
mountPath: /root/.kube
volumes:
- name: docker-sock
hostPath:
path: /var/run/docker.sock
- name: kube-config
hostPath:
path: /root/.kube # 或使用Secret挂载kubeconfig
'''
}
}
stages {

stage("拉取代码") {

steps {

container('jnlp') {

withCredentials([sshUserPrivateKey(credentialsId: 'gitlab-ssh-wz', keyFileVariable: 'GIT_SSH_KEY')]) {

sh '''


mkdir -p ~/.ssh
cp ${GIT_SSH_KEY} ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
ssh-keyscan -p 30010 47.114.115.216 >> ~/.ssh/known_hosts
'''
git credentialsId: 'gitlab-ssh-wz',
url: 'ssh://git@47.114.115.216:30010/wz/devops_demo01.git',
branch: 'master'
}
}
}
}

stage("检查拉取是否成功") {

steps {

container('jnlp') {


echo "检查拉取的代码"
sh 'ls .'
sh 'pwd'
}
}
}

stage("代码打包") {

steps {

container('docker') {

sh "docker build -t devops_demo01:${BUILD_NUMBER} ."

}

}

}

stage("把镜像上传到ACR") {

steps {

container('docker') {

withCredentials([usernamePassword(credentialsId: 'aliyun-acr', passwordVariable: 'PASSWORD', usernameVariable: 'USER')]) {

sh """


docker login crpi-x18gygajobo49quk.cn-shanghai.personal.cr.aliyuncs.com -u ${USER} -p ${PASSWORD}
docker tag devops_demo01:${BUILD_NUMBER} crpi-x18gygajobo49quk.cn-shanghai.personal.cr.aliyuncs.com/wz_image/devops:devops_demo01-${BUILD_NUMBER}
docker push crpi-x18gygajobo49quk.cn-shanghai.personal.cr.aliyuncs.com/wz_image/devops:devops_demo01-${BUILD_NUMBER}
"""
}
}
}
}

stage('部署这个应用') {

steps {

script {

def approval = input(

message: '选择部署的空间?',

ok: '是的',

parameters: [

choice(choices: 'prod\ndev\ntest', description: '选择部署环境', name: 'ENV')

]

)


echo "用户同意部署到 ${approval}"
container('kubectl') {
sh """
sed -i "s@<CON_IMG>@crpi-x18gygajobo49quk.cn-shanghai.personal.cr.aliyuncs.com/wz_image/devops:devops_demo01-${BUILD_NUMBER}@g" k8s-devops-demo01.yml
sed -i "s@<NAMESPACE>@${approval}@g" k8s-devops-demo01.yml
kubectl get ns ${approval} > /dev/null 2>&1 || kubectl create ns ${approval}
kubectl apply -f k8s-devops-demo01.yml
sleep 10
kubectl -n ${approval} get pods
"""
}
}
}
}
}
}
自动化与CICD
笔记 CI/CD
许可协议:  CC BY 4.0
分享

相关文章

10月 11, 2026

jenkins流水线代码

▶ 指定命名空间创建: pipeline { agent { kubernetes { yaml ''' apiVersion: v1 kind: Pod metadata: labels: jenkins: agent spec: securityContext: runAsUser: 0 ru

10月 11, 2026

Jenkins部署yaml文件

▶ ServiceAccount.yaml apiVersion: v1 kind: ServiceAccount metadata: name: jenkins-k8s-sa namespace: devops --- apiVersion: rbac.authorization.k8s.io/

10月 11, 2026

Gitlab搭建

▶ 1.下载镜像 ▶ 2.准备宿主机映射目录 mkdir -p ~/gitlab/{etc,log,data} ▶ 写配置文件(~/gitlab/etc/girlab.rb) external_url 'http://47.98.48.243' #设置实例的外部访问URL gitlab_rail

下一篇

k8s安全认证

上一篇

VLLM ⽅式部署⼤语⾔模型

最近更新

  • Kubernetes v1.28.2 双Master堆叠etcd + Haproxy/Keepalived 高可用部署 SOP(Docker + cri-dockerd)
  • 名词解释
  • ECS 实例反复冻结 —— 故障根因分析报告
  • 运维六大工作内容
  • 磁盘相关命令

热门标签

监控 Linux 数据库 Docker 笔记 CI/CD Kubernetes Nginx

目录

©2026 Wz Blog. 保留部分权利。

使用 Halo 主题 Chirpy