搭建gitlab、jenkins等服务

资源网站

本文所有搭建设备均为CentOS 7.9

这里列举一些资源网站

gitlab安装

虽然市面上已经有github和gitee,但对私有仓库都有所限制。出于各方面考虑,搭建一个属于自己的代码仓库是一个不错的选择。

rpm包下载地址:https://packages.gitlab.com/gitlab/gitlab-ce

安装:

1
rpm -ivh gitlab-ce-13.7.4-ce.0.el7.x86_64.rpm

如果安装不上可能需要装policycoreutils-python,可以用yum直接装,也可以下载rpm进行安装。

gitlab配置

修改/etc/gitlab/gitlab.rb文件中的external_url,来配置域名和端口号,例如:external_url = http://gitlab.xxx.com:8080,这里可以先配置成内网端口,后面再在yml中将其修改成80端口,这样就可以不占用内网的80端口啦,配置后执行下面的命令使其生效:

1
gitlab-ctl reconfigure

生效后我们修改opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml文件,将gitlab下的port端口号改为80,然后重启gitlab

1
gitlab-ctl restart

gitlab设置

gitlab软件中有很多设置,后面有空再写

jenkins安装

jenkins是使用java开发,下载他的war包即可运行,但建议使用rpm安装,将jenkins设定为服务进行维护。

在清华镜像站上可以找到jenkins的rpm安装包:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/。执行命令安装:

1
rpm -ivh jenkins-2.227-1.1.noarch.rpm

修改/etc/sysconfig/jenkins设置$JENKINS_USER字段为root,让jenkins使用root权限。如果不想jenkins使用root权限,那需要对jenkins使用的文件夹进行授权。

启动jenkins并设置开机自启:

1
2
systemctl start jenkins
systemctl enable jenkins

防火墙放开:

1
2
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload

jenkins插件

启动后访问http://localhost:8080,需要从系统中获取默认密码,选择插件的地方可以跳过,jenkins插件安装非常慢且容易失败。进入jenkins后,先安装Localization: Chinese插件。重启后到首页点击右下角的Jenkins中文社区,在出来的页面的更新中心镜像设置下点击使用,然后复制提供的更新中心地址,点击设置更新中心地址,拖动到最下面,把刚刚复制的更新中心地址放到升级站点的url中,点击提交。这样就完成了更新中心的切换,再去下载插件就会比较快了。

插件推荐:
插件名 说明
Git git相关
Maven maven相关
GitLab gitlab相关
Publish Over SSH 远程执行命令发送文件
Multiple SCMs 可以让构建拥有子目录,一个构建下面可以构建多个项目
Generic Webhook Trigger 通用的webhook触发器
Role-based Authorization Strategy 权限控制

jenkins配置

在系统管理-全局工具配置中配置maven配置、jdk配置。gitlab还需要在gitlab创建api令牌,并在jenkins系统管理-系统配置中配置。如果部署机器不是本机,还需要需要在系统配置中配置Publish Over SSH的服务器地址、用户名、密码、根目录。

jenkins任务

新建一个任务让博客的发布流程自动化。在jenkins上新建任务,配置博客源码的git地址,构建中添加执行shell

1
2
npm i
npm run build

然后添加Send files or execute commands over SSH将编译好的静态文件发布到指定服务器上

容器化(docker)

使用容器化技术可以快速搭建很多轻量服务,但不建议将重要服务或大型服务使用容器化安装。容器化方法推荐docker,安装方法建议使用官方安装脚本

1
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

安装后启动并设置开机自启

1
2
systemctl start docker
systemctl enable docker

docker容器的运行依赖docker镜像,在官方仓库已经存在了很多docker镜像,其中有的是相关软件的官方开发的镜像,也有非软件官方开发的镜像。具体的docker教程大家可以在网上学习

docker架构图:

下面列举一个mysql容器的运行命令:

1
2
3
4
5
6
7
docker run -d -p 3306:3306 --restart=always \
--name=mysql \
-v /home/mysql/conf:/etc/mysql \
-v /home/mysql/logs:/var/log/mysql \
-v /home/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7.33

以上的脚本运行了一个mysql:5.7.33的docker容器,-p命令将容器内部3306端口映射到外部的3306端口,–restart=always表示docker启动时自动启动该容器。-v命令将目录或文件绑定到容器内。-e设置容器的环境变量,这些变量是该容器镜像的制作者设定的,这里的MYSQL_ROOT_PASSWORD表示mysql的root密码。

docker更多

docker不仅可以用来快速搭建mysql、redis、nginx、zookeeper、showdoc等等服务,也可以通过一些镜像来部署服务和搭建自己的镜像,还可以通过镜像来进行集群部署等

自动化部署流程: