项目部署:CI/CD
1.什么是DevOps?
一个软件的生命周期包括:需求分析、设计、开发、测试、上线、维护、升级、废弃。
这其中比较核心的阶段为开发development与运维operation,DevOps即他们的组合词,DevOps作为一种思想理念涵盖开发,测试运维的整个过程,核心理念是按时交付可靠的软件
2.什么是CI/CD
DevOps经过长期的实践探索,人们通过CI/CD落地了这一理念。
CI是指持续集成Continuous Integration:开发人员频繁的集成工作,将开发分支并入主分支,通过自动化构建来快速集成
CD是指持续交付Continuous Delivery:上一步集成的代码部署到预发布(类生成环境),执行一些测试。目标是不论如何更新,代码是随便可交付的
与持续部署Continuous Deployment:由开发、运维人员定期向生产环境部署稳定版本,目标是代码在任何时刻都是可部署的,可自动进入到生产环境
CI/CD方案:
0.修改pom文件
<build> <finalName>${project.artifactId}-${project.version}</finalName> <plugins> <!--自动生成docker镜像插件--> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring-boot.version}</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.2.2</version> <configuration> <!--修改imageName节点的内容,改为私有仓库地址和端口,再加上镜像id和 TAG,我们要直接传到私服--> <!--配置最后生成的镜像名,docker images里的,我们这边取项目名:版本--> <!--<imageName>${project.artifactId}:${project.version}</imageName>--> <imageName>192.168.101.65:5000/${project.artifactId}:${project.version}</imageName> <!--也可以通过以下方式定义image的tag信息。 --> <!-- <imageTags> <imageTag>${project.version}</imageTag> <!–build 时强制覆盖 tag,配合 imageTags 使用–> <forceTags>true</forceTags> <!–build 完成后,push 指定 tag 的镜像,配合 imageTags 使用–> <pushImageTag>true</pushImageTag> </imageTags>--> <baseImage>java:8u20</baseImage> <maintainer>docker_maven docker_maven@email.com</maintainer> <workdir>/root</workdir> <cmd>["java", "-version"]</cmd> <!--来指明Dockerfile文件的所在目录,如果配置了dockerDirectory则忽略baseImage,maintainer等配置--> <!--<dockerDirectory>./</dockerDirectory>--> <!--2375是docker的远程端口,插件生成镜像时连接docker,这里需要指定docker远程端口--> <dockerHost>http://192.168.101.65:2375</dockerHost> <!--入口点,project.build.finalName就是project标签下的build标签下 的filename标签内容,testDocker--> <!--相当于启动容器后,会自动执行java -jar ...--> <entryPoint>["java", "-Dfile.encoding=utf-8","-jar", "/root/${project.build.finalName}.jar"]</entryPoint> <!--是否推送到docker私有仓库,旧版本插件要配置maven的settings文件。 --> <pushImage>true</pushImage> <registryUrl>192.168.101.65:5000</registryUrl> <!-- 这里是复制 jar 包到 docker 容器指定目录配置 --> <resources> <resource> <targetPath>/root</targetPath> <directory>${project.build.directory}</directory> <!--把哪个文件上传到docker,相当于Dockerfile里的add app.jar /--> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> </plugins> </build>
1.将代码上传至git
2.使用jenkins在git中拉取代码;通过配置让jenkins自动化构建jar包,并在docker中生成对应镜像,根据镜像创建容器
3.在jenkins可视化界面点击build now
标签:
软件工程日报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异