手摸手教你玩 Jenkins,一次搞懂 CI/CD!(第一章:部署)

对于开发者来说,能自动化部署项目,就像解锁了"自动驾驶"。而 Jenkins,就是让你从"手动上传代码、拷贝文件、重启服务"的地狱中解放出来的神器。

Jenkins 是什么?

Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。

Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。

简单来说,Jenkins 是一个开源的自动化持续集成工具。 它能帮你自动完成:

  • 拉取最新代码;
  • 自动打包;
  • 自动部署到服务器;
  • 甚至自动测试、自动通知。

为啥开发者都离不开 Jenkins?

你可以回想一下,每次项目更新你都得:

  1. 打包;
  2. 上传服务器;
  3. 手动部署;
  4. 启动服务;
  5. 通知测试。

一天下来,不光浪费时间,还容易出错。 有了 Jenkins,你只需要点一下"构建",剩下的流程全自动搞定。 这就是 持续集成(CI)+ 持续部署(CD) 的魅力。

本来想一次性讲完使用 Jenkins 从零到发布的整个流程,但是发现篇幅有点儿长了,于是打算分 3 篇来讲,这一篇是 Jenkins 的部署篇,后面两篇将是使用 Jenkins 发布项目篇。感兴趣的小伙伴可以蹲守一下。

安装 Jenkins

为了方便安装,我直接使用 docker 来进行安装 Jenkins。

bash 复制代码
docker pull jenkins/jenkins:lts-jdk17

docker run -d --name jenkins \
--restart=unless-stopped \
-u root \
-p 8080:8080 \
-p 50000:50000 \
-v /apps/docker_mounts_dir/jenkins/jenkins-data:/var/jenkins_home \
-e TZ=Asia/Shanghai \
-v /etc/localtime:/etc/localtime:ro \
-e JENKINS_UC=https://mirrors.cloud.tencent.com/jenkins/ \
-e JENKINS_UC_DOWNLOAD=https://mirrors.cloud.tencent.com/jenkins/ \
jenkins/jenkins:lts-jdk17

注意: 在国内一定要加上 JENKINS_UCJENKINS_UC_DOWNLOAD 参数,不然在 Jenkins 中下载插件会慢到让你怀疑人生......

安装完毕之后,可以通过执行下面的命令来查看 admin 用户的密码

bash 复制代码
docker logs jenkins

或者可以直接通过以下命令进行查看

bash 复制代码
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

访问 Jenkins

然后就可以直接在浏览器中访问 127.0.0.1:8080

安装插件

进入下一个页面之后,不需要选择任何的插件,直接点击「安装」按钮就可以了。

等待插件安装

如果有插件安装失败,那么可以直接重试

直到所有的插件安装成功之后,点击「继续」

然后需要创建一个管理员账号,当然了,不创建也可以,就继续使用 admin 账户登录,但是就得每次记录之前的那个长长的密钥。

这里就根据自己的实际情况进行填写就好了。

根据自己的实际情况去配置 Jenkins URL 就好了,我觉得没有必要配置,就直接选择的默认。

下面 Jenkins 就已经安装成功啦!

现在只能说 Jenkins 已经安装成功了,但是想要使用 Jenkins 来部署项目,我们还得安装以下插件进行配合才可以。

必须要安装的插件

  • Git Parameter:拉取源代码分支
  • Publish Over SSH:将我们打包好的代码推送到目标服务器上
  • AnsiColor:向控制台输出添加 ANSI 颜色(也可以不安装)

我们点击右上角的设置图标

来到插件管理页面

我们需要先在 Available plugins 中搜索 Git Parameter 然后进行安装 Git Parameter 插件

继续安装另外两个插件

当我们将以上插件都安装完毕之后,就代表我们部署项目的准备工作已经做完了。下一章节,我将一步一步告诉你如何通过 Pipeline 来进行自动化部署项目,敬请期待吧~

相关推荐
一路向北North1 小时前
Spring Security OAuth2.0(20):完善环境配置
java·后端·spring
从零开始的代码生活_1 小时前
C++ string 详解:常用接口、字符串算法与深拷贝实现
开发语言·c++·后端·学习·算法
65岁退休Coder2 小时前
LangChain v1.3.4 笔记 - 01 模型的连接/输出、消息、提示词模板
后端
笃行3502 小时前
数据库优化深度科普向|外连接消除底层原理,国产数据库优化器设计思路拆解
后端
苍何3 小时前
耗时 7 天,我们开源了腾讯 WorkBuddy 实战蓝皮书(建议收藏)
前端·后端
青山木3 小时前
Redis 高可用的最后一公里:Cluster 分片、Gossip 与故障转移全流程
数据库·redis·后端·缓存
老孙讲技术3 小时前
巡店系统笔记:listDeviceDetailsByPage 台账 + bindDeviceLive 辅码流最小闭环
后端·物联网
Dong先生3 小时前
Harness vibecoding:从 PRD 到可交付代码的结构化工法
后端
拾光师4 小时前
HDFS 深度解析:大数据存储的“硬盘不够、单盘坏了怎么办“
后端