gitlab-runner 安装

设置安装目录可执行

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

  1. - 安装成功
  2. ```shell
  3. # 执行安装成功检查 gitlab-runner -v
  4. [root@no ~]# gitlab-runner -v
  5. Version: 13.3.1
  6. Git revision: 738bbe5a
  7. Git branch: 13-3-stable
  8. GO version: go1.13.8
  9. Built: 2020-08-25T12:29:06+0000
  10. OS/Arch: linux/amd64

gitlab-runner 注册

  • 准备Gitlab仓库找到需要注册的URL和Token
  1. XXX项目 ---》 左边栏找到 ---》Settings ---》CI/CD ---》Runners 展开

Gitlab Runner 前端自动化部署 - 图1

  • 在shell 中开始注册
  1. [root@localhost ~]# gitlab-runner register
  2. Running in system-mode.
  3. # 引导会让你输入gitlab的url,输入自己的url,例如http://gitlab.example.com/
  4. Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
  5. http://xxx.xxx.xxx:xxx/
  6. # 引导会让你输入token,去相应的项目下找到token,例如xrjc3tWcdQpLcEwoYzkU
  7. Please enter the gitlab-ci token for this runner:
  8. xrjc3tWcdQpLcEwoYzkU
  9. # 输入描述
  10. Please enter the gitlab-ci description for this runner:
  11. [localhost.localdomain]: 测试CI部署
  12. # 引导会让你输入tag,一个项目可能有多个runner,是根据tag来区别runner的,输入若干个就好了,比如web,hook,deploy,develop(配置.gitlab-ci.yml会用到)
  13. Please enter the gitlab-ci tags for this runner (comma separated):
  14. test-ci
  15. # 引导会让你输入executor,这个是要用什么方式来执行脚本,图方便输入shell就好了
  16. Please enter the executor: shell, ssh, docker+machine, docker, docker-ssh, parallels, virtualbox, docker-ssh+machine, kubernetes:
  17. shell
  18. 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会出现你刚才注册的任务,默认前边是灰色的需要激活一下
  • 任务激活
    1. # 激活任务,前边显示为绿色
    2. gitlab-runner verify

gitlab-runner补充说明

  1. # 启动
  2. sudo gitlab-runner start
  3. # 查看状态
  4. sudo gitlab-runner status
  5. # 重启
  6. sudo gitlab-runner restart
  7. # 停止
  8. sudo gitlab-runner stop
  9. # 通过name 取消注册
  10. gitlab-runner unregister --name xxx(develop)
  11. # 删除所有注册runner
  12. gitlab-runner unregister --all-runners

创建 .gitlab-ci.yml文件

  1. # 项目根目录中添加 .gitlab-ci.yml
  2. # 参照如下
  3. stages: # 分段
  4. - install
  5. - build
  6. - deploy
  7. cache: # 缓存
  8. paths:
  9. - node_modules/
  10. - dist/
  11. # 安装构建依赖
  12. install-job:
  13. tags:
  14. - test-ci # 这个就是刚才上一步的tags,要对应上
  15. stage: install
  16. only:
  17. # - test-ci # 按照对应的分支进行构建
  18. - schedules # 每日构建触发
  19. script:
  20. - echo '安装构建依赖阶段'
  21. - pwd # 查看一下现在的目录位置
  22. - npm install --unsafe-perm # 下载依赖 --unsafe-perm 如果不加这个的话下载 vue-cli-service 包失败
  23. # 打包新文件
  24. build-job:
  25. tags:
  26. - test-ci
  27. stage: build
  28. only:
  29. # - test-ci
  30. - schedules # 每日构建触发
  31. script:
  32. - echo '打包新文件阶段'
  33. - pwd # 查看当前目录
  34. - dir # 查看所有文件
  35. - rm -rf ./dist # linux 删除当前文件夹下的 dist 文件夹
  36. - npm run build
  37. - dir # 打包完成,再次查看所有文件
  38. - pwd # 查看当前目录
  39. - ls -a
  40. # 将打包好的文件拷贝到对应的部署文件
  41. deploy-job:
  42. tags:
  43. - test-ci
  44. stage: deploy
  45. only:
  46. # - test-ci
  47. - schedules # 每日构建触发
  48. script:
  49. - echo 'deploy 登录项目部署服务器,移除旧版本项目文件,最后将打包好的文件拷贝过去'
  50. - dir
  51. - pwd
  52. - \cp -rf $(pwd)/dist/* /usr/local/iflymrqc/test-ci # 将dist文件拷贝到/usr/local/iflymrqc/test-ci文件夹下(属于部署和gitlab-runner在一台服务器上)
  53. # - 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 服务管理

    1. 重新启动crond服务
    2. [root@hadoop101 ~]# service crond restart
  • crontab 定时任务设置

    • 基本语法

      1. 基本语法
      2. crontab [选项]
      3. 选项说明
      4. -e 编辑crontab定时任务
      5. -l 查询crontab任务
      6. -r 删除当前用户所有的crontab任务
    • 参数说明 ```shell [root@hadoop101 ~]# crontab -e

(1)进入crontab编辑界面。会打开vim编辑你的工作。

  1. * * * * * 执行的任务
  2. 项目 含义 范围
  3. 第一个“*” 一小时当中的第几分钟 0-59
  4. 第二个“*” 一天当中的第几小时 0-23
  5. 第三个“*” 一个月当中的第几天 1-31
  6. 第四个“*” 一年当中的第几月 1-12
  7. 第五个“*” 一周当中的星期几 0-707都代表星期日)

(2)特殊符号 特殊符号 含义

  1. * 代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思。
  2. 代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表在每天的80分,120分,160分都执行一次命令
  3. - 代表连续的时间范围。比如“0 5 * * 1-6命令”,代表在周一到周六的凌晨50分执行命令
  4. */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. - 案例实操

每隔1分钟,向/root/bailongma.txt文件中添加一个11的数字 /1 * /bin/echo ”11” >> /root/bailongma.txt ```

参考文档