Jenkins 使用教程
话说不会偷懒的程序员不是好的程序员,笔者就时常如果有一个软件能够帮我把日常的体力工作都给干了,这样就可以有时间做更多的脑力工作了。
逛博客的时候,经常看到 DevOps 和 CI/CD 的相关文章,抱着试试看的想法研究下如何实现。当然跟很多初次看到这几个单词都一脸懵的朋友一样,肯定搜索下都是什么意思:
- DevOps: DevOps 是 Development 和 Operations 的组合,是一种重视软件开发人员(Dev)和运维人员(Ops)之间沟通合作的文化,运动和惯例,用于促进应用开发、应用运维和质量保障(QA)部门之间的沟通、协作与整合。以期打破传统开发和运营之间的壁垒和鸿沟。 通过自动化软件交付和架构变更的流程,使构建,测试,发布软件能够更快,频繁和可信。
- CI: 持续集成(Continuous Integration,简称 CI),开发人员各自编写自己负责部分的代码,然后上传到源代码库中合并,CI 服务器负责构建软件并测试是否能正常运行,将测试结果反馈给开发人员。
- CD: 持续交付(Continuous Delivery,简称 CD)和持续部署(Continuous Deployment),是在持续集成的基础上将集成后的代码部署到更贴近真实运行的环境中去进行进一步的测试,并可以在多种不同的配置上测试代码,运行额外的性能测试,并自动化每个步骤直到部署到生产环境。
需要注意的是: 持续交付并不是指软件每一个改动都要尽快部署到产品环境中,它指的是任何的代码修改都可以在任何时候实施部署,持续部署是作为持续交付——自动将生产就绪型构建版本发布到代码存储库——的延伸,持续部署可以自动将应用发布到生产环境。
好像有点意思了,按照笔者的理解:平常我们写完代码完成自测后提交代码后,就有工具可以帮我们自动编译和测试,如果没有问题就自动打包并部署到实际的生产环境中。看上去很不错的样子,那么怎么实现呢?
Jenkins 著名的可扩展的开源 CI/CD 工具,可以自动执行与软件的构建,测试,部署,集成和发布有关的任务。Jenkins 完全用 Java 编写,可在 Tomcat 等流行的 servlet 容器中运行,也可独立运行。
安装
Jenkins 可在 macOS,Windows 和各种 UNIX 版本(例如 OpenSUSE,Ubuntu,Red Hat 等)上使用。除了通过本机安装软件包进行安装外,它还可以独立安装或作为 Docker 在任何有 Java Runtime Environment(JRE)的计算机上安装。
Windows 上安装
由于笔者平常工作使用的是 Windows 系统,下面就从 Windows 开始尝试一步一步安装,详细移步这篇文章:windows 上安装 jenkins
Docker Desktop 上安装
现在 Docker 也比较火,Jenkins 在 Docker 上的安装也是比较简单的,我们直接在 Windows 上使用 Docker Desktop 来进行安装
拉取最新镜像
docker pull jenkins/jenkins:latest //最新版
运行
docker run -d --name jenkins -p 8040:8080 -p 50000:50000 -v /d/env/docker/jenkins_home:/var/jenkins_home -v /d/env/Java/jdk1.8.0_231:/usr/local/jdk -v /d/env/apache-maven-3.8.1:/usr/local/maven jenkins/jenkins:latest
- -d:后台运行容器
- –name:指定容器启动的名称
- -p:指定映射的端口,这里是将服务器的 8040 端口映射到容器的 8080 以及 50000 映射到容器的 50000。
- -v:挂载本地的数据卷到 docker 容器中,注意: 需要将 JDK 和 maven 的所在的目录挂载。
注意: 8040 和 50000 一定要是开放的且未被占用,如果用的是云服务器,还需要在管理平台开放对应的规则。
Ubuntu 上安装
macOS 买不起相关设备,就再尝试下 Ubuntu 下的安装吧
由于包含在默认 Ubuntu 软件包中的 Jenkins 版本往往落后于项目本身的最新版本。 为了利用最新的修复和功能,我们将使用项目维护的软件包来安装 Jenkins
# 先安装 jdk
sudo apt-get install openjdk-8-jdk
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > \
/etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins
sudo systemctl start jenkins
# 设置开机自启动
sudo systemctl enable jenkins
确认端口
Jenkins 默认使用 8080 端口,如果你的 8080 端口被占用了,请修改配置文件/etc/sysconfig/jenkins,将 JENKINS_PORT 字段配置成你想要的端口:
JENKINS_PORT="8040"
修改用户
Jenkins 默认以 jenkins 用户运行,在实际运行过程中会导致一些权限问题,所以要改成以 root 用户运行,修改 /etc/sysconfig/jenkins 中 JENKINS_USER 字段:
JENKINS_USER="root"
修改好配置后重启 Jenkins:
sudo systemctl restart jenkins
构建部署
我们以现在比较流行的 SpringBoot 项目来演示下从构建、打包到部署服务器,备份重启等一系列的工作的自动化。
安装完成后我们需要模拟实际的生产环境
windows 上使用 jenkins 构建并部署 springboot 项目
当然很多公司是不止一台服务器的,并且很多项目使用了 SpringCloud 等微服务的做法,将业务拆分为了很多子项目分别部署到不同的服务器中,这个时候就需要部署到远程 Linux 服务器中
个人建议,如果可以尽量给 Jenkins 一个相对独立的运行服务器,通过 SSH 的方式部署到不同的服务器中,没有必要每台服务器都安装 Jenkins
延伸
Jenkins 还可以完成其他有意思的事情,如构建流水线(有兴趣可以探究下),另外 Jenkins 团队还有一个名为 Jenkins X 的子项目,专门和 Kubernetes 一起使用。Jenkins X 是基于 Kubernetes 的 CI&CD 平台,复用 Jenkins 自身的能力,以解决微服务架构下云原生应用的持续交付的问题,简化整个云原生应用的开发、运行和部署过程。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论