参考:

https://www.bilibili.com/video/BV1sK4y1s7Cj?p=20

承接上文: docker gitlab,gitlab runner 简单搭建和测试

上文参考:

gitlab搭建参考:

https://www.lixian.fun/3812.html

https://www.bilibili.com/video/BV1sK4y1s7Cj?p=19

gitlab runner搭建参考:

https://www.jianshu.com/p/5810760049ac

在原有项目中,增加docker文件夹,里面写入Dockerfile

# Dockerfile
FROM daocloud.io/library/tomcat:8.5.15-jre8
COPY testci.war /usr/local/tomcat/webapps

在根目录下增加docker-compose.yml

# docker-compose.yml
version: "3.1"
services:
  testci:
    build: docker
    restart: always
    container_name: testci
    ports:
      - 8080:8080

修改.gitlab-ci.yml

# ci.yml
stages:
  - test

test:
  stage: test
  script:
    - echo first test ci
    - /usr/local/maven/apache-maven-3.6.3/bin/mvn package
    - cp target/testci-1.0-SNAPSHOT.war docker/testci.war
    - docker-compose down
    - docker-compose up -d --build
    - docker rmi $(docker images -qf dangling=true)

此时,这个runner做的事情如下:

  1. echo first test ci
  2. 使用maven打包项目
  3. 将target文件夹下的war包放入docker文件夹下,作为testci.war
  4. 关闭一下现在正在运行的docker
  5. 读取docker-compose.yml,build新的docker,实际上build的是docker目录下的Dockerfile
  6. 删除名称为null的docker images
  7. 其中,第5步这里构建的docker,是先下载tomcat,然后把testci.war放入tomcat中,并且映射8080端口到runner,由于之前runner开启了docker的权限和端口的权限,能够直接开放到8080端口。