【1】概述
首先解释一下名词CI/CD什么意思,其实就是持续集成持续部署,有时也可以看到DI是将二者结合起来。
如下是代码打包测试的三种场景,左侧是我们本机单元测试,中间是手动发布场景,右侧是自动发布场景。
Jenkins,原名 Hudson,2011 年改为现在的名字。它是一个开源的实现持续集成的软件工具。
官方网站:https://www.jenkins.io/ 。PS:对国际形势不在本文发表看法,图片纯属巧合不代表本人观点。
Jenkins是以war包形式提供的,在下图可以下载对应环境的war:https://www.jenkins.io/download/
下面我们研究一下Jenkins+Maven+Git+GitLab环境下的自动化流程。这里要首先准备三台虚机,将GitLab单独放在一台机器上,内存要给5个G。
【2】GitLab安装
官网文档:https://docs.gitlab.cn/jh/install/requirements.html 。
官网安装文档:https://gitlab.cn/install/?version=ce
① SSH下安装GitLab
如果是root用户登录,不需要添加sudo 。
1 安装依赖
sudo yum install -y curl policycoreutils-python openssh-server perl sudo systemctl enable sshd sudo systemctl start sshd
2 配置镜像
curl -fsSL https://packages.gitlab.cn/repository/raw/scripts/setup.sh | /bin/bash
3 开始安装
# 这里url要换成自己服务器的ip地址 sudo EXTERNAL_URL="http://192.168.44.103" yum install -y gitlab-jh
除非您在安装过程中指定了自定义密码,否则将随机生成一个密码并存储在/etc/gitlab/initial_root_password 文件中(出于安全原因,24 小时后,此文件会被第一次 gitlab-ctl reconfigure 自动删除。因此若使用随机密码登录,建议安装成功初始登录成功之后,立即修改初始密码)。使用此密码和用户名 root 登录。
4 gitlab常用命令
gitlab-ctl start # 启动所有 gitlab 组件; gitlab-ctl stop # 停止所有 gitlab 组件; gitlab-ctl restart # 重启所有 gitlab 组件; gitlab-ctl status # 查看服务状态; gitlab-ctl reconfigure # 启动服务; vi /etc/gitlab/gitlab.rb # 修改默认的配置文件; gitlab-ctl tail # 查看日志;
② docker下安装GitLab
文档地址:https://docs.gitlab.cn/jh/install/docker.html
安装所需最小配置
- 内存至少4G
- 系统内核至少在3.10以上
uname -r
命令可查看系统内核版本
安装docker
更新yum源
yum update
安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
添加镜像
#国外镜像 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo #阿里镜像 https://mirrors.aliyun.com/docker-ce/linux/centos/gpg yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
查看源中可使用版本
# 社区版docker yum list docker-ce --showduplicates | sort -r
安装指定版本
# e.g: yum install docker-ce-20.10.9-3.el7 yum install docker-XXXX
配置开机启动项
systemctl start docker systemctl enable docker docker version
使用容器安装gitlab
添加容器
docker run --detach \ --hostname 192.168.44.103 \ --publish 443:443 --publish 80:80 \ --name gitlab \ --restart always \ --volume $GITLAB_HOME/config:/etc/gitlab:Z \ --volume $GITLAB_HOME/logs:/var/log/gitlab:Z \ --volume $GITLAB_HOME/data:/var/opt/gitlab:Z \ --shm-size 256m \ registry.gitlab.cn/omnibus/gitlab-jh:latest
启动容器
docker start gitlab
查看已存在的容器
docker ps -a
进入容器
docker exec -it gitlab /bin/bash
访问GitLab
浏览器访问 http://192.168.44.103 。当首次运行出现502错误的时候排查两个原因
- 虚拟机内存至少需要4g
- 稍微再等等刷新一下可能就好了
管理员账号登录
用户名:root 。密码存在下面文件中,登录后需要改密码不然24小时之后会失效
cat /etc/gitlab/initial_root_password
到了这里,其实熟悉开发的同学了解,这时就可以在GitLab管理界面创建仓库,从自己本地idea中推送代码上去了。
【3】Jenkins的安装
机器要求: 256 MB 内存,建议大于 512 MB 10 GB 的硬盘空间(用于 Jenkins 和 Docker 镜像) 需要安装以下软件: Java 8 ( JRE 或者 JDK 都可以) Docker (导航到网站顶部的Get Docker链接以访问适合您平台的Docker下载)
如下图所示,主要有这样几个环境的安装说明,最简单的是直接运行一个war包即可。
jenkins.war下载如下所示,下载地址
Jenkins需要和jdk/maven在同一个机器上,如果当前虚机没有jdk环境可以如下快速安装:
# 这里安装的是openjdk yum search java|grep jdk yum install java-1.8.0-openjdk
maven的快速安装
官网地址:https://maven.apache.org/
下载后复制到Jenkins所在服务器解压缩即可。
Git的快速安装
如果需要jenkins通过Git拉取代码,那么同时还需要安装Git:
yum install git
之后就可以使用命令java -jar jenkins.war启动jenkins。首次启动war包会在/root/.jenkins生成配置文件,待完全启动成功后 访问服务器8080端口完成配置。 默认启动后的家目录在用户家目录下的.jenkins 即 $user.home/.jenkins
初始化后的密码:
Jenkins initial setup is required. An admin user has been created and a password generated. Please use the following password to proceed to installation: 4e67bbe261da476abdc63c5b51311646 This may also be found at: /root/.jenkins/secrets/initialAdminPassword
需要注意的是jenkins.war运行是需要与jdk版本一致的,最新的需要jdk11:
Running with Java 8 from C:\Program Files\Java\jre1.8.0_231, which is older than the minimum required version (Java 11). Supported Java versions are: [11, 17] See https://jenkins.io/redirect/java-support/ for more information.
进入浏览器需要上述密码,之后会进入新手引导界面
这里安装推荐的插件即可。