gitlab-ci搭建——第一部分:基础工具

本文详细介绍了如何搭建gitlab-ci的基础环境,包括安装和配置gitlab、maven,注册gitlab-runner,以及安装和配置私有镜像仓库harbor。通过这些步骤,实现了对spring-boot项目的自动化构建和部署。此外,还涵盖了在过程中遇到的问题和解决方案,如maven源配置、docker权限问题等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

gitlab-ci搭建——第一部分:基础工具

目标

用 gitlab-ci 实现 spring-boot 项目的自动部署

工具或技术

  • gitlab-runnger
  • docker
  • maven
  • git
  • harbor

安装和配置 gitlab

(略)

安装和配置 maven(编译和打包使用)

基本过程:下载、修改配置、设置环境变量

下载

新建目录用于存放 maven

mkdir /data/maven

浏览器打开https://mirrors.tuna.tsinghua.edu.cn/,依次找到并下载maven到刚才新建的目录,并解压
在这里插入图片描述

在这里插入图片描述

修改配置(可选)

可自行修改 maven 源、本地仓库路径等信息

<mirror>
  <id>alimaven</id>
  <name>aliyun maven</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  <mirrorOf>central</mirrorOf>
</mirror>

修改环境变量

vim /etc/profile

在文件最后添加

MAVEN_HOME=/data/maven
export PATH=${MAVEN_HOME}/bin:${PATH}

然后执行

source  /etc/profile

验证

[root@localhost maven]# mvn -v
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /data/maven
Java version: 1.8.0_221, vendor: Oracle Corporation, runtime: /usr/java/jdk1.8.0_221/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1062.4.1.el7.x86_64", arch: "amd64", family: "unix"

安装和注册 gitlab-runner

安装

# 增加源
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
# 安装
yum install gitlab-runner  -y
# 设置开机启动
systemctl enable gitlab-runner

注册

gitlab-runner register

按提示,依次输入 gitlab 地址、token、runner 名称(描述)、标签、执行环境(类型)类型等信息即可完成注册。

  • token 在 gitlab 查看:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dObC7TPk-1687791065825)(runner-1.png)]

  • runner 类型填写 shell

  • 检查是否注册成功

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kf380OCz-1687791065826)(runner-2.png)]

安装和配置 harbor

这里采用离线安装的模式

安装 docker-compose

# 下载,可先登录下面的地址,查看介绍和版本,组装自己的url。如果下载速度慢,直接用浏览器下载再上传到服务器
sudo curl -L https://github.com/docker/compose/releases/download/2.4.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

# 添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 测试安装结果
docker-compose --version

安装harbor

官方下载地址: https://github.com/goharbor/harbor/releases

# 解压
tar -zxvf harbor.v2.8.1.tar.gz
# 配置文件
cp harbor.yml.tmpl harbor.yml

修改 hostname、port

如果有 https 访问需求,修改对应选项, 如果没有就注释调 https 选项

执行 install.sh 安装

报错: ./install.sh:行 83: ./prepare: 权限不够

修改 prepare 权限,然后重新安装

chmod 777 prepare

安装完毕,打开系统访问:默认密码在 harbor.yml 文件:admin/Harbor12345

登录系统

在这里插入图片描述

docker 配置,增加自己的 harbor 源

在执行 docker 的服务器,修改 docker 配置文件:/etc/docker/daemon.json

增加配置:"insecure-registries": ["192.168.128.3:9900"]

下面是我完整的配置文件

[root@localhost maven]# cat /etc/docker/daemon.json
{
  "insecure-registries": ["192.168.128.3:9900"]
}

这里我使用的 IP+端口的方式,最好使用域名,可以通过 dns 服务器或者修改 hosts 来实现

修改后,重新加载 docker 配置。这个命令一般不影响 docker 正在运行的容器

systemctl reload docker

创建用户

登录系统创建用户即可,创建用户后,要在项目页面把用户添加为项目成员

测试

登录

推送

docker push 192.168.128.3:9900/mypro/myimage:lastest

在这里插入图片描述

浏览器登录 harbor,可以看到刚才推送的镜像

拉取

