CICD实战之Jenkins搭建
目的
学习 Jenkins 的搭建
准备工作
- 机器:vmware 虚拟机安装的 centos 的最小版本教程
- 终端:zsh教程,安装了 autojump、zsh-autosuggestion 以及 zsh-syntax-highlighting 插件教程
- 使用的 xshell 连接 vmware,方便熟悉教程
- yum 源阿里源
最终终端图
正式开始
docker
docker 介绍
现在都流行容器化部署,想了解 docker 的点维基百科和菜鸟教程
docker 安装
1 | // 安装依赖 |
你也可以使用阿里源进行安装
1 | // 安装依赖 |
安装成功再 docker -v
查看
基本命令
1 | systemctl start docker 启动 |
配置阿里云源
拉取 Docker 镜像时,一般默认会去Docker
官方源拉取镜像,为了优化速度我们更换为阿里云镜像仓库源进行镜像下载加速。
在对应/etc/docker/daemon.json
添加内容就是了
1 | sudo mkdir -p /etc/docker |
安装 Jenkins
Jenkins 是一款由 Java 编写的开源的持续集成工具。在与 Oracle 发生争执后,项目从 Hudson 项目复刻。 Jenkins 提供了软件开发的持续集成服务。维基百科
安装防火墙
1 | yum install firewalld systemd -y |
关于:
- Systemd:Systemd 入门教程:命令篇
- firewalld:firewall 简单使用
- ip 的那个地方,我是使用的是的本地虚拟机,因此我配置的本地虚拟机的
必须配置,否则会之后的 docker 启动服务失败
docker in docker
简介
Docker 采用的是 C/S(即 Client/Server)架构。我们在执行 docker xxx
等命令时,其实是使用 Client 在和docker engine
在进行通信。
我们在安装 Docker CE 时,会生成一个systemd service
服务。这个服务启动时,就是 Docker Engine
服务。默认情况下,Docker 守护进程会生成一个socket(/var/run/docker.sock)
文件来进行本地进程通信,因此只能在本地使用 docker 客户端或者使用 Docker API 进行操作。
*.sock 文件:sock 文件是 UNIX 域套接字,它可以通过文件系统(而非网络地址)进行寻址和访问。
因此,只要把宿主机的 Docker 套接字通过 Docker 数据卷挂载到容器内部,就能实现在容器内使用 Docker 命令(如下图)。
使用方式:docker run ... -v /var/run/docker.sock:/var/run/docker.sock
创建 Dockerfile
在/usr/dockerdemo1 建立一个 Dockerfile
内容
1 | FROM jenkins/jenkins |
构建镜像
文件创建后,执行docker build -t local/jenkins .
(名字为:local/jenkins)
如果提示 Successfully tagged local/jenkins:latest 则构建成功。
此处为第二次构建,第二次构建就会非常快,大概流程如下。
创建镜像和容器
我们将 Jenkins 用户目录外挂到宿主机内,先新建一个 /home/jenkins
目录,并设置权限:
1 | mkdir /home/jenkins |
接下来我们用镜像创建容器并启动:
1 | docker run -itd --name jenkins -p 8080:8080 -p 50000:50000 \ |
创建成功
启动 Jenkins
设置防火墙
首先我们在防火墙添加 8080 和 50000 端口的放行,并重载防火墙
1 | firewall-cmd --zone=public --add-port=8080/tcp --permanent |
然后在宿主机IP:8080
就可以看到界面了
设置源
设置源提高 Jenkins 插件下载速度。因为后面安装插件需要重启,因此这一步可以先操作,避免后面再重启。
1 | docker exec -it jenkins /bin/bash |
初始化完成
初始化完成需要我们输入密码
我们执行命令
1 | docker exec -it jenkins /bin/bash //进入命令行 |
密码输入之后就是进入插件安装
设置源之后插件安装就很丝滑流畅
再就是设置管理员了,我这里使用的是:使用 admin 账户继续。
进入就是我们熟悉的界面了
小试牛刀
左侧新建 Item
输入代码
1 | docker -v |
保存再触发立即构建就可以看到效果了。
可以在控制台看到对应的输出就大功告成了。
结语
至此,我们已经完整搭建了 Jenkins 环境,作为 CICD 不可少的一部分,也算是有了一个良好的开端。撒花!