使用Gitlab-Runner持续集成代码

前言

前面我们已经讲了如何搭建Gitlab-Runner持续集成平台.
传送门: 使用Docker 搭建Gitlab-Runner持续集成平台
本文以微服务配置项目itoken-config为例子, 介绍如何在代码中使用Gitlab-Runner进行代码的持续集成.

1. 在代码根目录itoken-config下创建.gitlab-ci.yml

stages:
  - package
  - push
  - run
  - clean

package:
  stage: package
  script:
  - /usr/local/maven/apache-maven-3.5.3/bin/mvn clean package
  - cp target/itoken-eureka-1.0.0-SNAPSHOT.jar docker
  - cd docker
  - docker build -t 192.168.229.130:5000/itoken-eureka .

push:
  stage: push
  script:
  - docker push 192.168.229.130:5000/itoken-eureka

run:
  stage: run
  script:
  - cd docker/config
  - docker-compose down
  - docker-compose up -d

clean:
  stage: clean
  script:
  - docker rmi $(docker images -q -f dangling=true)

package: 打包项目, 代码push后会出发Runner平台拉取代码,之后对package对代码进行打包,和构建镜像192.168.229.130:5000/itoken-eureka
push: 推送镜像, 把上一步构建好的镜像192.168.229.130:5000/itoken-eureka推送带Registry镜像私服, 192.168.229.130为笔者搭建的本地镜像私服地址.
run: 运行镜像,会触发docker-compose命令运行itoken-config/docker目录下的docker-compose.yml.
clean: 清除, 删除持续集成过程中产生的虚悬镜像.

2. 在itoken-config/docker目录下创建Dockerfile

.gitlab-ci.yml- package构建镜像时需要的文件Dockerfile

FROM openjdk:8-jre

MAINTAINER Lusifer <topsale@vip.qq.com>

ENV APP_VERSION 1.0.0-SNAPSHOT

RUN mkdir /app

COPY itoken-config-$APP_VERSION.jar /app/app.jar
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod"]

EXPOSE 8888

如果该服务需要等待某个服务启动完成后再启动, 可以参考一下这个Dockerfile

FROM openjdk:8-jre

MAINTAINER Lusifer <topsale@vip.qq.com>

ENV APP_VERSION 1.0.0-SNAPSHOT
ENV DOCKERIZE_VERSION v0.6.1
# RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
# dockerize使服务等待其他服务启动完成后再启动,下载时间太长,使用自己的cdn代替网络地址
RUN wget http://192.168.229.133:81/dockerize-linux-amd64-v0.6.1.tar.gz  \
    && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
    && rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz

RUN mkdir /app
COPY itoken-eureka-$APP_VERSION.jar /app/app.jar
# dockerize等待http://192.168.229.133:8888/itoken-eureka/prod/master正常返回后再启动
ENTRYPOINT ["dockerize", "-timeout", "5m", "-wait", "http://192.168.229.133:8888/itoken-eureka/prod/master", "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod"]

EXPOSE 8761

其中需要下载dockerize插件,由于每次下载都耗时过长, 所以笔者把该插件部署到自己的伪CDN服务器上,这样就可以每次秒下载了.
传送门: Docker Nginx搭建伪CDN服务器

2. 在itoken-config/docker/config目录下创建docker-compose.yml

.gitlab-ci.yml- run运行镜像时需要的文件docker-compose.yml
因为docker-compose运行时会默认以文件所在的文件夹名称为项目名称,所以docker-compose.yml所在的文件夹名称要和其他项目区分开,以免在downup的时候和其他项目有相关影响

version: '3.1'
services:
  itoken-config:
    restart: always
    image: 192.168.229.130:5000/itoken-config
    container_name: itoken-config
    ports:
      - 8888:8888
    networks:
    - config_network

networks:
  config_network:

3. push代码后,查看对应的Gitlab仓库的CI/CD

产生作业并完成,则持续集成代码部分完成.
接着就可以写业务代码了, 每次push都会马上触发持续集成,也可以在注册Runner指定触发持续集成的comment, 例如commentdeploy才触发持续集成.

参考文献: 千锋教育-李卫民 使用 GitLab 持续集成

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