jenkins实现CI/CD

CI/CD实践

名词解释

CI:Continuous Integration,持续集成

CD:Continuous Delivery,持续交付


1、CI

持续集成实现过程:

  • 安装jenkins。我们的jenkins是在docker里面起的一个镜像,当然也可以自己到官网上下载相应的安装包。
  • push代码到码云(https://gitee.com)
  • 根据webhooks配置的url,给远程HTTP URL发送一个POST请求
    • webhooks配置:http://Admin:a802c1c************a9@jenkins.******.***/job/yourjobname/build?token=java-token
      • web hook结构:http://用户名:API Token@jenkins域名:端口号/job/项目名/build?token=java-token
      • API Token:Jenkins--》用户--》设置--》API Token--》show API Token…
  • jenkins里面拉去最新的代码
  • jenkins里安装插件Generic Webhook Trigger Plugin,触发jenkins重新构建相应的job
    • gradle 重新构建,tasks:gradle clean build,需要安装插件Gradle Plugin
    • 构建完成之后重新build新镜像并推至docker镜像库
    • docker login -u user -p ${DOCKERHUB_PASSWORD} https://hub.docker.xxxx.cn:xxxx
      docker build -t xxxxx .
      docker push xxxxx
    • docker login 的时候,为了保密性,可以使用mask passwords。mask passwords

2、CD

持续部署的实现过程:

新的镜像推送成功之后,在rancher里面重新拉取新的镜像并更新。

安装插件:rancher plugin

项目构建时会有:Deploy/Upgrade Rancher service

配置相关信息,就会触发rancher重新更新镜像。

获取API key的时候需要Environment API key ,用Account API key不起作用。



### 使用 Jenkins 实现 CI/CD 自动化部署的最佳实践 #### 1. 安装与基本配置 为了实现 CI/CD 的自动化部署,首先需要确保 Jenkins 已经正确安装并进行了基础配置。这包括但不限于安装必要的插件以及设置全局工具路径等[^3]。 #### 2. 集成版本控制系统 Jenkins 支持多种版本控制工具的集成,其中最常见的是 Git 和 SVN。通过配置项目的源码管理部分,可以让 Jenkins 自动从远程仓库拉取最新代码。如果使用的是 GitLab,则可以通过 Webhook 或者定时轮询的方式让 Jenkins 在检测到代码变更时自动触发构建任务。 #### 3. 构建阶段 在构建过程中,可以根据项目的需求执行不同的命令或者调用预定义好的 Shell 脚本来完成编译、打包等工作。对于 Java 单体项目或是微服务架构下的 Spring Boot 应用来说,通常会利用 Maven 或 Gradle 来处理依赖管理和生成可运行的 JAR 文件[^2]。 以下是针对 Spring Boot 项目的简单示例脚本: ```bash #!/bin/bash mvn clean package -DskipTests=true cp target/*.jar /path/to/deploy/ ``` #### 4. 测试环节 测试是保障软件质量的重要手段之一,在 CI/CD 管道中加入单元测试、接口测试甚至性能测试能够有效减少生产环境中出现问题的概率。Maven 提供了内置的支持用于运行基于 JUnit 或 TestNG 编写的测试案例;而对于前端 Vue.js 类型的应用则可能需要用到 Karma 或 Jest 这样的框架来进行相应的功能验证[^4]。 #### 5. 部署至目标环境 最后一步就是把经过前面几步验证无误后的产物推送到实际使用的服务器上替换掉旧版文件从而达到更新的目的。考虑到不同操作系统之间可能存在差异性较大情况(比如 Linux vs Windows),所以这里建议编写跨平台兼容性强一点的通用脚本以便重复利用。 例如下面这个适用于大多数 Unix-like OS 平台的例子展示了如何将 WAR/JAR 发布到 Tomcat 下面作为 webapp 子目录的形式存在: ```bash #!/bin/sh ssh user@remote-server 'mkdir -p ~/temp/app && rm -rf ~/temp/app/*' scp ./target/my-app.jar user@remote-server:~/temp/app/. ssh user@remote-server ' systemctl stop tomcat9; mv ~/temp/app/my-app.jar /var/lib/tomcat9/webapps/; systemctl start tomcat9; ' ``` 以上即为整个流程概述及其对应的一些具体实施细节描述[^1]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值