首先,请先参考我的另一篇文章,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