gitlab-runner 安装
- 以Centos7 为例,作为服务器
- 安装
```shell
我当前centos 7 为 Linux x86-64
sudo curl -L —output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
设置安装目录可执行
sudo chmod +x /usr/local/bin/gitlab-runner
直接使用 root 用户权限运行 gitlab-runner (或者其他用户,看需求)
sudo gitlab-runner install —user=root —working-directory=/home/gitlab-runner
启动
sudo gitlab-runner start sudo gitlab-runner status
如果提示命令 command not found 需要配置环境
添加软链接
ln -s -f /usr/local/bin/gitlab-runner /usr/bin/gitlab-runner
查看版本
gitlab-runner -v
- 安装成功
```shell
# 执行安装成功检查 gitlab-runner -v
[root@no ~]# gitlab-runner -v
Version: 13.3.1
Git revision: 738bbe5a
Git branch: 13-3-stable
GO version: go1.13.8
Built: 2020-08-25T12:29:06+0000
OS/Arch: linux/amd64
gitlab-runner 注册
- 准备Gitlab仓库找到需要注册的URL和Token
XXX项目 ---》 左边栏找到 ---》Settings ---》CI/CD ---》Runners 展开
- 在shell 中开始注册
[root@localhost ~]# gitlab-runner register
Running in system-mode.
# 引导会让你输入gitlab的url,输入自己的url,例如http://gitlab.example.com/
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://xxx.xxx.xxx:xxx/
# 引导会让你输入token,去相应的项目下找到token,例如xrjc3tWcdQpLcEwoYzkU
Please enter the gitlab-ci token for this runner:
xrjc3tWcdQpLcEwoYzkU
# 输入描述
Please enter the gitlab-ci description for this runner:
[localhost.localdomain]: 测试CI部署
# 引导会让你输入tag,一个项目可能有多个runner,是根据tag来区别runner的,输入若干个就好了,比如web,hook,deploy,develop(配置.gitlab-ci.yml会用到)
Please enter the gitlab-ci tags for this runner (comma separated):
test-ci
# 引导会让你输入executor,这个是要用什么方式来执行脚本,图方便输入shell就好了
Please enter the executor: shell, ssh, docker+machine, docker, docker-ssh, parallels, virtualbox, docker-ssh+machine, kubernetes:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
- 按照上述步骤成功后,上图Runners activated for this project会出现你刚才注册的任务,默认前边是灰色的需要激活一下
- 任务激活
# 激活任务,前边显示为绿色
gitlab-runner verify
gitlab-runner补充说明
# 启动
sudo gitlab-runner start
# 查看状态
sudo gitlab-runner status
# 重启
sudo gitlab-runner restart
# 停止
sudo gitlab-runner stop
# 通过name 取消注册
gitlab-runner unregister --name 、xxx(develop)
# 删除所有注册runner
gitlab-runner unregister --all-runners
创建 .gitlab-ci.yml
文件
# 项目根目录中添加 .gitlab-ci.yml
# 参照如下
stages: # 分段
- install
- build
- deploy
cache: # 缓存
paths:
- node_modules/
- dist/
# 安装构建依赖
install-job:
tags:
- test-ci # 这个就是刚才上一步的tags,要对应上
stage: install
only:
# - test-ci # 按照对应的分支进行构建
- schedules # 每日构建触发
script:
- echo '安装构建依赖阶段'
- pwd # 查看一下现在的目录位置
- npm install --unsafe-perm # 下载依赖 --unsafe-perm 如果不加这个的话下载 vue-cli-service 包失败
# 打包新文件
build-job:
tags:
- test-ci
stage: build
only:
# - test-ci
- schedules # 每日构建触发
script:
- echo '打包新文件阶段'
- pwd # 查看当前目录
- dir # 查看所有文件
- rm -rf ./dist # linux 删除当前文件夹下的 dist 文件夹
- npm run build
- dir # 打包完成,再次查看所有文件
- pwd # 查看当前目录
- ls -a
# 将打包好的文件拷贝到对应的部署文件
deploy-job:
tags:
- test-ci
stage: deploy
only:
# - test-ci
- schedules # 每日构建触发
script:
- echo 'deploy 登录项目部署服务器,移除旧版本项目文件,最后将打包好的文件拷贝过去'
- dir
- pwd
- \cp -rf $(pwd)/dist/* /usr/local/iflymrqc/test-ci # 将dist文件拷贝到/usr/local/iflymrqc/test-ci文件夹下(属于部署和gitlab-runner在一台服务器上)
# - sshpass -p $CUSTOM_PASSWORD scp -r ./dist $CUSTOM_USERNAME@$CUSTOM_IP:/usr/local/iflymrqc/test-ci # 这个是不在一起(中间的变量可以在XXX项目 ---》 左边栏找到 ---》Settings ---》CI/CD ---》Environment variables,安全考虑)
大功告成
按照上述步骤来说一般就可以实现自动化部署了,当你提交了一个commit后,查看XXX项目 ---》 左边栏找到 ---》CI/CD ---》Pipelines
会增加一条job,可以点进去看看执行进度和输出情况
定时构建任务
XXX项目 ---》 左边栏找到 ---》CI/CD ---》Schedules
中添加任务 ,使用的是crond 系统定时任务
指令了,注意选择一下时区。
crond 系统定时任务
crond 服务管理
重新启动crond服务
[root@hadoop101 ~]# service crond restart
crontab 定时任务设置
基本语法
基本语法
crontab [选项]
选项说明
-e 编辑crontab定时任务
-l 查询crontab任务
-r 删除当前用户所有的crontab任务
参数说明 ```shell [root@hadoop101 ~]# crontab -e
(1)进入crontab编辑界面。会打开vim编辑你的工作。
* * * * * 执行的任务
项目 含义 范围
第一个“*” 一小时当中的第几分钟 0-59
第二个“*” 一天当中的第几小时 0-23
第三个“*” 一个月当中的第几天 1-31
第四个“*” 一年当中的第几月 1-12
第五个“*” 一周当中的星期几 0-7(0和7都代表星期日)
(2)特殊符号 特殊符号 含义
* 代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思。
, 代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表在每天的8点0分,12点0分,16点0分都执行一次命令
- 代表连续的时间范围。比如“0 5 * * 1-6命令”,代表在周一到周六的凌晨5点0分执行命令
*/n 代表每隔多久执行一次。比如“*/10 * * * * 命令”,代表每隔10分钟就执行一遍命令
(3)特定时间执行命令 时间 含义 45 22 命令 在22点45分执行命令 0 17 1 命令 每周1 的17点0分执行命令 0 5 1,15 命令 每月1号和15号的凌晨5点0分执行命令 40 4 1-5 命令 每周一到周五的凌晨4点40分执行命令 /10 4 命令 每天的凌晨4点,每隔10分钟执行一次命令 0 0 1,15 1 命令 每月1号和15号,每周1的0点0分都会执行命令。注意:星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱。
- 案例实操
每隔1分钟,向/root/bailongma.txt文件中添加一个11的数字 /1 * /bin/echo ”11” >> /root/bailongma.txt ```