Jenkins CI/CD


关键字:

devops:开发运维
CI:continuous integrity。持续集成
CD:continous deploy。持续部署
jenkins:ci/cd的一个工具

一、jenkins自动化部署工作原理

为github hook trigger的工作原理
在这里插入图片描述

为轮询(非hook)时的jenkins工作原理。
在这里插入图片描述

如果你装jenkins的地址是一个公网ip,可以选择使用gitHub hook通知jenkins进行构建部署;如果是本机,就使用轮效,让装jenkins的机器主动轮效你的代码仓库
在这里插入图片描述

二、操作

参考地址

2.1 下载安装jenkins

jenkins下载地址

在这里插入图片描述

如果本机安装了java可以选择war包,如果不依赖平台,可以选择docker。

在这里插入图片描述

2.2 jenkins上创建任务

源码管理,填github仓库地址
在这里插入图片描述
在这里插入图片描述

jenkins将项目拉去下来,是放在用户目录下的.jenkins/workspace/下面的
在这里插入图片描述

2.3 项目内的一些配置

其实这一步可以不用做,但是为了操作方便。

  • 可以添加bestzip压缩代码,好上传代码。npm install bestzip
  • 安装jenkins依赖。方便让jenkins构建部署。npm install jenkins
  • 修改package.json
 "pub": "npm run build && bestzip dist.zip dist node_modules prod.server.js && git add --all &&git commit -m 'pub' && git push  && node ./deploy.js"

添加一条命令,用于build代码,压缩代码,让jenkins构建

  • 添加deploy.js。
const jenkins = require("jenkins")({
  baseUrl: "http://jenkins_admin:123456@localhost:8080",
  crumbIssuer: true
});

jenkins.job.build(`miumiu`, function(err, data) {
  if (err) throw err;
  console.log("queue item number", data);
});

现在,我们只需要通过npm run pub就可以完成代码的提交,构建,运行。

三、一些坑

3.1 在window上,执行任务时 sh -xe C:\Users\LETFL\AppData\Local\Temp\jenkins636005649519451715.sh

去这里,设置sh的地址(一般装了github,可以使用github的sh)
在这里插入图片描述

<think>嗯,用户想了解如何使用Jenkins实现CI/CD的持续集成与部署。首先,我需要回忆一下Jenkins的基本概念和它在CI/CD中的作用。Jenkins是一个开源的自动化服务器,广泛用于构建、测试和部署软件。根据用户提供的引用,特别是引用[1]和[2],Jenkins能够帮助团队自动化这些流程,提高效率。 用户可能已经知道CI/CD的基本概念,但需要具体的配置步骤。接下来,我需要整理Jenkins的安装和配置过程。引用[3]提到了使用Docker Compose安装Jenkins,这可能是一个方便的途径,特别是对于需要快速部署的用户。此外,引用[2]还提到了安装Docker和Docker Compose的步骤,可能需要先确保这些依赖项已经安装。 然后是配置Jenkins的部分。用户可能需要指导如何访问Jenkins的Web界面,安装必要的插件,比如Git插件、Pipeline插件等。引用[3]中的Docker Compose配置暴露了8888端口作为Web管理界面,所以访问地址应该是服务器IP加这个端口。安装插件后,需要配置凭证,比如Gitee或GitHub的账号,以及服务器SSH的密钥,这部分引用[2]和[4]提到了相关内容。 创建Pipeline任务时,用户可能需要了解如何编写Jenkinsfile,以及如何设置触发器,比如代码推送时自动构建。引用[4]中提到了GitHub Actions,但Jenkins的Webhook配置类似,需要生成token并设置仓库的Webhook。不过用户的问题集中在Jenkins,所以需要详细说明Jenkins的配置步骤。 部署阶段,使用SSH或Docker进行部署是关键。引用[2]中提到了使用Docker和Nginx部署前端应用,这里可能需要根据用户的具体项目类型(如Java、Node.js等)来调整部署脚本。例如,如果是前端项目,可能需要构建静态文件并复制到服务器目录,或者使用Docker镜像进行容器化部署。 用户可能遇到的常见问题包括权限设置、插件安装失败、Pipeline脚本错误等。需要提醒用户注意目录权限,尤其是使用Docker时数据卷的配置,引用[3]中的数据卷映射./data到Jenkins_home,确保目录有写入权限。此外,网络问题可能导致插件安装慢,建议更换镜像源。 最后,根据用户提供的引用和相关问题,生成相关问题时要覆盖优化方法、与GitHub Actions的比较、安全性以及多环境部署等,这些都是用户可能进一步感兴趣的方面。需要确保问题具有针对性,帮助用户深入理解JenkinsCI/CD中的应用。</think>### 如何使用Jenkins实现CI/CD持续集成与部署 #### 一、JenkinsCI/CD中的作用 Jenkins是一款开源的自动化服务器,核心功能是实现软件开发的**构建、测试、部署全流程自动化**。通过集成代码仓库(如GitHub/Gitee)、构建工具(如Maven/Gradle)和部署环境(如Docker/Kubernetes),可显著提升交付效率[^1]。 #### 二、配置Jenkins的完整步骤 1. **安装Jenkins** - **推荐使用Docker部署**(依赖Docker环境): ```docker-compose version: '3.1' services: jenkins: image: jenkins/jenkins:lts ports: - "8888:8080" # Web管理端口 - "50000:50000" # 内部通信端口 volumes: - ./jenkins_home:/var/jenkins_home # 数据持久化[^3] ``` 启动后访问 `http://服务器IP:8888` 完成初始化。 2. **基础配置** - **安装插件**:在管理界面安装 `Git`、`Pipeline`、`SSH` 等核心插件 - **配置凭证**: - 代码仓库的账号密码/SSH密钥 - 部署服务器的SSH密钥(用于远程执行命令) 3. **创建Pipeline任务** - **定义Jenkinsfile**(示例为Node.js项目): ```groovy pipeline { agent any stages { stage('Checkout') { steps { git url: 'git@github.com:user/repo.git', branch: 'main' } } stage('Build') { steps { sh 'npm install' sh 'npm run build' } } stage('Deploy') { steps { sshPublisher( transfers: [{ execCommand: "docker restart my_app" # 通过SSH触发容器重启 }] ) } } } } ``` 4. **自动化触发** - **Webhook配置**:在代码仓库设置推送事件触发Jenkins构建 - **定时构建**:通过Cron表达式设置定期执行(如每晚构建) #### 三、关键优化实践 1. **使用Docker容器化构建环境** 通过`docker build`生成标准化镜像,避免环境差异问题[^2] ```dockerfile FROM node:16 WORKDIR /app COPY package*.json ./ RUN npm ci --production COPY . . ``` 2. **并行测试阶段** 在Pipeline中拆分单元测试、集成测试为并行任务: ```groovy stage('Test') { parallel { stage('Unit Test') { steps { sh 'npm test' } } stage('E2E Test') { steps { sh 'npm run e2e' } } } } ``` #### 四、典型问题排查 | 问题现象 | 解决方法 | |-------------------------|------------------------------| | 插件安装失败 | 更换清华镜像源 | | SSH连接超时 | 检查服务器防火墙和密钥权限 | | Pipeline语法错误 | 使用`Declarative Linter`验证 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值