第一步,在初始化环境的centos7部署gitlab私服(gitlab的默认端口是80),并且汉化gitlab
一.更换阿里yum
1.1 下载wget
yum install -y wget
1.2 备份默认的yum
mv /etc/yum.repos.d /etc/yum.repos.d.backup
1.3 设置新的yum目录
mkdir /etc/yum.repos.d
1.4 下载阿里yum配置到该目录中
//Linux wget是一个下载文件的工具
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
1.5 重建缓存
yum clean all
yum makecache
1.6 升级所有包(改变软件设置和系统设置,系统版本内核都升级,故需要几分钟耐心等待)
yum update -y
二.获取gitlab汉化包(要部署非汉化版,可以跳过这一块内容)
说明:gitlab中文社区版的项目,v7-v8.8是由Larry Li发起的“GitLab 中文社区版项目”(https://gitlab.com/larryli/gitlab),从 v8.9 之后,@xhang 开始继续该汉化项目(https://gitlab.com/xhang/gitlab)。
2.1 安装git
yum install -y git
2.2 获取汉化版本库,下载最新的汉化包
git clone https://gitlab.com/xhang/gitlab.git
2.3 如果是要下载老版本的汉化包,需要加上老版本的分支,比如今天已经是10.0.4,我依旧想下载10.0.2,可以运行下面的语句
git clone https://gitlab.com/xhang/gitlab.git -b v10.0.2-zh
2.4 查看该汉化补丁的版本
cat gitlab/VERSION
三.部署社区版gitlab
3.1 安装gitlab的依赖项
yum install -y curl openssh-server openssh-clients postfix cronie policycoreutils-python
// 10.x以后开始依赖policycoreutils-python,我之前在使用9.x时还没有依赖该项。
3.2 启动postfix,并设置为开机启动
systemctl start postfix
systemctl enable postfix
3.3 设置防火墙
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
//如果提示FirewallD is not running说明防火墙未开启
systemctl start firewalld //通过命令开启
3.4 获取gitlab的rpm包
途径1:通过清华开源镜像站
查看清华开源镜像站,有我需要的10.0.2的rpm包。
获取rpm包
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.0.2-ce.0.el7.x86_64.rpm
途径2:从官方获取RPM包后上传到/root目录下
官方下载:packages.gitlab.com/gitlab/gitl…
因为要在centos7上安装版本10.0.2的gitlab,故找到gitlab-ce-10.0.2-ce.0.el7.x86_64.rpm下载到本地后,通过Bitvise SSH Client工具将rpm包上传到gitlab虚拟机的/root目录下。
因为要在centos7上安装版本10.0.2的gitlab,故找到gitlab-ce-10.0.2-ce.0.el7.x86_64.rpm下载到本地后,通过Bitvise SSH Client工具将rpm包上传到gitlab虚拟机的/root目录下。
3.5 安装rpm包
rpm -i gitlab-ce-10.0.2-ce.0.el7.x86_64.rpm
根据提示,继续执行指令配置gitlab。
gitlab-ctl reconfigure
3.6 修改配置文件gitlab.rb
vim /etc/gitlab/gitlab.rb
//将external_url变量的地址修改为gitlab所在centos的ip地址。
因为修改了配置文件,故需要重新加载配置内容。
gitlab-ctl reconfigure
gitlab-ctl restart
3.7 查看gitlab版本
head -1 /opt/gitlab/version-manifest.txt
四.覆盖汉化包
4.1 停止gitlab服务
gitlab-ctl stop
4.2 切换到gitlab汉化包所在的目录(即步骤二获取的汉化版gitlab)
cd /root/gitlab
4.3 比较汉化标签和原标签,导出 patch 用的 diff 文件到/root下
git diff v10.0.2 v10.0.2-zh > ../10.0.2-zh.diff
4.4 回到/root目录
cd
4.5 将10.0.2-zh.diff作为补丁更新到gitlab中
yum install patch -y
patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < 10.0.2-zh.diff
4.6 启动gitlab
gitlab-ctl start
4.7 重新配置gitlab
gitlab-ctl reconfigure
第二步,配置gitlab runner
一.安装 GitLab Runner
官方安装教程
我用的是Install using GitLab’s repository for Debian/Ubuntu/CentOS/RedHat方法安装
跟着步骤走就是了很简单
第1步
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
第2步
sudo yum install gitlab-runner
官方的第3步是可以选择安装版本(可以跳过此步骤)
其他注意: 修改用户为root
vi /etc/systemd/system/gitlab-runner.service
# 以下内容可能不一致,关键是把"gitlab-runner" 改为 "root"
ExecStart=/usr/lib/gitlab-runner/gitlab-runner "run" "--working-directory" "/home/gitlab-runner" "--config" "/etc/gitlab-runner/config.toml" "--service" "gitlab-runner" "--syslog" "--user" "gitlab-runner"
改为:
ExecStart=/usr/lib/gitlab-runner/gitlab-runner "run" "--working-directory" "/data/gitlab-runner" "--config" "/etc/gitlab-runner/config.toml" "--service" "gitlab-runner" "--syslog" "--user" "root"
第4步
注册Runner
sudo gitlab-runner register
1.进入你gitlab的项目点击设置=>ci/cd=>展开Runner
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
填写上图的
http://<服务器地址或域名>/
Please enter the gitlab-ci token for this runner
这里填写上图的注册令牌
Please enter the gitlab-ci description for this runner
这里填你这个runner的描述 设置里可以改
Please enter the gitlab-ci tags for this runner (comma separated):
这里填你这个runner的标签 设置里可以改
这里写docker 记得启动docker(不知道怎么装Docker的往下拉)
Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
docker
选docker镜像版本为alpine:latest
Please enter the Docker image (eg. ruby:2.1):
alpine:latest
注册完成后刷新刚刚那个页面 会显示一个小绿点 就表示成功了
二.配置.gitlab-ci.yml
在项目的根目录添加.gitlab-ci.yml文件
# 使用alpine镜像,该镜像很少,只有几兆,如果需要运行npm命令,可以换成node:alpine
image: alpine
stages:
- deploy
before_script:
# 使用alpine国内镜像,加速下载
- sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
# 预先装 ssh-agent
- 'which ssh-agent || ( apk update && apk add openssh-client)'
# 启动服务
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
# 配置较高权限
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
release:
stage: deploy
script:
# 连接远程服务器并执行拉取代码的命令
- ssh root@$DEPLOY_SERVER "cd /root/test && touch test123.txt"
only:
- master
tags:
# 这里填写你创建的runner名字
- tag
environment:
name: production
url: http://$DEPLOY_SERVER
填写gitlab安全变量
一.创建ssh私钥
1.首先登入一台linux服务器,此台做为母机(即登入其他linux系统用这台做为入口),在这里就是gitlab所在的服务器,执行一行命令生成key文件
ssh-keygen -t rsa
在母机上,进入/root/.ssh目录,找到id_rsa该文件,这个文件就是刚才执行ssh-keygen所生成的私钥key文件
cd /root/.ssh
cat id_rsa
把私钥的全部内容复制到SSH_PRIVATE_KEY
二.DEPLOY_SERVER填写你要部署的远程主机地址,也可以是本机地址
第三步,安装Docker
卸载旧版本(没有则跳转下一步)
sudo yum remove docker docker-common container-selinux docker-selinux docker-engine docker-engine-selinux
安装依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
安装官方库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
更新仓库源
sudo yum makecache fast
从仓库安装Docker-CE
sudo yum install docker-ce
配置加速器
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
最终效果
每当项目发布到master分支,就会自动执行gitlab runner
常见问题
1. gitlab-runner一直处于pending状态原因分析
重启runner
gitlab-ci-multi-runner restart