一、安装
Debian/Ubuntu 用户
1.首先信任 GitLab 的 GPG 公钥:
curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null
2.修改清华源:
vim /etc/apt/sources.list.d/gitlab-runner.list
deb http://mirrors.tuna.tsinghua.edu.cn/gitlab-runner/debian buster main
3.安装 gitlab-runner:
sudo apt-get update
sudo apt-get install gitlab-runner
CentOS/RHEL
新建 /etc/yum.repos.d/gitlab-runner.repo,内容为
[gitlab-runner]
name=gitlab-runner
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-runner/yum/el$releasever/
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key
再执行
sudo yum makecache
sudo yum install gitlab-runner
4.启动
gitlab-runner start
5.注册runner
gitlab-runner register
运行:
gitlab-runner run
6.docker其他操作 (貌似可以忽略!)
sudo groupadd docker #添加docker用户组
sudo gpasswd -a gitlab-runner docker #将登陆用户加入到docker用户组中
newgrp docker #更新用户组
su gitlab-runner #切换到runner用户组
docker ps #测试docker命令是否可以使用sudo正常使用
7.docker gitlab部署安装
docker pull beginor/gitlab-ce:11.3.0-ce.0
docker run --detach --publish 8443:443 --publish 8880:80 --publish 8822:22 --name my-gitlab --restart unless-stopped --volume /Users/ys/svn_git/05Docker_workspace/gitlab/etc:/etc/gitlab --volume /Users/ys/svn_git/05Docker_workspace/gitlab/log:/var/log/gitlab --volume /Users/ys/svn_git/05Docker_workspace/gitlab/data:/var/opt/gitlab --privileged=true -d beginor/gitlab-ce:11.3.0-ce.0
8.测试
提交代码,测试,是否触发CI
二、gitlab-ci.yml参考
#20210811
stages:
- build
- deploy
variables:
siteLocation: "/home"
siteName: "weitest"
sshuser: "root"
sship: "xx"
sshpasswd: "xx"
ports: "8870,8871,8872"
projectpath: "/root/dockerfile/"
dockercomposepath: "/root/dockerfile/docker-compose.yml"
autopushpath: "/root/dockerfile/autopush.sh"
before_script:
- echo "Before run..."
# 清理项目目录
- if [ -d "${siteLocation}/${siteName}" ]; then
- rm -rf ${siteLocation}/${siteName}
- fi
- mkdir -p ${siteLocation}/${siteName}
build_job:
stage: build
script:
- echo "build run..."
- pwd
- ls -l
- ifconfig
- cat /root/.ssh/id_rsa.pub
# 打包程序,上传到测试docker服务器
- tar -czvf ${siteLocation}/${siteName}/gitlabwebapps.tar.gz .
# - scp -r ${siteLocation}/${siteName}/gitlabwebapps.tar.gz ${sshuser}@${sship}:${projectpath}
- sshpass -p ${sshpasswd} scp -r ${siteLocation}/${siteName}/gitlabwebapps.tar.gz ${sshuser}@${sship}:${projectpath}
only:
- master
tags:
- abc
deploy_job:
stage: deploy
script:
- echo "deploy run..."
- pwd
- ls -l
- ifconfig
# 构建docker容器
# - ssh -Tq ${sshuser}@${sship} "docker-compose -f ${dockercomposepath} up -d --build --force-recreate --remove-orphans"
- sshpass -p ${sshpasswd} ssh -Tq ${sshuser}@${sship} "docker-compose -f ${dockercomposepath} up -d --build --force-recreate --remove-orphans"
# 上传images镜像
# - ssh -Tq ${sshuser}@${sship} "/bin/bash ${autopushpath}"
- sshpass -p ${sshpasswd} ssh -Tq ${sshuser}@${sship} "/bin/bash ${autopushpath}"
only:
- master
tags:
- abc
三、初始化
1. Reset CI/CD variables
sudo gitlab-rails dbconsole
SELECT * FROM public."ci_group_variables";
SELECT * FROM public."ci_variables";
DELETE FROM ci_group_variables;
DELETE FROM ci_variables;
2.Reset runner registration tokens
sudo gitlab-rails dbconsole
-- Clear project tokens
UPDATE projects SET runners_token = null, runners_token_encrypted = null;
-- Clear group tokens
UPDATE namespaces SET runners_token = null, runners_token_encrypted = null;
-- Clear instance tokens
UPDATE application_settings SET runners_registration_token_encrypted = null;
UPDATE application_settings SET encrypted_ci_jwt_signing_key = null;
-- Clear runner tokens
UPDATE ci_runners SET token = null, token_encrypted = null;
3.Reset pending pipeline jobs
sudo gitlab-rails dbconsole
-- Clear build tokens
UPDATE ci_builds SET token = null, token_encrypted = null;