date
slug
status
tags
type
avatar
summary

配置

一台linux服务器,里面包含了nginx服务和docker,gitlab运行在docker下,gitlab镜像版本为gitlab/gitlab-ce:9.0.0-ce.0

安装

有两种方式可以:rpm和yum都是liunx的包管理工具,类型前端的npm包管理工具,两种方式都可以安装

yum:

这种方式安装的最新的gitlab-runner
# 添加yum源 curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash # 安装 yum install gitlab-runner

rpm:

rpm可以指定安装某个版本的runner,可以去gitlab runner rpm包版本下载地址 查看rpm的安装包,这里需要熟悉linux里面的配置来确定下载哪个版本,我这里用的是centos,所以使用的是x86_64这个后缀的,不熟悉的话就还是使用yum来安装最新的
# 先下载 wget --content-disposition https://packages.gitlab.com/runner/gitlab-runner/packages/ol/7/gitlab-runner-12.5.0-1.x86_64.rpm/download.rpm #再安装 rpm -ivh gitlab-runner-12.5.0-1.x86_64.rpm
安装完成之后
# 查看是否安装成功 gitlab-runner status
notion image
如果显示以上则安装成功

注册

# 执行注册 gitlab-runner register
按照提示填入内容
1.gitlab所在服务器地址:这里的url是个坑,我直接复制gitlab上的地址注册一直提示runner无法连接到gitlab,需要注意几种情况:
1.1 gitlab运行在服务器上,使用服务器的ip来拼接,例如http:{ip}:{port}/ci,如果有配置域名,则是http:{domain}/ci
1.2 gitlab使用docker运行,需要进到docker容器内部,获取gitlab的ip
# name 容器名 # id 容器id # 进入容器内部 docker exec -it [name/id] bash # 查看容器ip cat /etc/hosts # 退出容器内部 ctrl+d
使用获取的ip来拼接url http:{ip}/ci
2.registration token:gitlab项目仓库 ⇒ settings ⇒ CI/CD Pipelines
notion image
3.runner描述:用来区分不同的runner
4.执行环境:shell
注册完成回到gitlab项目仓库 ⇒ settings ⇒ CI/CD Pipelines
notion image
看到这个就表示注册成功

更改runner权限

# 可以查看到gitlab-runner的工作目录和默认用户等一系列相关信息。 ps aux|grep gitlab-runner # 卸载gitlab-runner默认用户 sudo gitlab-runner uninstall # 将用户设置为roo sudo gitlab-runner install --working-directory /home/gitlab-runner --user root # 重启服务 sudo systemctl restart gitlab-runner.service #**注:**配置runner为root权限时,系统环境变量需要配置在/etc/profile中,runner配置需要将~/.gitlab-runner/config.toml复制到/etc/gitlab-runner/中 sudo cp ~/.gitlab-runner/config.toml /etc/gitlab-runner/

自动化构建

这里根据项目情况来实现,当前这个项目我再linux上安装了node环境,nginx也是直接在服务器上
项目中添加.gitlab-ci.yml文件
stages: - build - deploy build: stage: build script: - echo `pwd` # root权限,npm install会报错,所以加上了--unsafe-perm - npm install --unsafe-perm - npm run build:prod only: - dev cache: paths: - node_modules/ - dist/ deploy: stage: deploy script: - pwd - ls -l # 这些操作都是在root下操作的 - rm -rf /usr/local/nginx/html/web/* - mv dist/* /usr/local/nginx/html/web/ - cd /usr/local/nginx/sbin - ./nginx -s reload only: - dev
至此,每次在dev分支提交代码之后就会触发gitlab的自动构建部署
notion image

常用操作

gitlab-runner uninstall #该命令停止运行并从服务中卸载GitLab Runner。 gitlab-runner start #该命令启动GitLab Runner服务。 gitlab-runner stop #该命令停止GitLab Runner服务。 gitlab-runner restart #该命令将停止,然后启动GitLab Runner服务。 gitlab-runner status #此命令显示GitLab Runner服务的状态。当服务正在运行时,退出代码为零;而当服务未运行时,退出代码为非零。```

卸载

# 停止服务 gitlab-runner stop # 取消随机启动 chkconfig gitlab-runner off # 卸载gitlab-runner gitlab-runner uninstall # 清理文件 rm -rf /etc/gitlab-runner rm -rf /usr/local/bin/gitlab-runner rm -rf /usr/bin/gitlab-runner rm -rf /etc/sudoers.d/gitlab-runner # 删除用户 userdel -r gitlab-runner # yum安装 yum remove gitlab-runner # rpm安装 rpm -e gitlab-runner
Rollup打包npm组件QianKun