Jenkins从配置到实践
1 持续集成 Continuous integration(CI)
1.1 什么是持续集成?
持续集成Continuous integration(CI)是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。
1.2 持续集成的原则
- 需要版本控制工具来保障团队成员提交的代码不会导致集成失败。常用的版本控制工具有svn、git等。
- 开发人员需要及时向版本控制库中提交代码,也需要经常性地从版本控制库中更新代码到本地。
- 需要有专门的集成服务器来执行集成构建。
根据项目的实际情况,集成构建可以通过代码仓库中代码的变动(如push事件、merge事件等)来自动触发构建,也可以定时启动构建,如每半小时构建一次。
- 必须保证构建的成功。
如果构建失败,则修复构建过程中的错误将是优先级最高的工作。一旦修复,需手动启动一次构建。
- 一个自动构建过程,包括自动编译、分发、部署和测试等。
- 一个代码仓库,即需要版本控制工具来保障代码的可维护性,同时作为构建过程的素材库。
- 一个持续集成服务器。
2 Jenkins介绍
2.1 Jenkins简介
Jenkins,原名 Hudson,2011 年改为现在的名字。它是一个开源的实现持续集成的软件工具。
Jenkins只是一个平台,真正运作的都是插件。这就是Jenkins流行的原因,因为Jenkins什么插件都有。
Jenkins官网:https://www.jenkins.io/
2.2 Jenkins自动化部署实现原理
3 Jenkins部署环境
基本环境
JDK
:Jenkins是Java语言开发的,因需要JDK
环境。Git/SVN
:因一般代码是放在Git/SVN
服务器上的,我们需要拉取代码。Maven
:因一般Java程序是由Maven工程,需要Maven打包。
服务器准备
应用名称 | IP地址 | 子网掩码 | 网关 | 备注 |
---|---|---|---|---|
Jenkins | 192.168.3.3 | 255.255.255.0 | 192.168.3.1 | 1核CPU 1G内存 20G磁盘 |
Gitlab | 192.168.3.6 | 255.255.255.0 | 192.168.3.1 | 4核CPU 6G内存 20G磁盘 |
Tomcat | 192.168.3.8 | 255.255.255.0 | 192.168.3.1 | 1核CPU 1G内存 20G磁盘 |
说明:操作系统使用Centons7。
静态ip地址设置
# 在CentOS 7上配置静态ip
1.以root用户登录,修改网络配置
[root@jenkins ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO="static" #是否自动获取,static是静态地址
ONBOOT=yes #开机加载
IPADDR="192.168.3.3"
NETMASK="255.255.255.0"
GATEWAY="192.168.3.1"
2.配置 DNS
[root@jenkins ~]# vi /etc/resolv.conf
nameserver 192.168.3.1
nameserver 114.114.114.114
nameserver 8.8.8.8
3.重启网卡,使静态ip的配置文件生效
[root@jenkins ~]# service network restart
注:若克隆的Linux虚拟机,则通过“编辑虚拟机设置 -> 网络适配器 -> 高级”重新生成克隆的机器MAC地址。
# 在ubuntu 22.04上配置静态ip
1.以root用户登录,修改网络配置
[root@jenkins ~]# sudo vim /etc/netplan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
ethernets:
ens33:
dhcp4: no
dhcp6: no
addresses:
- 192.168.3.8/24
routes:
- to: default
via: 192.168.3.1
nameservers:
addresses:
- 114.114.114.114
- 8.8.8.8
version: 2
renderer: NetworkManager
3.使静态ip的配置文件生效
[root@jenkins ~]# sudo netplan apply
主机名修改
1.主机名修改
[root@jenkins ~]# vi /etc/hosts
192.168.3.3 jenkins
2.重启Linux
[root@jenkins ~]# shutdown -r now
用户及用户组创建
在Linux系统下创建appop用户及appop组;使用root用户登录,执行以下命令:
# 创建appop组
[root@jenkins ~]# groupadd appop
# 创建appop用户
[root@jenkins ~]# useradd appop -g appop
# 设置appop用户密码
[root@jenkins ~]# passwd appop
更改用户 appop 的密码 。
新的 密码:
问题描述:普通用户输入一些系统命令后出现:不在sudoers文件中,此事将被报告。这是因为当前操作用户的权限不够。
[appop@jenkins ~]$ sudo su -
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。
[sudo] appop 的密码:
appop 不在 sudoers 文件中。此事将被报告。
问题解决:
1.输入命令“ll -h /etc/sudoers”,查看/etc/sudoers文件权限,如果只读权限,修改为可写权限。
[root@jenkins ~]# ll -h /etc/sudoers
-r--r-----. 1 root root 4.3K 9月 30 2020 /etc/sudoers
2.输入修改权限命令:"chmod u+w /etc/sudoers"
[root@jenkins ~]# chmod u+w /etc/sudoers
[root@jenkins ~]# ll -h /etc/sudoers
-rw-r-----. 1 root root 4.3K 9月 30 2020 /etc/sudoers
3.输入编辑命令“vi /etc/sudoers”,在文件中找到root ALL=(ALL) ALL这一行,在该行下以同样的参数添加提升权限的用户信息。
[root@jenkins ~]# vi /etc/sudoers
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
appop ALL=(ALL) ALL
4.返回到命令页面,输入回复权限的命令:
[root@jenkins ~]# chmod 440 /etc/sudoers
5.输入命令:"sudo su -",切换到root用户。
[appop@jenkins ~]$ sudo su -
[sudo] appop 的密码:
上一次登录:三 8月 17 12:43:43 CST 2022从 192.168.3.173pts/1 上
[root@jenkins ~]#
输入系统操作命令,发现普通用户已有了权限提升,问题解决。
3.1 GitLab
GitLab官方网站:https://about.gitlab.com/
3.1.1 安装需求
GitLab安装需求说明:https://docs.gitlab.cn/jh/install/requirements.html
CPU
推荐的最低 CPU 硬件要求:
- 4 核 是推荐的最小核数,支持多达 500 名用户
- 8 核支持多达 1000 名用户
内存
推荐的最低内存硬件要求:
- 4GB RAM 是必需的最小内存,支持多达 500 名用户
- 8GB RAM 支持多达 1000 名用户
注:通常建议服务器上至少有 2GB 的 swap 存储空间,即使您已有足够可用的 RAM。
3.1.2安装方式
方式一:在ssh下安装GitLab
GitLab官方安装文档:https://gitlab.cn/install/?version=ce
安装依赖
[appop@gitlab ~]$ sudo yum install -y curl policycoreutils-python openssh-server perl
[appop@gitlab ~]$ sudo systemctl enable sshd
[appop@gitlab ~]$ sudo systemctl start sshd
配置镜像
[appop@gitlab ~]$ sudo curl -fsSL https://packages.gitlab.cn/repository/raw/scripts/setup.sh | /bin/bash
开始安装
[appop@gitlab ~]$ sudo EXTERNAL_URL="http://192.168.3.9" yum install -y gitlab-jh
除非您在安装过程中指定了自定义密码,否则将随机生成一个密码并存储在 /etc/gitlab/initial_root_password
文件中(出于安全原因,24 小时后,此文件会被第一次 gitlab-ctl reconfigure
自动删除,因此若使用随机密码登录,建议安装成功初始登录成功之后,立即修改初始密码)。使用此密码和用户名 root
登录。
方式二:使用Docker安装GitLab
GitLab官方安装文档:https://docs.gitlab.cn/jh/install/docker.html
注:系统内核至少在3.10以上 uname -r
命令可查看系统内核版本
安装docker
1.卸载旧的版本
[appop@tomcat ~]$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2.需要的安装包
[appop@tomcat ~]$ sudo yum install -y yum-utils
3.设置镜像的仓库
# 默认是国外的,很慢!!!
[appop@tomcat ~]$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 推荐使用阿里云的,十分快
[appop@tomcat ~]$ sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.更新yum软件包索引
[appop@tomcat ~]$ sudo yum makecache fast
5.安装docker相关引擎、docker-ce社区版、docker-ee企业版
[appop@tomcat ~]$ sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
6.启动docker
[appop@tomcat ~]$ sudo systemctl start docker
7.配置开机启动项:
[appop@tomcat ~]$ sudo systemctl enable docker
8.使用docker version查看是否安装成功
[appop@tomcat ~]$ docker version
9.配置镜像加速器
修改daemon配置文件/etc/docker/daemon.json来使用加速器
[appop@tomcat ~]$ sudo mkdir -p /etc/docker
[appop@tomcat ~]$ sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://gw5py7zq.mirror.aliyuncs.com"]
}
EOF
注:阿里云镜像加速器地址获取链接 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
10.重启服务
[appop@tomcat ~]$ sudo systemctl daemon-reload
11.重启docker
[appop@tomcat ~]$ sudo systemctl restart docker
12.hello-world
[appop@tomcat ~]$ sudo docker run hello-world
使用 Docker Engine 安装极狐GitLab
1.添加容器
[appop@gitlab ~]$ sudo docker run --detach \
--hostname 192.168.3.6 \
--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
2.查看已存在的容器
[appop@gitlab ~]$ sudo docker ps
3.关闭容器
[appop@gitlab ~]$ sudo docker stop gitlab
4.启动容器
[appop@gitlab ~]$ sudo docker start gitlab
打开浏览器,访问:http://192.168.3.6
- 当首次运行出现502错误的时候,排查两个原因:
1.内存至少需要4g,建议6g以上
2.稍微等待几分钟后,再刷新一下可能就好了
登录极狐GitLab
查看root用户密码:
1.进入容器
[appop@gitlab ~]$ sudo docker exec -it gitlab /bin/bash
2.查看root用户密码
root@192:/# cat /etc/gitlab/initial_root_password
# WARNING: This value is valid only in the following conditions
# 1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
# 2. Password hasn't been changed manually, either via UI or via command line.
#
# If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.
Password: emhRJuC33vCea41OmIojD+ZZ7nWT8DxNS68oXCrT0wc=
# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.
# 注:密码存在/etc/gitlab/initial_root_password文件中,登录后需修改密码,不然24小时后会失效。
在极狐GitLab登录页面上,输入用户名和密码,单击登录,登录至极狐GitLab。
修改GitLab帐户密码
单击个人中心 >> 编辑个人资料 >> 密码,更改administrator密码。
3.1.3 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 # 查看日志
3.1.4 GitLab仓库创建
登录到GitLab。
点击新建项目,进入创建新项目界面。
点击创建空白项目,填写相关信息。
3.1.5 IDEA集成GitLab
- 在IDEA的Settings >> Plugins中,检查GitLab插件是否安装。
- 打开IDEA菜单栏:VCS >> Create Git Repository。
Create Git Repository弹出框,项目目录最好不要改变。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MHUbAtfb-1661161953769)(https://gitee.com/chenjingwei1618/my-project/raw/master/img/202208192305005.png)]
点击Ok后,项目目录下多了一个.git隐藏文件夹。
这个时候选中项目右键,多出一个git菜单。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vfqh3m3X-1661161953770)(https://gitee.com/chenjingwei1618/my-project/raw/master/img/202208192305786.png)]
- 执行git >> Add操作,图标由红色变成绿色。
- 执行git >> commit操作。
commit后,图标由绿色变成黑色。
- 执行git >> push操作。
第一次push需要配置:
</