小序
由于单位的大部分应用是有外包开发,而且不同的外包公司的开发水平良莠不齐,代码风格也是惨不忍睹,所以导致代码后期的维护,二次开发成本很高。所以我特意在今年的TP中加入了代码管理,得到前辈的支持,在此记录一下。不加特殊说明,所用的都是在GitLab9.5.2社区版(hostname:gitlab.mymay.com),Centos7(ip:148.40.190.220)。
如下图是gitlab-server激活gitlab-runner 的运行的流程图。
server-runenr
- 安装gitlab-runner
For RHEL/CentOS
1.curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
2.sudo yum install gitlab-ci-multi-runner
由于curl不能设置系统变量,所以如果有代理的话你需要手动加上,用-x标签设置代理,格式为host[:port],你需要先把这个script.rpm.sh文件download下来,然后把里面的curl全部加上代理
- 注册gitlab-runner输入如下的命令:sudo gitlab-runner register
然后根据提示输入
TIPS.png
- Enter your GitLab instance RUL
https://gitlab.mymay.com/ci
这个url来自你的gitlab service,你可以通过如下路径来查找:
在一个项目的界面:Settings->CI/CD Pipelines,找到Specific Runners
下面有url和registration token
url&token
如果你在启动Gitlab server的时候指定了Url则要填写相应的url,特别是填写的是hostname而不是ip-address,例如我这里就不能填写ip地址148.40.190.220,gitlab-runner会报错。- Enter the token you obtain to register the Runner
例如输入上图的:X5aUK34wrP-oHyhgYDbD- Enter a description for the Runner, you can change this later int GitLab's UI;
例如输入:****(后期可以在gitlab-runenr配置页面修改)- Enter the tags associated with the Runner, you can change this later in GitLab's UI
例如输入: build, deploy, test- Choose whether the Runner should pick up jobs that do not have tags, you can change this later in GitLab's UI;
默认是false,可以直接回车- Choose whether to lock the Runner to the current project, you can change this later in GitLab's UI. Useful when the Runner is specific;
默认是false,这里也可以回车Enter the runner executor;
If you chose Docker as your executor, you'll be asked for the default image to be used for project that do not define one in .gitlab-ci.yml;
这里我们选的是:docker(还可以选:Shell,
Doker-Machine,SSH,VirtualBox,Parallels,)
runner-executor- 如果上述选了docker,他会让你在选一个默认的image
我选的是maven
由于单位的需求,必须是https的,所以我在这里走了一点弯路,上图的这个是我报告的一部分,大致意思就是,如果你的gitllab-server只设置了https的话,你需要找到gitlab-server的认证文件***.crt,并且把他拷贝出来,放在gitlab-runner服务器中的gitlab-runner目录下,新建一个certs的文件夹,然后把拷贝出来的文件重名成gitlab-server的host.crt
文件。例如:我的gitlab-server的网址是gitlab.mymay.com(148.40.190.220),则文件名就是:gitlab.mymay.com.crt,还有一点就是如果你的gitlab-server设置了external_url,那么你不能使用host-ip地址
-
配置 gitlab-runner的配置文件cofig.toml
当gitlab-runner成功注册完之后,gitlab-server页面会生成runner信息你可以去查看
gtilab-runner
并且可以修改部分配置
ruuner-edi
而且在gitlab-runner根目录下的cofig.toml会生成相应的配置信息,(/etc/gitlab-runner/cofig.toml),
[[runners]]
name = "atpsystem"
url = "https://gitlab.mymay.com/ci"
token = "315af18957b84548e281c8bedd24cc"
executor = "docker"
[runners.docker]
tls_verify = false
image = "maven"
dns = ["148.40.190.1"]
dns_search = ["mymay.com"]
privileged = false
disable_cache =true
volumes = ["/opt/maven/conf:/usr/share/maven/conf"]
pull_policy = "if-not-present"
"executor":你选择的执行器,这路就是注册让输入的docker
"token":不是注册项目的token,是自己生成的,是唯一编码。
"url":注册时候填写的
"tls_verify":是否需要tls认证。如果你使用了https,却没有遵循我的第二部的tips,那么你应该是没机会到我这一步的。。。那么,你在这里需要配置true,还要配置认证文件地址。
(不是自动生成,需要手动添加)"dns"和"dns_serach":就是dns地址,服务器后缀,没有的话可以不配置
(不是自动生成,需要手动添加)"disable_cache":是否使用cache,我选的是否,因为会有maven没有下载完全的遗留文件,导致maven启动报错,还有一些未知的错误。
"volumes":就是gitlab-runner启动docker时候的附加命令,指的是文件映射,默认是/cache,我这里是禁止使用了cache,所以把配置也改了
(不是自动生成,需要手动添加)"pull_policy":我选的是只有没有image的时候采取pull image
- 安装dokcer(centos 版) 按照如下步骤
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum makecache fast
sudo yum install docker-ce
如上就是安装的过程,如果没有什么错误就可以尝试启动docker
sudo systemctl start docker
sudo docker run hello-world
当看到hello from docker的时候就说明docker已经安装成功了
docker-run- 安装docke maven,由于我们在配置的时候禁止了gitlab-runner pull image所以我们自己要安装
1,docker pull maven
不指定版本的话默认去找latest,latest不一定是最新的maven版本,latest标签是由maven发布者自定义的,可以去dockerHub去查看相应的标签含义
2,docker images
这个时候可以看到安装的maven image,这个时候mavendocker就已经安装成功。
- 配置 .gitlab-runner.yml
来看一个配置文件的片段
develop-build:
stage: build
tags: ["***"]
only: ["develop"]
except: ["master"]
script: mvn clean compile
"develop-build":这个是job name必须唯一,重名了不会报错,但是只会运行第一个job
"stage:build":表示这个job运行的stage,常用的是build,test,deploy,如果不写,默认build和test。
"tags: ["spphins"]":指定了gitlab-runner,gitlab-runner在注册时会让你填写tag,在这里只要有相同的tag就会激活相应的gitlab-runner
"only"和"except":看文档好像是非常灵活,但是我配置了几次都没有成功,开始的时候我只配置了only,但是没有用,所以不知道是不是必须要两个一起配置?
"script":执行的脚本,在gitlab-runner clone code之后就会执行,默认目录是配置文件的目录
再看一个高级一点的
variables:
GIT_SSL_NO_VERIFY: "true"
master-deployc:
stage: deploy
tags: ["***"]
script:
- mvn deploy
- mvn tomcat7:deploy -PTom1
- mvn tomcat7:deploy -PTom2
only: ["master"]
except: ["develop"]
"variables":设置在所有的job前,指定gitlab-runner在clone code前先执行的环境变量设置,由于我们必须使用https,这个环境变量是不可缺少的。
这里的script内容比较丰富:表示的是将代码打包部署到两台服务器上这里主要是使用的maven命令,要配合pom文件一起使用。
-
Pom配置信息,利用pom的prifiles标签可以灵活设置打包环境(随便找了一个图,不要介意)
pom
script 中利用maven的-P标签可以指定pofile,例如上一步骤script中的 - mvn tomcat7:deploy -PTom1这里可以改为- mvn tomcat7:deploy -Ppc1
- Push代码之后,会自动调用gitlab-runner进行相应的job,可以在项目页面:Piplines->Pipelines查看运行情况
网友评论