先来看一下这张图:
传统的热部署是途中虚线所指,通过本地执行mvn tomcat:deploy 来讲项目部署到Server1上,实线所指是借助GitLab的CI来部署,比较起来感觉没什么两样,GitLab在这里除了作为一个代码托管平台之外,还担当着自动执行预编写脚本的功能(下面有介绍)。
这里需要两台Server,我用两个虚拟机来代替。
安装GitLabRunner
可以再任意一台server安装
1
2
3
4
|
## 添加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 会有命令帮助提示,如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
[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 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</ayufan @ayufan .eu> |
注册Runner
Runner的成功安装预示着我们现在拥有了一台发动机,下面要将“发动机”装在“机器”(GitLab)上。
执行gitlab-ci-multi-runner register 开始注册
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
[root @localhost ~]# gitlab-ci-multi-runner register Running in system-mode. ## gitlab服务器的域名 Please enter the gitlab-ci coordinator URL (e.g. https: //gitlab.com/): https: //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的页面会多出一个
添加项目
点击Edit进入详细页面
我们要让“发动机”干活,就选中项目后面的enable,让项目的CI在这个Runner运行。
编写CI脚本
我们要在根目录下添加一个文件.gitlab-ci.yml ,鬼知道怎么会是酱紫的文件名。
1
2
|
build: script: "pwd && mvn tomcat:deploy" |
这里写的比较简单,直接热部署。根据项目需要,我们可以写更复杂的脚本,比如自动将打包的项目复制到指定位置,然后解压啦、配置服务器相关环境啦,等等等,这些统统交给CI来做~,是不是很方便啊!
项目提交上去后自动会跑CI脚本。又执行的记录和详细信息
可能会遇到的问题
安装Runner的服务器要安装Maven
maven安装。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
下载maven文件,官网下载对应版本。https: //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" |