当前位置: 首页 > 工具软件 > GitLab Runner > 使用案例 >

linux下gitlabrunner自动化配置&自己编译gitlabrunner

寿子轩
2023-12-01

首先,请先参考我的另一篇文章,windows下的配置。
https://editor.csdn.net/md/?articleId=124488282
之前步骤都一样,区别在于
gitlab-runner下载地址:https://docs.gitlab.com/runner/install/linux-manually.html
gitlab-runner install –user testuser(这个是你本地机器的账号名字)
并且toml文件位置变了。sudo vi /etc/gitlab-runner/config.toml

本文重点在于自己编译gitlabrunner。
一、首先要准备go的开发环境
下载链接:https://gomirrors.org/
下载版本:go1.15.2.linux-amd64.tar.gz,也可用尝试最新版本
解压:

sudo tar -C /usr/local -xzf go1.15.2.linux-amd64.tar.gz

创建home目录创建工作文件夹,命令示范如下:

cd /home
sudo mkdir gopath
sudo chmod 777 -R gopath
cd gopath
mkdir src
mkdir pkg
mkdir bin
sudo chmod 777 -R *

配置环境变量:

sudo gedit ~/.bashrc

文件最后添加:

export PATH=$PATH:/usr/local/go/bin
export GOPATH=/home/gopath

更新bashrc:

source ~/.bashrc

检查一下go版本:

go version

显示结果:

go version go1.15.2 linux/amd64

二、编译gitlabrunner
下载链接;https://gitlab.com/gitlab-org/gitlab-runner/
最好直接下载发版的代码,我下载的是
https://gitlab.com/gitlab-org/gitlab-runner/-/tree/v12.3.0
然后按照如下目录放置,一定要按照此目录,否则编译找不到文件。并且将下载的源码文件改名。

/home/gopath/src/gitlab.com/gitlab-org/gitlab-runner

切换到src目录下,并运行一下命令即可编译对应版本的gitlab-runner。

编译X86版本:

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go install gitlab.com/gitlab-org/gitlab-runner/

编译arm64版本:

CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go install gitlab.com/gitlab-org/gitlab-runner/

编译mips64le版本:

CGO_ENABLED=0 GOOS=linux GOARCH=mips64le go install gitlab.com/gitlab-org/gitlab-runner/

特别说明:上述编译的所有文件都会生成到如下目录:

/home/gopath/bin

编译mips64le版本时会报错:
gitlab.com/gitlab-org/gitlab-runner/vendor/github.com/docker/docker/pkg/system
gitlab.com/gitlab-org/gitlab-runner/vendor/github.com/docker/docker/pkg/system/stat_linux.go:11:3: cannot use s.Rdev (type uint32) as type uint64 in field value

在报错文件的对应位置添加uint64()即可,不清楚这样添加是否有问题,反正可以运行。

文件位置:
/home/gopath/src/gitlab.com/gitlab-org/gitlab-runner/vendor/github.com/docker/docker/pkg/system/stat_linux.go

修改前:
// fromStatT converts a syscall.Stat_t type to a system.Stat_t type
func fromStatT(s *syscall.Stat_t) (*StatT, error) {undefined
return &StatT{size: s.Size,
mode: s.Mode,
uid: s.Uid,
gid: s.Gid,
rdev: s.Rdev,
mtim: s.Mtim}, nil
}

修改后:
// fromStatT converts a syscall.Stat_t type to a system.Stat_t type
func fromStatT(s *syscall.Stat_t) (*StatT, error) {undefined
return &StatT{size: s.Size,
mode: s.Mode,
uid: s.Uid,
gid: s.Gid,
rdev: uint64(s.Rdev),
mtim: s.Mtim}, nil
}

编译完成后执行gitlab-runner -v 会显示改可执行程序的go版本以及操作系统及架构。

参考链接:https://blog.csdn.net/wlhj131/article/details/108798790?spm=1001.2014.3001.5506

 类似资料: