Gitlab-Runner自动构建服务器搭建2

注册Runner

上一节我们创建了自己的gitlab-runner镜像,并使用docker-compose up -d --build命令运行了一个名为gitlab-runner-compose的容器;

1、执行register命令注册runner;

docker exec -it gitlab-runner-compose gitlab-runner-andy register

2、输入你自己项目仓库所在gitlab实例的URL:

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
https://gitlab.com

3、输入用于注册Runner的token,从gitlab网站中获得:

Enter the token you obtained to register the Runner:
*********

4、输入Runner的描述信息,之后也可以在gitlab的网站中修改它:

Please enter the gitlab-ci description for this runner
[hostname] nodejs-runner

5、输入【与Runner关联的标签】, 之后也可以在gitlab的网站中修改:

Please enter the gitlab-ci tags for this runner (comma separated):
webapi-tag,another-tag

6、选择 runner 执行器,这里选择的是 shell

Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
shell

备注:

上述2、3中的URL、TOKEN获取——项目/Settings/CI_CD/Runners

编写.gitlab-ci.yml

在项目的根目录编写.gitlab-ci.yml文件:

stages:
- pre_build
- build
- deploy before_script:
- echo "before_script started." - docker login --username=${docker_username} --password=${docker_pwd} registry.cn-hangzhou.aliyuncs.com - echo "end before_script."
# This folder is cached between builds
# http://docs.gitlab.com/ce/ci/yaml/README.html#cache
cache:
paths:
- node_modules/
- dist/ pre_build:
stage: pre_build
script:
- echo "start pre_build." - npm install
- CI=false npm run build - echo "end pre_build."
only:
- master tags:
- webapi-tag build:
stage: build
script:
- echo "start build." - docker build -t registry.cn-hangzhou.aliyuncs.com/***/<image>:$CI_COMMIT_SHORT_SHA .
- docker push registry.cn-hangzhou.aliyuncs.com/***/<image>:$CI_COMMIT_SHORT_SHA - echo "end build."
only:
- master
tags:
- webapi-tag deploy_job:
stage: deploy
script:
- echo "start deploy." - docker pull registry.cn-hangzhou.aliyuncs.com/***/<image>:$CI_COMMIT_SHORT_SHA
- docker stop <container> && docker rm <container>
- docker run -id -e NODE_ENV=$NODE_ENV -e MONGODB_URI=$MONGODB_URI -e LAVKEY=$LAVKEY -e LAVSECRET=$LAVSECRET -e LAVHOST=$LAVHOST -e LAVCOUNTRY=$LAVCOUNTRY -e DISH=$DISH -e DISP=$DISP -e DISPWD=$DISPWD -p 3000:3000 --mount source=***-vol,target=/usr/src/app/logs --restart=unless-stopped --name=<container> registry.cn-hangzhou.aliyuncs.com/***/<image>:$CI_COMMIT_SHORT_SHA - echo "end deploy."
only:
- master
tags:
- webapi-tag

上面的yml文件把一次 Pipeline 分成了三个阶段:

安装依赖、编译(pre_build):npm install、npm run build 构建docker镜像(build):docker build ……、docker push …… 部署到服务器(deploy_job):docker pull …… 、docker run ……

stages:定义构建阶段,这里定义了三个阶段,分别对应每个阶段的stage属性; script:需要执行的 shell 脚本; only:only 参数中只有master,意思是只有master分支有提交的时候才会触发相关的 Jobs; tags:与注册 Runner 时输入的 tag进行匹配。

测试集成效果:

所有操作完成后push代码到仓库的master分支,查看结果:

passed表示所有stage执行成功。

failed表示失败,进入Josbs可以查看log进行排错:

最新文章

  1. C# DBHelper 第二版
  2. java是值传递还是引用传递
  3. java回调初步学习
  4. [stm32][ucos] 1、基于ucos操作系统的LED闪烁、串口通信简单例程
  5. jQuery Mobile笔记
  6. python基本数据结构-集合-集合运算
  7. Mysql密码恢复
  8. rsync常用命令及格式
  9. linux gpg 使用笔记
  10. egret命令行编译项目时 版本不对应的问题
  11. multimap 和priority_queue详解
  12. springboot+mybatis+dubbo+aop日志第一篇
  13. SQLServer之修改索引
  14. 实验十一 团队项目设计完善&amp;编码测试
  15. html5 知识点简单总结03
  16. 测试python最大递归层次
  17. SSM框架的搭建和测试(Spring+Spring MVC+MyBatis)
  18. 机器学习模型从windows下 spring上传到预发布会导致模型不可加载
  19. Map 嵌套存储Map
  20. input实现图片或视频上传(样式+代码)

热门文章

  1. flask下直接展示mysql数据库 字段
  2. node学习第一天
  3. Git的忽略文件
  4. js判断字符串中是否包含特殊字符、中文
  5. Python基础教程(第3版)PDF高清完整版免费下载|百度云盘
  6. R语言基本绘图-plot参数:标题,坐标轴和颜色
  7. 修改git上传代码的作者姓名
  8. PHP PDO连接
  9. CF EC 87 div2 1354 C2 Not So Simple Polygon Embedding 计算几何 结论
  10. QDC day4