gitlab ci/cd自动化部署流程

环境安装

  • 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 ci/cd自动化部署流程_第1张图片
    打开gitlab对应的项目,信息如图所示

gitlab-ci-multi-runner register是注册流程,填入信息如下:
gitlab ci/cd自动化部署流程_第2张图片
gitlab ci/cd自动化部署流程_第3张图片

将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 ci/cd自动化部署流程_第4张图片
gitlab ci/cd自动化部署流程_第5张图片

下面是我们关键步骤

  • 一般来说,在我们启动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就行
gitlab ci/cd自动化部署流程_第6张图片

  • 查看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仓库里面
    gitlab ci/cd自动化部署流程_第7张图片
    完成以后可以看到我们刚才添加的秘钥
在/gitci目录下克隆代码
mkdir /gitci 
cd /gitci
git clone http://用户名:密码@git http网址
cd git目录
npm install
nginx指向

/gitci/git目录/dist
gitlab ci/cd自动化部署流程_第8张图片
以上为两种方案,需要注意,如果是在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

gitlab ci/cd自动化部署流程_第9张图片
上面圈住的内容,对应的就是我们上面所讲的tag,在注册时每个tag都用英文逗号隔开!!!

将本地代码推送到你的线上代码仓库里面

执行完上面步骤,再去看我们的自动化流程

gitlab ci/cd自动化部署流程_第10张图片

gitlab ci/cd自动化部署流程_第11张图片
打包成功以后,会有一个dist目录
gitlab ci/cd自动化部署流程_第12张图片

nginx就指向这个dist目录

上面就是所讲的gitlab ci自动化操作流程

注意点

这里我们最常遇到的就是权限问题,在各种百度操作以后,发现网上的方法包括:

设置777权限 sudo chmod -R 777 /工作目录
给我们的.git重新设置拥有者与组 chown gitlab-runner:gitlab-runner .git *

都不行,后来通过切换到gitlab-runner用户,创建ssh key,再去clone我的代码,此时代码目录拥有者默认就是gitlab-runner,解决了以上问题

gitlab ci/cd自动化部署流程_第13张图片
参考文章:https://pibigstar.blog.csdn.net/article/details/82762413?utm_medium=distribute.pc_relevant_t0.none-task-blog-OPENSEARCH-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-OPENSEARCH-1.control

https://juejin.cn/post/6844903728546316295

你可能感兴趣的:(原生js,ci,自动化,运维)