Gitlab 配置 CI/CD

# Gitlab 配置 CI/CD

# 本次安装环境

系统:CentOS Linux release 7.5.1804 (Core)

# 新建.gitlab-ci.yml文件

# This file is a template, and might need editing before it works on your project.
# Official framework image. Look for the different tagged releases at:
# https://hub.docker.com/r/library/node/tags/
# image: node:12.16.2

# Pick zero or more services to be used on all builds.
# Only needed when using a docker container to run your tests in.
# Check out: http://docs.gitlab.com/ce/ci/docker/using_docker_images.html#what-is-a-service
# services:
#   - mysql:latest
#   - redis:latest
#   - postgres:latest

# This folder is cached between builds
# http://docs.gitlab.com/ce/ci/yaml/README.html#cache
# cache:
#   paths:
#   - node_modules/

test_dev:
  script:
   - npm install
   - pm2 restart test
#  tags:  # 如果runner配置了tags并且锁定 此项需配置
#   - xiaoc
#  only:
#   - master # 指定触发分支

将文件上传到gitlab仓库根目录下即可

# 添加runner

1、添加GitLab的官方仓库:

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash

2、安装最新版本的GitLab Runner

sudo yum install gitlab-runner

3、注册gitlab-runner

# 向GitLab-CI注册一个Runner需要两样东西:GitLab-CI的url和注册token。
gitlab-ci-multi-runner register

需要按照步骤输入:

1、输入gitlab的服务URL,获取方式参考下图
2、输入gitlab-ci的Toekn,获取方式参考下图
3、关于集成服务中对于这个runner的描述
  给这个gitlab-runner输入一个标记,这个tag非常重要,在后续的使用过程中需要使用这个tag来指定gitlab-runner
4、是否运行在没有tag的build上面。在配置gitlab-ci的时候,会有很多job,每个job可以通过tags属性来选择runner。这里为true表示如果job没有配置tags,也执行
5、是否锁定runner到当前项目
5、选择执行器,gitlab-runner实现了很多执行器,可用在不同场景中运行构建,详情可见GitLab Runner Executors,这里选用Shell模式

# 其中,token是为了确定你这个Runner是所有工程都能够使用的Shared Runner还是具体某一个工程才能使用的Specific Runner。

url和token获取如下:

runner

4、 给runner用户授权

# 当gitlab-runner安装完成后linux中会添加一个gitlab-runner用户
# 为了防止gitlab-runner运行时无权限的问题,可以直接先授权

# 第一种方法
# 将gitlab-runner用户添加到root组中
gpasswd -a gitlab-runner root

# 配置需要操作目录的权限,比如你的 runner 要在 /home/gitlab-runner 目录下操作
chmod 775 /home/gitlab-runner


# 第二种方法
# 卸载runner配置
sudo gitlab-runner uninstall

# 以root用户重装runner配置,--user 要配置的用户
gitlab-runner install --working-directory /home/gitlab-runner --user root

# 重启
sudo service gitlab-runner restart

# 查看当前runner用户
ps aux|grep gitlab-runner

gitlab-runner 配置完成

# 测试提交没问题就完成了

# 其他命令

# 查看runner注册信息
gitlab-ci-multi-runner list

# 删除注册信息
gitlab-ci-multi-runner unregister --name "名称"

# 由于我们的 shell 脚本中有执行 git pull 的命令,我们直接设置以 ssh 方式拉取代码:
# 切换到gitlab-runner用户
su gitlab-runner

# 生成git密钥
ssh-keygen -t rsa -C "你在 GitLab 上的邮箱地址"
cd ~
cd .ssh
cat id_rsa.pub

# 复制密钥到gitlab的 个人资料设置 -> SSH密钥
# 将密钥添加到gitlab中,即可在shell中使用ssh链接拉取gitlab代码

# 常见问题

# 执行脚本出现 Permission denied 错误
# 以登录管理员账号 执行
sudo chmod -R 777  /工作目录

# sudo:是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具。
# -R:是指几连医用到目录里所有子目录和文件;
# 777:是指所有用户都拥有的最高权限。