gitlab runner .gitlab-ci.yml 中的cache 和 artifacts 的使用场景。springboot案例

27 篇文章 0 订阅
4 篇文章 0 订阅

gitlab runner .gitlab-ci.yml 中的cache 和 artifacts 的区别

cache
cache 关键字使用来做缓存的。作业可以在cache 中缓存一个或者是多个文件之后可以下载,目的是使用 相同缓存的后续作业可以不用再次下载文件。所以整个cicd 过程可以执行的更快。

使用场景:主要是用来缓存 比如 java maven 项目中的依赖项。

特点:

  • cache 使用的路径只能是项目文件的相对路径。
  • 在运行下一个Job的时候,会默认把前一个Job新增的资源删除得干干静静。
  • cache 缓存生成的文件会在本地 runner 中的 /cache 目录中。不需要像 artifacts 一样将文件上传到gitlab中提供网页端下载缓存文件。

使用效果

在这里插入图片描述
cache 特别需要注意的地方
gitlab runner 有个点是需要注意的。如下图所示每个节点产生的文件都会被删除掉。
在这里插入图片描述
所以可以使用cache 来存储各个环节所产生的文件。并且只存储与runner中不会上传到gitlab 服务器,所以效率上会比artifacts 会好很多。

Artifacts

  • 主要的区别于cache可以提供网页下载我们打好的包。支持对这个包的重新部署。
  • 默认这个包的保存时间为30天。
    在这里插入图片描述

在使用中的缺点就是会将 buid 打好的包上传到 gitlab 服务,也就是说 打包生成的文件需要传输到gitlab 服务器,通常这样会照常不必要的网络开销。所以我们可以选择使用 cache 的方式来存储各个阶段产生的公共文件。

实例说明 springboot + docker 项目通过runner 发布。

1.安装runner
2. 注册到gitlab 中
3. 在项目的根目录中添加.gitlab-ci.yml 的配置文件

配置文件说明

image: docker:latest  #1
variables:  #2
  DOCKER_DRIVER: overlay2
  TAG: root/hello-spring:v0.1  # 镜像名称(没有用到)
cache:
  key: dockerlayerdemo-ci-cache
  paths:
    - .m2/repository/
    - /school-city-front-server/target/*.jar
    - /school-city-backend-server/target/*.jar
services:  #4
  - docker:dind
stages:  #5
  - package
  - deploy
maven-package:  #6
  only:
    - master
  image: maven:3.5-jdk-8-alpine
  tags:
    - school_city
  stage: package
  script:
    - mvn install package -Dmaven.test.skip=true
  cache:
    key: dockerlayerdemo-ci-cache
    paths:
      - school-city-backend-server/target/school-city-backend-server-1.0.0.jar
      - school-city-front-server/target/school-city-front-server-1.0.0.jar
#     两个阶段必须配置相同cache 才能生效。


build-master:  #8
  only:
    - master
  tags:
    - school_city
  stage: deploy
  cache:
    key: dockerlayerdemo-ci-cache
    paths:
      - .m2/repository/
      - school-city-front-server/target/*.jar
      - school-city-backend-server/target/*.jar
  script:
    - pwd
    - ssh scooolcity "
      docker cp gitlab-runner:/home/gitlab-runner/builds/yvVVvMyy/0/myschoolcity/school-city/school-city-backend-server/target/school-city-backend-server-1.0.0.jar  /app/schoolcity-gitlab/springboot/jar;
      cd /app/schoolcity-gitlab/springboot/jar  && rm -rf app.jar.bak $$ mv app.jar app.jar.bak && mv school-city-backend-server-1.0.0.jar app.jar;
      cd .. && docker build -t schoolcity .;
      docker rm -f sc || true;
      docker run -d -p 16005:8080 -v /app/schoolcity-gitlab/springboot/log:/var/logs/schoolcity -v /etc/localtime:/etc/localtime --name sc schoolcity;
      "
    - ssh schoolcity "
      docker cp gitlab-runner:/home/gitlab-runner/builds/yvVVvMyy/0/myschoolcity/school-city/school-city-front-server/target/school-city-front-server-1.0.0.jar  /app/schoolcity-gitlab/springbootfront/jar;
      cd /app/schoolcity-gitlab/springbootfront/jar  && rm -rf app.jar.bak $$ mv app.jar app.jar.bak && mv school-city-front-server-1.0.0.jar app.jar;
      cd .. && docker build -t schoolcityfront .;
      docker rm -f scft || true;
      docker run -d -p 16006:8081  -v /app/schoolcity-gitlab/springbootfront/log:/var/logs/schoolcity -v /etc/localtime:/etc/localtime --name scft schoolcityfront;
      "


目录结构说明
在这里插入图片描述

配置dockerfile

FROM java:8
VOLUME /tmp
COPY  /jar/app.jar app.jar
ENV PORT 8080
EXPOSE $PORT
ENV TZ Asia/Shanghai
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dserver.port=${PORT}","-jar","/app.jar"]
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值