openEuler系统gitlab-runner自定义libvirt

本文详细介绍了在openEuler环境中配置GitLabRunner的过程,包括安装必要的环境包,设置免密密钥,注册Runner到GitLab,以及制作和管理libvirt镜像,确保Runner的顺利运行和并发执行。

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

宿主机环境配置

注:以下操作均为 root 用户,避免 gitlab-runner 用户引发的权限问题

环境:openEuler-20.03-LTS-SP3

宿主机部署runner目录分布

gitlab-runner                                      # gitlab-runner 工作目录全路径/home/gitlab-runner
└── ci                                            # ci 标识目录
    ├── images                                    # libvirt镜像目录,用作拷贝和基准镜像存储位置
    │   ├── gitlab-runner-base.qcow2              # 基准镜像
    │   ├── runner-117-project-18-concurrent-0-job-1969.qcow2  # 执行器副本镜像,由 prepare.sh 脚本自动生成
    │   ├── runner-117-project-18-concurrent-1-job-1970.qcow2
    │   ├── runner-117-project-18-concurrent-2-job-1971.qcow2
    │   ├── runner-117-project-18-concurrent-3-job-1972.qcow2
    │   └── runner-117-project-18-concurrent-4-job-1973.qcow2
    └── libvirt-driver                            # 驱动runner的脚本目录
        ├── base.sh                               # 公用基础脚本,存变量和复用函数
        ├── cleanup.sh                            # 清除脚本,job执行完使用
        ├── prepare.sh                            # 前置脚本,job执行前使用
        └── run.sh                                # 运行脚本,job执行时使用

1. 环境包安装

# x86_64:
yum install -y tar virt-install qemu-img qemu-kvm libvirt
# aarch64:
yum install -y tar virt-install qemu-img qemu-kvm libvirt libvirt-daemon-driver-qemu

2. 添加脚本文件

3. 生成免密密钥

libvirtrun.sh 默认以ssh进行执行构建过程

ssh-keygen -t ed25519 -C libvirt_node

4. 注册runner到gitlab站点

注:注意宿主机平台架构下载 gitlab-runner 程序

  • aarch64
    curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm64
    chmod +x /usr/local/bin/gitlab-runner
    gitlab-runner install --user=root --working-directory=/home/gitlab-runner
    gitlab-runner start
    gitlab-runner register --url http://你的gitlab地址 --registration-token 你的注册Token
    
  • x86_64
    curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
    chmod +x /usr/local/bin/gitlab-runner
    gitlab-runner install --user=root --working-directory=/home/gitlab-runner
    gitlab-runner start
    gitlab-runner register --url http://你的gitlab地址 --registration-token 你的注册Token
    

环境选择时选择 custom
执行完毕后,编辑 /etc/gitlab-runner/config.toml

concurrent = 20                                       # 当前runner节点并发量,默认为1
check_interval = 0
shutdown_timeout = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "10-113-74-66"
  url = "http://10.113.75.183:3000/"
  id = 117
  token = "z1K__gW7yWKYuTRHAYuW"
  token_obtained_at = 2023-05-17T02:54:17Z
  token_expires_at = 0001-01-01T00:00:00Z
  executor = "custom"
  builds_dir = "/gitlab-runner/builds"		 # builds_dir需要添加
  cache_dir = "/gitlab-runner/cache"       # cache_dir需要添加
  [runners.cache]
    MaxUploadedArchiveSize = 0
  [runners.custom]
    prepare_exec = "/home/gitlab-runner/ci/libvirt-driver/prepare.sh"    # prepare_exec 需要指定
    run_exec = "/home/gitlab-runner/ci/libvirt-driver/run.sh"            # run_exec 需要指定
    cleanup_exec = "/home/gitlab-runner/ci/libvirt-driver/cleanup.sh"    # cleanup_exec 需要指定

注:builds_dircache_dir 参数指定应当确定 qcow2 的磁盘分区大小,如果构建过程占满磁盘会导致 Job 阻塞,最终超时失败。

制作 gitlab-runner-base.qcow2

  • 方法一:使用virt-builder,可参考GitLab官文Using libvirt with the Custom executor大概率检查环境时存在问题。
  • 方法二:本地编辑基准版本dasos-e2.1.1 qcow2镜像。
    本文采用方法二

1. 启动qcow2镜像

