手摸手教你玩 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 来进行自动化部署项目,敬请期待吧~

相关推荐
步行cgn1 小时前
Spring c 命名空间注入详解
java·后端·spring
明月_清风1 小时前
Maven 到底是什么?一篇文章搞懂 Java 项目构建与依赖管理
java·后端·maven
明月_清风2 小时前
AI 越来越强,程序员真正的价值到底是什么?
人工智能·后端
aramae2 小时前
MySQL复合查询(8)
java·c语言·开发语言·后端·算法
Rain的Java大神之路2 小时前
如何快速上传10G文件
java·spring boot·redis·后端·mysql·spring cloud·面试
码事漫谈3 小时前
别再跟AI说“请”了,它根本不 care——但有个东西它超在意
后端
郑州光合科技余经理5 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
IT_陈寒6 小时前
Vue的响应式让我熬到凌晨三点,原来漏了这个小细节
前端·人工智能·后端
颜进强6 小时前
01 · NestJS 是什么:用途、解决什么问题、与热门框架对比
前端·后端·ai编程
isfox6 小时前
MapReduce Shuffle 深度解析:数据从 Map 到 Reduce 的完整旅程
后端