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获取如下:
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:是指所有用户都拥有的最高权限。