virt-install --name dasos-e2.1.1 \
  --os-variant fedora28 \
  --disk dasos-e2.1.1-x86_64.qcow2 \
  --import \
  --vcpus=2 \
  --ram=2048 \
  --network default \
  --graphics vnc,port=50500,listen=0.0.0.0 \
  --noautoconsole

# 参数释义:
# --name dasos-e2.1.1 virsh 域名称
# --os-variant fedora28 基本镜像类型
# --disk dasos-e2.1.1-x86_64.qcow2 镜像文件
# --vcpus=2 虚化CPU数量
# --ram=2048 分配内存
# --network default 使用virsh net-list 查看,此处需要存在默认网络,名称为`default`,否则无法联网
# --graphics vnc,port=50500,listen=0.0.0.0 开启VNC
# --noautoconsole 屏蔽自动切换终端

注:–disk指定aarch64镜像时添加需要参数 --arch aarch64
使用vnc软件链接:vnc://宿主机IP地址:50500,进行qcow2镜像环境编辑。

2. 配置网卡自动获取IP

编辑 /boot/grub2/grub.cfg 添加内核启动项 net.ifnames=0 biosdevname=0

linux   /boot/vmlinuz-* root=* ro net.ifnames=0 biosdevname=0 console=XXX

添加网卡脚本/etc/sysconfig/ifcfg-eth0

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=dhcp

HWADDR可不填
注:当前步骤执行完毕先重启校验网络是否正常

3. 安装所需要的软件包

注:git为必须安装否则Runner将无法启动qcow2镜像。
构建过程时所需的包也可以在这里安装。

yum install git

4. root的SSH免密创建

注:先切换到宿主机上执行

# 第一次需要输入密码:system
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@你的qcow2的IP地址

# 免密测试
ssh root@你的qcow2的IP地址

5. 拷贝到宿主机发布目录

cp ./dasos-e2.1.1.qcow2 /home/gitlab-runner/ci/images/gitlab-runner-base.qcow2
### 配置和使用GitLab Runner的Shell执行器于Alpine Linux #### 安装依赖项 为了使GitLab Runner能够在Alpine Linux上正常工作,安装必要的依赖包至关重要。这通常涉及到更新软件包列表并安装`curl`和其他可能必需的工具。 ```bash apk update && apk add curl bash openssh-client git ``` 此命令会确保系统拥有最新版本的软件包以及运行GitLab Runner所需的组件[^1]。 #### 下载并安装GitLab Runner二进制文件 对于Alpine Linux而言,推荐的方法是从官方站点下载适合Linux系统的预编译二进制文件来安装GitLab Runner: ```bash curl -L https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64 -o /usr/local/bin/gitlab-runner chmod +x /usr/local/bin/gitlab-runner ``` 上述脚本实现了从指定URL获取最新的稳定版GitLab Runner,并将其放置到系统的可执行路径下,赋予其执行权限以便后续调用。 #### 注册Runner 完成安装之后,下一步就是通过执行注册命令来进行Runner实例的具体设置。这里需要注意的是,在注册过程中可以择不同的executor类型;针对当前需求应择shell作为executor项之一。 ```bash gitlab-runner register \ --url "https://your.gitlab.instance/" \ --registration-token "YOUR_REGISTRATION_TOKEN" \ --executor shell \ --description "alpine-shell" ``` 这段代码展示了如何利用环境变量或直接输入的方式向特定GitLab服务器提交新的Runner申请,同时指定了要使用的executor为shell模式。 #### 运行服务 为了让GitLab Runner能够持续监听来自CI/CD管道的任务请求,建议将其配置成systemd service的形式启动。创建一个新的service定义文件位于/etc/systemd/system目录内: ```ini [Unit] Description=GitLab Runner After=syslog.target network-online.target [Service] Type=simple ExecStart=/usr/local/bin/gitlab-runner run --working-directory /home/gitlab-runner --config /etc/gitlab-runner/config.toml --service gitlab-runner --syslog Restart=always User=root [Install] WantedBy=multi-user.target ``` 保存更改后可以通过下面这条指令激活该服务并设为开机自启状态: ```bash systemctl enable gitlab-runner.service systemctl start gitlab-runner.service ``` 至此已经完成了在Alpine Linux平台上部署带有Shell Executor特性的GitLab Runner全过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值