Maven系列(六)配合GitLab持续集成(CI)

前言

想要完成接下来的操作,你要做的准备工作有以下几点:

如果你没有接触过Maven,没关系,看看上面的五点,相信会让你对Maven有一个稍微深入的了解,并会让你迅速掌握其高大上的用法。

本节所需

先来看一下这张图:

传统与CI

传统的热部署是图中虚线所指,通过本地执行mvn tomcat:deploy 来将项目部署到Server1上,实线所指是借助GitLab的CI来部署,比较起来感觉没什么两样,但是GitLab在这里除了作为一个代码托管平台之外,还担当着自动执行预编写脚本的功能(下面有介绍)。
这里需要两台Server,我用两个虚拟机来代替。

安装GitLabRunner

可以再任意一台server安装

## 添加GitLab官方源
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
## 安装
sudo yum install gitlab-ci-multi-runner

这里要在管理员的权限下执行~,过程可能有点慢。
安装完毕后,执行gitlab-ci-multi-runner 会有命令帮助提示,如下:

[root@localhost ~]# gitlab-ci-multi-runner
NAME:
   gitlab-ci-multi-runner - a GitLab Runner

USAGE:
   gitlab-ci-multi-runner [global options] command [command options] [arguments...]
   
VERSION:
   1.8.1 (a2efdd4)
   
AUTHOR(S):
   Kamil Trzciński <ayufan@ayufan.eu> 
   
COMMANDS:
   exec                 execute a build locally
   list                 List all configured runners
   run                  run multi runner service
   register             register a new runner
   install              install service
   uninstall            uninstall service
   start                start service
   stop                 stop service
   restart              restart service
   status               get status of a service
   run-single           start single runner
   unregister           unregister specific runner
   verify               verify all registered runners
   artifacts-downloader download and extract build artifacts (internal)
   artifacts-uploader   create and upload build artifacts (internal)
   cache-archiver       create and upload cache artifacts (internal)
   cache-extractor      download and extract cache artifacts (internal)
   help, h              Shows a list of commands or help for one command
   
GLOBAL OPTIONS:
   --debug                      debug mode [$DEBUG]
   --log-level, -l "info"       Log level (options: debug, info, warn, error, fatal, panic)
   --cpuprofile                 write cpu profile to file [$CPU_PROFILE]
   --help, -h                   show help
   --version, -v                print the version

注册Runner

Runner的成功安装预示着我们现在拥有了一台发动机,下面要将“发动机”装在“机器”(GitLab)上。
执行gitlab-ci-multi-runner register 开始注册

[root@localhost ~]# gitlab-ci-multi-runner register
Running in system-mode.                            
 ## gitlab服务器的域名                                                  
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://192.168.92.128
## runnerToken,下面图片有位置
Please enter the gitlab-ci token for this runner:
3kjzGzK4PZDA73HYPHrP
## 描述
Please enter the gitlab-ci description for this runner:
[localhost.localdomain]: 简书·test
Please enter the gitlab-ci tags for this runner (comma separated):
js
Registering runner... succeeded                     runner=3kjzGzK4
## 执行容器,我用的shell
Please enter the executor: virtualbox, docker-ssh+machine, docker, docker-ssh, parallels, shell, ssh, docker+machine, kubernetes:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! 
新版GitLab

安装成功之后,gitlab的页面会多出一个


Runner

添加项目

点击Edit进入详细页面


详细页面

我们要让“发动机”干活,就选中项目后面的enable,让项目的CI在这个Runner运行。

编写CI脚本

我们要在项目的根目录下添加一个文件.gitlab-ci.yml ,鬼知道怎么会是酱紫的文件名。

build:
    script: "pwd && mvn tomcat:deploy"

这里写的比较简单,直接热部署。根据项目需要,我们可以写更复杂的脚本,比如自动将打包的项目复制到指定位置,然后解压啦、配置服务器相关环境啦,等等等,这些统统交给CI来做~,是不是很方便啊!

项目提交上去后自动会跑CI脚本。有执行的记录和详细信息

集成记录

可能会遇到的问题

安装Runner的服务器要安装Maven
maven安装。

下载maven文件,官网下载对应版本。http://maven.apache.org/download.cgi;
解压下载的包,将maven目录移动到自定义目录下,建议移动到/opt公共目录下,以便任何用户能够访问到该目录,例如/opt/apache-maven-3.3;
配置maven环境变量,修改/etc/profile,在文件末尾增加export M2_HOME=/opt/apache-maven-3.3(你的maven所在目录), 将该目录的bin目录添加到环境变量PATH中,export PATH=$PATH:$M2_HOME/bin;
使配置生效,source /etc/profile;

测试maven安装成功,mvn -v,出现配置信息如下则说明maven配置成功:

Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T19:57:37+08:00)
Maven home: /Users/turinblueice/Downloads/apache-maven-3.3.3
Java version: 1.8.0_40, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "10.10.5", arch: "x86_64", family: "mac"

说在后面

这篇应该是昨天晚上放在CSDN的,前前后后搞了半个多小时,后来在看其他页面的时候,一不小心给退出了,然后当时就懵逼了,真是有苦说不出!!!CSDN及时保存的功能没有简书做的好,所以我决定,以后再简书上写完,然后在复制过去~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容