自动集成
jenkins中maven的安装及配置,如何在jenkins中创建maven任务。
Jenkins+Maven部署安装
ubuntu18.04 从零开始搭建并使用jenkins,实现脚本远程
jenkins安装maven
Jenkins - Publish Over SSH
jenkins:配置密钥时报错的解决:Failed to add SSH key. Message invalid privatekey(Jenkins 2.257)
基于jenkins、k8s、docker 实现自动部署服务
Jenkins打包Maven项目找不到 mvn: not found
史上最全 Jenkins Pipeline流水线详解
jenkins流水线(jenkinsfile)详解
设置jenkins时区方法
jenkins 发布k8s项目流程
linux环境下安装maven_linux maven
使用jenkins流水线完成自动部署服务到K8s_jenkins k8s
jenkins执行shell命令提示找不到命令解决办法
本文档使用 MrDoc 发布
-
+
首页
jenkins 发布k8s项目流程
- 开发人员把做好的 knight.blog.csdn.net 项目代码通过git推送到gitlab - 然后Jenkins通过 gitlab webhook (前提是配置好),自动从拉取gitlab上面拉取代码下来。(作用是实现本地 git push 后 jenkins 自动构建部署服务) - 然后进行build,编译、生成镜像、然后把镜像推送到Harbor仓库; - 然后在部署的时候通过k8s拉取Harbor上面的代码进行创建容器和服务,最终发布完成,然后可以用外网访问 > 第一阶段,获取代码(Git) 第二阶段,编译打包(Maven) 第三阶段,镜像打包与推送到仓库 (Harbor) > > 第四阶段,部署应用到k8s集群 (kubectl)  ### pipeline 的编写 ```Go pipeline{ environment{ // 定义变量,或从Jenkins传入进来的变量 } agent{ node{ // 选择 k8s 集群节点 } } stages{ stage('获取代码'){ steps{ // 拉取项目程序源码 } } stage('代码编译打包'){ steps{ container("maven") { // 使用 maven 容器,编译打包 } } } stage('镜像构建推送'){ steps{ container("kaniko") { // 使用 kaniko 容器, docker镜像编译与推送到镜像仓库 } } } stage('获取部署配置'){ steps{ // 拉取 yaml 部署文件 } } stage('应用部署到K8S集群') { steps { container('kubectl') { // 使用 kubectl 容器, 执行 yaml 部署文件,部署应用到 k8s集群 } } } } } ```  形象图描述如下:  ### 命令流程 ```bash export JENKINS_HOME="/root/.jenkins/workspace/springboot-jenkins" export JENKINS_VERSION="v0.1" echo "JENKINS_HOME:${JENKINS_HOME},JENKINS_VERSION:${JENKINS_VERSION}" echo "开始打包" mvn clean mvn package echo "开始制作镜像" docker build -t 你的私有Harbor地址/knight/jenkins:$JENKINS_VERSION $JENKINS_HOME echo "开始推镜像" docker push 你的私有Harbor地址/knight/jenkins:$JENKINS_VERSION echo "开始运行镜像" kubectl apply -f $JENKINS_HOME/build/jenkins-svc.yaml # 使用envsubst传递export的参数 envsubst < $JENKINS_HOME/build/jenkins-deployment.yaml | kubectl apply -f - ``` **编写DockerFile:** ```bash # Java8镜像 FROM knight/base:latest WORKDIR / # 将系统编码设置为c.utf-8,默认的POSIX不支持中文 ENV LANG C.UTF-8 ENV LANGUAGE C.UTF-8 ENV LC_ALL C.UTF-8 # 将子项目打包的jar包拷贝到项目根目录 COPY target/springboot-jenkins-0.0.1-SNAPSHOT.jar /jenkins.jar # 设置容器启动时执行的命令,-Dfile.encoding=utf-8 CMD ["java", "-jar", "jenkins.jar"] ``` 编写暴露端口的Service:jenkins-svc.yaml ```bash apiVersion: v1 kind: Service metadata: name: jenkinks-service labels: app: jenkinks-service spec: type: NodePort ports: - port: 8888 name: jenkinks-service targetPort: 8888 nodePort: 32088 protocol: TCP selector: app: jenkinks-service ``` 编写Deployment: jenkins-svc.yaml ```bash apiVersion: apps/v1 kind: Deployment metadata: name: jenkinks-deployment spec: replicas: 1 selector: matchLabels: name: jenkinks-service template: metadata: labels: name: jenkinks-service app: jenkinks-service spec: containers: - name: jeecg image: 你的私有Harbor地址/knight/jenkins:$JENKINS_VERSION imagePullPolicy: IfNotPresent ports: - containerPort: 8888 ``` ### 参考 ```bash # 参考1 https://www.cnblogs.com/shawhe/p/11313633.html ```
adouk
2023年4月12日 09:19
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码