1. 创建流水线项目

2. 首先去流水线项目 创建三个凭证

- kubeconfig类型:默认内容为当前用户的 kubeconfig 配置。 选择此类型创建默认有值
- 用户名密码(my-login):git账号和密码
- 用户名密码(my-aliyun-docker):阿里云容器镜像仓库账号密码
3. 创建流水线

4. 流水线Jenkinsfile文件
| pipeline { |
| agent { |
| node { |
| label 'maven' |
| } |
| |
| } |
| stages { |
| stage('拉取') { |
| agent none |
| steps { |
| git(url: 'https://gitee.com/wy521a/dream-yard-admin.git', credentialsId: 'my-login', changelog: true, poll: false, branch: 'master') |
| sh 'ls' |
| } |
| } |
| |
| stage('编译') { |
| agent none |
| steps { |
| container('maven') { |
| sh 'ls' |
| sh 'mvn clean package -Dmaven.test.skip=true' |
| sh 'ls ruoyi-admin/target/' |
| } |
| |
| } |
| } |
| |
| stage('打包') { |
| agent none |
| steps { |
| container('maven') { |
| sh 'ls ruoyi-admin/target/' |
| sh 'docker build -t dream-yard-admin:latest .' |
| } |
| |
| } |
| } |
| |
| stage('推送') { |
| agent none |
| steps { |
| container('maven') { |
| withCredentials([usernamePassword(credentialsId : 'my-aliyun-docker' ,passwordVariable : 'DOCKER_USER' ,usernameVariable : 'DOCKER_PASSWORD' ,)]) { |
| sh 'echo 镜像库密码 | docker login 镜像库地址 -u 镜像库账号 -p 镜像库密码' |
| sh 'docker tag dream-yard-admin:latest 镜像库地址/dream-yard/dream-yard-admin:$BUILD_NUMBER' |
| sh 'docker push 镜像库地址/dream-yard/dream-yard-admin:$BUILD_NUMBER' |
| } |
| |
| } |
| |
| } |
| } |
| |
| stage('部署') { |
| agent none |
| steps { |
| container('maven') { |
| withCredentials([ |
| kubeconfigFile( |
| credentialsId: 'kubeconfig', |
| variable: 'KUBECONFIG') |
| ]) { |
| sh 'envsubst < ruoyi-admin/deploy/deploy.yaml | kubectl apply -f -' |
| } |
| |
| } |
| |
| } |
| } |
| |
| } |
| } |
5. 可视化流水线设置说明
- 粘贴以上Jenkinsfile文件,点编辑流水线

- 拉取

- Url:git地址
- 凭证名称:选择我们创建的my-login名称的凭证,就是我们配置的git登录的账号密码
- 分支:就是拉取哪个分支
- 编译

- 这里需要指定容器运行shell命令,否则会报错
- 第二个shell脚本就是我们编译的maven命令

- 同样也需要指定容器
- 第二个shell脚本就是我们打镜像的命令
Dockerfile文件内容:
| FROM openjdk:8-jdk |
| |
| MAINTAINER 作者 |
| |
| ENV TZ=Asia/Shanghai |
| ENV JAVA_OPTS="-Xms128m -Xmx256m -Djava.security.egd=file:/dev/./urandom" |
| |
| RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone |
| |
| RUN mkdir -p /ruoyi-admin |
| |
| WORKDIR /ruoyi-admin |
| |
| EXPOSE 8080 |
| |
| ADD ./ruoyi-admin/target/ruoyi-admin.jar ./ |
| |
| CMD sleep 5;java $JAVA_OPTS -jar ruoyi-admin.jar |
- 推送

- 这里需要指定容器——>添加凭证
- 声明:我这里使用凭证的账号密码变量不好使,所以就写死了
- 第一个shell脚本是登录阿里云容器镜像仓库
- 第二个shell脚本是打镜像命令
- 第三个是将我们打的镜像推送到阿里云镜像仓库
- 部署

- 添加容器——>凭证,这个凭证是我们创建当前用户kubeconfig凭证
- shell脚本命令就是执行部署的命令,不要使用kubernetesDeploy部署,这个到后面会停止使用、
deploy.yaml文件:
| apiVersion: apps/v1 |
| kind: Deployment |
| metadata: |
| labels: |
| app: dream-yard-admin |
| name: dream-yard-admin |
| namespace: dream-yard |
| spec: |
| progressDeadlineSeconds: 600 |
| replicas: 1 |
| strategy: |
| type: RollingUpdate |
| rollingUpdate: |
| maxSurge: 1 |
| maxUnavailable: 1 |
| selector: |
| matchLabels: |
| app: dream-yard-admin |
| template: |
| metadata: |
| labels: |
| app: dream-yard-admin |
| spec: |
| containers: |
| - env: |
| - name: CACHE_IGNORE |
| value: js|html |
| - name: CACHE_PUBLIC_EXPIRATION |
| value: 3d |
| image: registry.cn-hangzhou.aliyuncs.com/dream-yard/dream-yard-admin:$BUILD_NUMBER |
| readinessProbe: |
| httpGet: |
| path: / |
| port: 8080 |
| timeoutSeconds: 10 |
| failureThreshold: 30 |
| periodSeconds: 5 |
| imagePullPolicy: Always |
| name: dream-yard-admin |
| ports: |
| - containerPort: 8080 |
| protocol: TCP |
| resources: |
| limits: |
| cpu: 300m |
| memory: 600Mi |
| requests: |
| cpu: 100m |
| memory: 100Mi |
| terminationMessagePath: /dev/termination-log |
| terminationMessagePolicy: File |
| dnsPolicy: ClusterFirst |
| restartPolicy: Always |
| terminationGracePeriodSeconds: 30 |
| |
| --- |
| apiVersion: v1 |
| kind: Service |
| metadata: |
| labels: |
| app: dream-yard-admin-service |
| name: dream-yard-admin-service |
| namespace: dream-yard |
| spec: |
| ports: |
| - name: http |
| port: 8080 |
| protocol: TCP |
| targetPort: 8080 |
| selector: |
| app: dream-yard-admin |
| sessionAffinity: None |
| type: NodePort |
6. 以上就完成啦
点个爱心和关注吧
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!