一.安装gitlab runner
进入到服务器根目录
下载runner,根据自己对应服务器的型号自行选择下载:
# Linux x86-64
sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
# Linux x86
sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-386
# Linux arm
sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm
下载完之后,需要给gitlab-runner执行权限,
sudo chmod +x /usr/local/bin/gitlab-runner
之后创建一个gitlab-runner用户,之后使用CI/CD时,都是在这个用户下进行的。
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
创建好了用户之后,接下来安装gitlab-runner
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
安装成功以后,启动gitlab-runner
sudo gitlab-runner start
注册使用gitlab-runner
首先找到自己的gitlab项目下设置,CI/CD,Runner
可以看到如下:
URL,和注册令牌一会在注册runner的时候需要用到,
在自己的runner服务器上,输入如下命令,开始注册runner:
gitlab-runner register
上面这里,红框,填写刚刚上面看到的URL
回车后,输入URL下面的gitlab-ci token
输入完token后,回车
填写runner描述,这里自己填写
之后填写runner的tags,用于在之后CI/CD操作时标识使用哪个runner来进行流水线
之后选择需要以哪种方式运行runner,这里我选择用shell方式运行runner,大家可以自行根据自己需要选择
到此,runner就注册完毕了。可以到gitlab上看下,刚刚注册的runner是否存在
可以看到,这里就是我们刚刚注册的runner。
二,编写.gitlab-ci.yml文件
stages:
- build
variables:
DEPLOY_PATH: "部署路径"
# cache:
# paths:
# - node_modules/
build-job:
stage: build
script:
- cp -r $CI_PROJECT_DIR/* $DEPLOY_PATH
- cd $DEPLOY_PATH # 进入代码目录
#- npm install
- npm run build # 打包构建
#- cp -r $CI_PROJECT_DIR/dist/* $DEPLOY_PATH # 将打包完成的文件复制到部署路径
- sudo nginx -s reload # 重启Nginx
tags:
- ttedu_admin # gitlab-runner tag
only:
- master # 允许部署的分支
environment:
name: prod # 环境名称
配置完成后,将文件放置gitlab前端代码根目录即可
参考文档:https://blog.csdn.net/weixin_33938733/article/details/91460860
Gitlab CI permission denied:
1.添加权限。
$ groups gitlab-runner
> gitlab-runner : gitlab-runner
$ sudo usermod -a -G root gitlab-runner
$ sudo groups gitlab-runner
> gitlab-runner : gitlab-runner root
2.更改用户
https://www.cnblogs.com/bafeiyu/p/12538861.html
sudo: no tty present and no askpass program specified 解决方法
sudo: no tty present and no askpass program specified
由于帐号并没有开启免密码导致的
假设当前帐号为abc
切换到root下
1 打开sudoers
vi /etc/sudoers
2 添加免密码
abc ALL = NOPASSWD: ALL