GitLab
GitLab
1 概述
记录 GitLab 的部署、使用。
2 安装 GitLab
使用 CentOS 7.9 安装;安装免费版本的 gitlab-ce(社区版)。
2.1 环境准备
1. 依赖安装。
yum install -y curl policycoreutils-python openssh-serve
2. 关闭防火墙和 SELinux。
见 关闭防火墙和 SELinux
3. ssh 服务自启动配置。
systemctl enable sshd
systemctl start sshd
4. 安装 postfix,并配置自启动。
可选,邮件服务需要,这里我们不安装。
2.2 GitLab 安装
gitlab-ce 下载。下载安装命令如下。
wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-15.7.9-ce.0.el7.x86_64.rpm/download.rpm
yum install -y gitlab-ce-15.7.9-ce.0.el7.x86_64.rpm
2.2.1 配置 GitLab
配置 IP 和 端口。
# 更改配置
vim /etc/gitlab/gitlab.rb
external_url 'http://192.168.37.101:8081'
# 重新加载配置,时间有点久,稍等下
gitlab-ctl reconfigure
# 默认登录账户名是 root,临时密码见配置好后的控制台,可以去 /etc/gitlab/initial_root_password 文件中查看,我的为 4dZXNf5yNtQp1eXORp80jEimvQaqAl7x5gcDKcoHU/g=。
2.2.2 启动 GitLab
使用命令 gitlab-ctl start
,启动成功后访问 http://192.168.37.101:8081
。
2.3 常用命令
常用命令如下。
# 修改默认的配置文件
vim /etc/gitlab/gitlab.rb
# 检查 gitlab 配置
gitlab-rake gitlab:check SANITIZE=true --trace
# 重新加载 gitlab 配置文件,启动部分核心服务
gitlab-ctl reconfigure
# 查看服务状态
gitlab-ctl status
# 启动所有 gitlab 组件
gitlab-ctl start
# 停止所有 gitlab 组件
gitlab-ctl stop
# 重启所有 gitlab 组件
gitlab-ctl restart
# 查看日志
gitlab-ctl tail
# 禁止 GitLab 开机自启动
systemctl disable gitlab-runsvdir.service
# 启用 GitLab 开机自启动
systemctl enable gitlab-runsvdir.service
2.4 GitLab 控制台
输入命令 gitlab-rails console
进去控制台,可以执行以下控制台命令。
# 查询所有的用户:
user = User.all
# 查找用户信息,通过条件查询用户,常见的 where 条件有 username、 email 、state
user = User.where(id:1).first
user = User.find_by(email: 'admin@local.host')
# 通过 id 查询用户:
user = User.find(1)
# 查询用户某个字段的值,比如,显示当前用户的 email:
user.email
# 修改用户的信息
# 重置密码,输入 user.password='new_password',密码位置填写您新的密码,然后再输入 user.save 保存修改的用户信息即可。
# 修改用户状态:
user.state = 'active'
user.save
2.5 卸载 GitLab
命令如下。
# 停止 gitlab
gitlab-ctl stop
# 卸载 gitlab(注意这里写的是 gitlab-ce)
rpm -e gitlab-ce
# 查看并删除 gitlab 进程
ps -ef | grep gitlab
# 如果有进程,就杀掉(kill -9 pid),没有的话进行下一步
# 杀掉后,在使用 ps -aux | grep gitlab 确认一遍,还有没有 gitlab 的进程
# 删除所有包含 gitlab 的文件
find / -name gitlab | xargs rm -rf
3 安装 Gitlab-Runner
安装命令如下。
# 打开下面链接下载 gitlab-runner 文件
https://mirrors.tuna.tsinghua.edu.cn/gitlab-runner/yum/el7/gitlab-runner-15.7.4-1.x86_64.rpm
# 安装,注意需要提前安装好 git。命令如下。
# yum install -y git
rpm -ivh gitlab-runner-15.7.4-1.x86_64.rpm
# 启动 gitlab-runner
systemctl start gitlab-runner
gitlab-runner -h
3.1 Gitlab-Runner 注册
可以通过设置页面查看注册需要的 url 和 token,url 参考 http://192.168.37.101:8081/gitlab-instance-2b3b3315/cicddemo/-/settings/ci_cd
。
命令如下。
gitlab-runner register -non-interactive -url "http://192.168.37.101:8081/" -registration-token "GR1348941fzrZ4dzcDpKugyJWjrEf" -executor "shell" -description "runner description" -tag-list "build,k8s,java" -run-untagged="true" -locked="false" -access-level="not_protected"
# -non-interactive 非交互式注册
# -url "http://192.168.37.101:8081/" 项目的 UR L地址
# -registration-token "GR1348941fzrZ4dzcDpKugyJWjrEf" Token
# -executor "shell" 选择的执行器,这里选择 shell
# -description "runner description" 描述信息
# -tag-list "build,k8s,java" 标签名
# -run-untagged="false" 是否运行没有任何标签的 runner
# -locked="false" runner 是否为 locked
# -access-level="not_protected" 访问级别
# 通过以下命令查看配置好的配置信息,修改的话也可以直接改该文件
ps -ef|grep gitlab-runner
root 8298 1 0 12:36 ? 00:00:00 /usr/bin/gitlab-runner run --working-directory /home/gitlab-runner --config /etc/gitlab-runner/config.toml --service gitlab-runner --user gitlab-runner
cat /etc/gitlab-runner/config.toml
3.2 CICD 搭建
在 main
分支下新建 .gitlab-ci.yml
文件,录入以下内容,提交后即可以看到 cicd 任务。
stages:
- clean
- build
clean_job:
tags:
- build
stage: clean
only:
- main
script:
- echo 'mvn clean'
build_job:
tags:
- build
stage: build
only:
- main
script:
- echo 'mvn build'
4 配置进阶
参考
附录
settings.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
<localRepository>/data/.mvnRepo</localRepository>
<mirrors>
<mirror>
<id>mirror</id>
<mirrorOf>central,jcenter,!rdc-releases,!rdc-snapshots</mirrorOf>
<name>mirror</name>
<url>https://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
<mirror>
<id>Central</id>
<url>http://repo1.maven.org/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings>