gitlab-ci 自动化部署vue

1,736 阅读5分钟

第一步,在初始化环境的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

参考文章

1. centos7下gitlab汉化安装部署

2. gitlab-ci 自动化部署vue(详细步骤分解)

3. 如何通过linux ssh远程linux不用输入密码登入