环境安装
- nginx安装(这里不做讲述)
- git安装
- gitlab安装
- gitlab-runner
gitlab
gitlab external_url一定要改成网址,否则会产生unable to access 'http://gitlab-ci:token:xxxxxx@ip/xxx/citest.git错误
https://blog.csdn.net/bpqdwo/article/details/92770385
gitlab-runner安装流程
- curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
- yum install gitlab-ci-multi-runner
- gitlab-ci-multi-runner register
打开gitlab对应的项目,信息如图所示
gitlab-ci-multi-runner register是注册流程,填入信息如下:
将gitlab-runner添加root权限
这一步必须有,否则gitlab-runner无法执行接下来命令,产生403错误
root账户下操作
ps aux|grep gitlab-runner #查看当前runner用户
sudo gitlab-runner uninstall #删除gitlab-runner
gitlab-runner install --working-directory /home/gitlab-runner --user root #安装并设置--user(例如我想设置为root)
sudo service gitlab-runner restart #重启gitlab-runner
ps aux|grep gitlab-runner #再次执行会发现--user的用户名已经更换成root了
查看gitlab-runner是否执行
gitlab-ci-multi-runner verify
下面是我们关键步骤
- 一般来说,在我们启动gitlab-runner后,他会自动给咱们创建一个gitlab-runner用户
查看gitlab-runner对应的用户名,用户组
groups gitlab-runner
更新gitlab-runner密码
passwd gitlab-runner
切换gitlab-runner用户登录
su gitlab-runner
以下为两种方案
方案1(gitlab-runner账户下操作)
su gitlab-runner
cd /home/gitlab-runner
mkdir gitci
cd gitci
git clone http://用户名:密码@git http网址
cd git目录
npm install
nginx指向
/home/gitlab-runner/gitci/git
gitlab-runner生成id_rsa.pub文件
这一步作用是在克隆仓库代码时,可以免密
cd /home/gitlab-runner
ls -al # 查看是否存在.ssh目录,没有则执行ssh-keygen
ssh-keygen # 不存在执行,如果存在则跳过
cd .ssh
vim id_rsa.pub
在执行第三步,一直按enter就行
- 查看ssh秘钥:vim /home/gitlab-runner/.ssh/id_rsa.pub
方案2(root账户下操作)
查看并复制ssh密钥
- cd /root/.ssh
- ls -al
如果没有则采用以下命令生成
cd /root
ssh-keygen
- 查看ssh
cd .ssh
vim id_rsa.pub
- 将ssh秘钥复制到我们的git仓库里面
完成以后可以看到我们刚才添加的秘钥
在/gitci目录下克隆代码
mkdir /gitci
cd /gitci
git clone http://用户名:密码@git http网址
cd git目录
npm install
nginx指向
/gitci/git目录/dist
以上为两种方案,需要注意,如果是在gitlab-runner账户下,必须给他添加root权限,否则会导致权限不足问题
其他步骤(在本地代码仓库里面操作)
这里需要注意是本地代码仓库,不是你的linux服务器!!!
同时注意,必须包含 .git-ci.yml文件,否则将无法打包
- cd 本地代码仓库 cd到你的本地目录里面
- git add .
- git commit -m ‘自动化部署’
- git push -u origin master
.gitlab-ci.yml
#当Runner通过轮询检测到gitlab上有任务时,就会执行这个文件
#个人不是很熟yml的语法以及详细配置,都是找猫画虎的,求各位大神提出优化意见
# git clone https://用户名:密码@git网址
# 用户名@改成%40
stages:
- update
- build
#更新代码并且安装依赖
update:
stage: update
script:
- cd /gitci/git目录 # 这里替换成自己的git目录
- whoami
- groups gitlab-runner
- git pull
- npm install
tags: #这里的tags一定要属于注册时填的tags中,下面同理
- update
#打包
build:
stage: build
script:
- cd /gitci/git目录 # 这里替换成自己的git目录
- npm run build
tags:
- build
上面圈住的内容,对应的就是我们上面所讲的tag,在注册时每个tag都用英文逗号隔开!!!
将本地代码推送到你的线上代码仓库里面
执行完上面步骤,再去看我们的自动化流程
打包成功以后,会有一个dist目录
nginx就指向这个dist目录
上面就是所讲的gitlab ci自动化操作流程
注意点
这里我们最常遇到的就是权限问题,在各种百度操作以后,发现网上的方法包括:
设置777权限 sudo chmod -R 777 /工作目录
给我们的.git重新设置拥有者与组 chown gitlab-runner:gitlab-runner .git *
都不行,后来通过切换到gitlab-runner用户,创建ssh key,再去clone我的代码,此时代码目录拥有者默认就是gitlab-runner,解决了以上问题