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进行排错:

Gitlab-CI/CD 2的更多相关文章

  1. [转]GitLab Continuous Integration (GitLab CI/CD)

    本文转自:https://docs.gitlab.com/ee/ci/README.html GitLab Continuous Integration (GitLab CI/CD) The bene ...

  2. 使用 Gitlab CI/CD 实现自动化发布站点到 IIS

    说明 这里先介绍下两个东西 CI/CD.GitLab Runner,当然在此之前你需要对 git 有所了解,关于 git 这里不做说明,可以自行百度. 首先介绍 CI/CD :随着我们开发方式的转变, ...

  3. 前端初探 Gitlab CI/CD

    前言 纵观人类历史的发展以及三次工业革命,你会发现利用机器来替代部分人力劳动,将重复的工作自动化从而解放生产力都是发展的必然趋势,在软件工程领域也不例外,其中 CI/CD 就是其中一项,那么什么是 C ...

  4. .Net Core自动化部署系列(三):使用GitLab CI/CD 自动部署Api到Docker

    之前写过使用Jenkins实现自动化部署,最近正好没事研究了下GitLab的自动化部署,顺便记录一下. 使用GitLab部署我们需要准备两件事,第一个起码你得有个GitLab,自己搭建或者使用官方的都 ...

  5. GitLab CI/CD持续集成设置

    GitLab CI/CD持续设置 官方文档地址(https://docs.gitlab.com/ee/ci/README.html) GitLab CI.CD功能非常完善,只需要简单几步,就可以完成项 ...

  6. Gitlab CI/CD

    Gitlab CI/CD 前言 纵观人类历史的发展以及三次工业革命,你会发现利用机器来替代部分人力劳动,将重复的工作自动化从而解放生产力都是发展的必然趋势,在软件工程领域也不例外,其中 CI/CD 就 ...

  7. GitLab CI/CD的官译【原】

    CI / CD方法简介 软件开发的持续集成基于自动执行脚本,以最大限度地减少在开发应用程序时引入错误的可能性.从新代码的开发到部署,它们需要较少的人为干预甚至根本不需要干预. 它涉及在每次小迭代中不断 ...

  8. .NetCore 配合 Gitlab CI&CD 实践 - 开篇

    引言 这是一个系列的文章,讲述的是一个中小型开发团队如何从零开始使用搭建基建 GitLab 代码托管平台,以及使用 GitLab Runner 实现 CI/CD 的故事.本系列通过部署一个完整的 .n ...

  9. .NetCore 配合 Gitlab CI&CD 实践 - 单体项目

    前言 上一篇博文 .NetCore 配合 Gitlab CI&CD 实践 - 开篇,主要简单的介绍了一下 GitLab CI 的持续集成以及持续部署,这篇将通过 GitLab CI 发布一个 ...

  10. GitLab CI/CD 配置

    GitLab CI/CD 配置 概念 持续集成的相关概念,可以看这篇文章 持续集成是什么? - 阮一峰的网络日志 操作示例 创建测试项目 sample-web,然后打开项目的 Runners 配置 找 ...

随机推荐

  1. 前端学习(八):CSS

    进击のpython ***** 前端学习--CSS 现在的互联网前端分为三层: HTML:超文本标记语言.从语义的角度描述页面结构 CSS:层叠样式表.从审美的角度负责页面样式 JS:Javascri ...

  2. ~~并发编程(十三):信号量,Event,定时器~~

    进击のpython ***** 并发编程--信号量,Event,定时器 本节需要了解的就是: 信号量,以及信号量和互斥锁的区别 了解时间和定时器,以及使用 信号量 信号量也是锁,本质没有变!但是他跟互 ...

  3. 【新生学习】第一周:深度学习及pytorch基础

    DEADLINE: 2020-07-25 22:00 写在最前面: 本课程的主要思路还是要求大家大量练习 pytorch 代码,在写代码的过程中掌握深度学习的各类算法,希望大家能够坚持练习,相信经度过 ...

  4. python基础--迭代器、生成器

    (1)迭代器 可迭代对象和迭代器的解释如下: ''' 什么是对象?Python中一切皆对象,之前我们讲过的一个变量,一个列表,一个字符串,文件句柄,函数名等等都可称作一个对象,其实一个对象就是一个实例 ...

  5. python基础--面向对象基础(类与对象、对象之间的交互和组合、面向对象的命名空间、面向对象的三大特性等)

    python基础--面向对象 (1)面向过程VS面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. ...

  6. Day01_mongoDB入门

    学于黑马和传智播客联合做的教学项目 感谢 黑马官网:http://www.itheima.com 传智播客官网:http://www.itcast.cn 微信搜索"艺术行者",关注 ...

  7. HTML - XHTML

    HTML - XHTML XHTML 是以 XML 格式编写的 HTML.高佣联盟 www.cgewang.com 什么是 XHTML? XHTML 指的是可扩展超文本标记语言 XHTML 与 HTM ...

  8. PHP localeconv() 函数

    实例 查找美国本地的数字格式化信息: <?php setlocale(LC_ALL,"US"); $locale_info = localeconv(); print_r($ ...

  9. C/C++编程笔记:C语言基础printf()和scanf()函数,大学入门知识

    在解释这两个函数之前,为了方便大家更容易理解,我们先来讲讲下面的这幅图. ​ 这个图中的例子其实很简单,我们就是把题目通过输入设备(例如键盘鼠标)传输到计算机中,然后让计算机进行运算得出结果,再然后把 ...

  10. 还分不清 Cookie、Session、Token、JWT?一篇文章讲清楚

    还分不清 Cookie.Session.Token.JWT?一篇文章讲清楚 转载来源 公众号:前端加加 作者:秋天不落叶 什么是认证(Authentication) 通俗地讲就是验证当前用户的身份,证 ...