Gitlab-CI/CD 2
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的更多相关文章
- [转]GitLab Continuous Integration (GitLab CI/CD)
本文转自:https://docs.gitlab.com/ee/ci/README.html GitLab Continuous Integration (GitLab CI/CD) The bene ...
- 使用 Gitlab CI/CD 实现自动化发布站点到 IIS
说明 这里先介绍下两个东西 CI/CD.GitLab Runner,当然在此之前你需要对 git 有所了解,关于 git 这里不做说明,可以自行百度. 首先介绍 CI/CD :随着我们开发方式的转变, ...
- 前端初探 Gitlab CI/CD
前言 纵观人类历史的发展以及三次工业革命,你会发现利用机器来替代部分人力劳动,将重复的工作自动化从而解放生产力都是发展的必然趋势,在软件工程领域也不例外,其中 CI/CD 就是其中一项,那么什么是 C ...
- .Net Core自动化部署系列(三):使用GitLab CI/CD 自动部署Api到Docker
之前写过使用Jenkins实现自动化部署,最近正好没事研究了下GitLab的自动化部署,顺便记录一下. 使用GitLab部署我们需要准备两件事,第一个起码你得有个GitLab,自己搭建或者使用官方的都 ...
- GitLab CI/CD持续集成设置
GitLab CI/CD持续设置 官方文档地址(https://docs.gitlab.com/ee/ci/README.html) GitLab CI.CD功能非常完善,只需要简单几步,就可以完成项 ...
- Gitlab CI/CD
Gitlab CI/CD 前言 纵观人类历史的发展以及三次工业革命,你会发现利用机器来替代部分人力劳动,将重复的工作自动化从而解放生产力都是发展的必然趋势,在软件工程领域也不例外,其中 CI/CD 就 ...
- GitLab CI/CD的官译【原】
CI / CD方法简介 软件开发的持续集成基于自动执行脚本,以最大限度地减少在开发应用程序时引入错误的可能性.从新代码的开发到部署,它们需要较少的人为干预甚至根本不需要干预. 它涉及在每次小迭代中不断 ...
- .NetCore 配合 Gitlab CI&CD 实践 - 开篇
引言 这是一个系列的文章,讲述的是一个中小型开发团队如何从零开始使用搭建基建 GitLab 代码托管平台,以及使用 GitLab Runner 实现 CI/CD 的故事.本系列通过部署一个完整的 .n ...
- .NetCore 配合 Gitlab CI&CD 实践 - 单体项目
前言 上一篇博文 .NetCore 配合 Gitlab CI&CD 实践 - 开篇,主要简单的介绍了一下 GitLab CI 的持续集成以及持续部署,这篇将通过 GitLab CI 发布一个 ...
- GitLab CI/CD 配置
GitLab CI/CD 配置 概念 持续集成的相关概念,可以看这篇文章 持续集成是什么? - 阮一峰的网络日志 操作示例 创建测试项目 sample-web,然后打开项目的 Runners 配置 找 ...
随机推荐
- Java MD5获取
MD5算法具有以下特点: 1.压缩性:任意长度的数据,算出的MD5值长度都是固定的. 2.容易计算:从原数据计算出MD5值很容易. 3.抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD ...
- python学习笔记1 -- 面向对象编程类和实例
由于之前有一定基础,所以python中的类的概接受的比较快,与其他语言一样, python也是通过类来进行事务的抽象,一切皆对象,要不然怎么说程序员不缺对象呢. 言归正传,python中类的声明是cl ...
- PHP move_uploaded_file() 函数
定义和用法 move_uploaded_file() 函数把上传的文件移动到新位置. 如果成功该函数返回 TRUE,如果失败则返回 FALSE. 语法 move_uploaded_file(file, ...
- PHP xml_set_external_entity_ref_handler() 函数
定义和用法 xml_set_external_entity_ref_handler() 函数规定当解析器在 XML 文档中找到外部实体时被调用的函数. 如果成功,该函数则返回 TRUE.如果失败,则返 ...
- PHP stripos() 函数
实例 查找 "php" 在字符串中第一次出现的位置: <?php高佣联盟 www.cgewang.comecho stripos("I love php, I lo ...
- PDOStatement::errorInfo
PDOStatement::errorInfo — 获取跟上一次语句句柄操作相关的扩展错误信息(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0) 说明 语法 array ...
- java -jar .jar中没有主清单属性
pom里加上 <build> <plugins> <plugin> <groupId>org.springframework.boot</grou ...
- 动态修改HttpServletRequest的Post请求参数
需求场景: 公司对APP调用的后台接口有个公用格式如下,外层包含了一些设备.版本.签名信息,主要的业务参数是在body里,外层信息都是在网关解决,验证签名后,在转发body到后台服务. { " ...
- 符合AUTOSAR(AP&CP)的嵌入式系统和软件设计工具
AUTOSAR Builder功能介绍 AUTOSAR Builder 是达索旗下一种基于 Eclipse 的开放性.可扩展工具套件,用于设计和开发符合 AUTOSAR 标准的系统和软件.最新版本20 ...
- odoo13之文件预览widget/模块
本文示例代码可查看github仓库:odoo13_file_preview 文件预览效果图展示 效果描述: 1.当点击图片或者文件时展开图片. 2.当点击关闭按钮时关闭图片预览. 3.当点击下载按钮时 ...