docker pull 192.168.128.3:9900/mypro/myimage:lastest

在其他服务器执行 pull 命令会报错,因为没有注册 harbor。参照前面的方法修改 daemon.json 即可

配置 SSH KEY

生成 KEY

ssh-keygen -t rsa

系统会生成 2 个文件:

  • id_rsa 私钥
  • id_rsa.pub 公钥

将公钥文件导入到本机认证文件,并更改权限

cat /root/.ssh/id_rsa.pub >>/root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
chmod 700 /root/.ssh/

此时把私钥下载到电脑,用 xshell 测试可以直接通过 key 登录服务器

或者把私钥拷到另一个服务器测试:

ssh root@ip -i /root/id_rsa

可能会报错:gitlabci Bad owner or permissions on /home/gitlab-runner/.ssh/config

检查文件权限:

chmod 700 /home/gitlab-runner/.ssh
chmod 600 /home/gitlab-runner/.ssh/config
chown gitlab-runner /home/gitlab-runner/.ssh
chown gitlab-runner /home/gitlab-runner/.ssh/config

ubuntu 系统的处理

ubuntu 在生成 key 以后,需要进行转换

# 安装 putty 工具
apt install -y putty
# 密钥转化
puttygen id_rsa -o id_rsa
puttygen id_rsa -O private-openssh -o id_rsa.pem
# 将公钥导入指定文件
cat id_rsa.pub  > authorized_keys

在我的安装过程中,ubuntu 的 key 不能使用 xshell 登录,但可以用ssh root@ip -i /root/id_rsa登录。已达到目的

尝试和排错

到这里,环境基本准备完成,进行了第一次尝试:做一个简单的 gitlab-ci.yml 提交触发 ci

第一次 报错

报错,意思 git 版本过低。我这台服务器安装 gitlab 较早,可能 git 版本不满足 runner 要求

在这里插入图片描述

升级 git 版本

yum remove git -y
yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-1.noarch.rpm
yum install git
git --version

再次触发,发现 job 状态一直是 pending。排查后,是 runner 没了。应该是写在 git 的时候把 runner 一起卸载了。重新安装 runner,再提交

在这里插入图片描述

maven 报错

这次提交可以看到控制台有正常输出,job 被触发执行了。不过 maven 报错: 找不到程序包 java.lang
在这里插入图片描述

检查 pom 文件的 maven-compiler-plugin:注意 bootclasspath 的斜杠和冒号,window 系统是分号,linux 系统是冒号。通用办法是${path.separator}。修改完毕以后成功编译

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.7.0</version>
  <configuration>
    <source>1.8</source>
    <target>1.8</target>
    <encoding>UTF-8</encoding>
    <compilerArguments>
      <verbose/>
      <!--注意这里,Windows是分号,linux是冒号,根治办法是使用${path.separator}-->
      <!--
      <bootclasspath>${java.home}/lib/rt.jar:${java.home}/lib/jce.jar</bootclasspath>
      -->
      <bootclasspath>${java.home}/lib/rt.jar${path.separator}${java.home}/lib/jce.jar</bootclasspath>
    </compilerArguments>
  </configuration>
</plugin>

docker 相关权限报错

git 推送触发 ci,报错:Got permission denied while trying to connect to the Docker daemon socket
在这里插入图片描述

原因是当前执行 gitlab-runner 的用户没有权限执行 docker 命令,解决的方向是把当前用户添加到能执行 docker 命令的用户组

# 新建 docker 用户组
groupadd docker

# 将用户添加到用户组
usermod -aG docker gitlab-runner

然后查看 docker.sock 所属的用户组,如果是 root,则修改为 docker

chown root:docker /var/run/docker.sock

修改后这个报错恢复正常

RPC 失败错误

错误:RPC 失败。HTTP 403 curl 22 The requested URL returned error: 403
致命错误: 预期 'acknowledgments'

原因暂时未知,处理方法是删除 gitlab-runner 里的项目目录。项目目录会在控制台打出,自己注意查看即可

至此 gitlab-ci 平台层面的路已打通。后面是针对我的项目和环境的记录。本文最后上完整的 gitlab-ci.yml

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值