Gitlab ci - 工件应用程序 jar 的差异

Posted

技术标签:

【中文标题】Gitlab ci - 工件应用程序 jar 的差异【英文标题】:Gitlab ci - differences in artifacts app jar 【发布时间】:2019-11-04 02:20:00 【问题描述】:

我的码头文件:

FROM openjdk:8u201-jdk-alpine3.9
ADD target/app-snapshot-0.0.1.jar .

在gitlab-ci runner中,maven构建过程中:

maven:
  image: maven:3-jdk-8
  stage: maven

    script:
        - "mvn clean package -e"
      artifacts:
        name: "app-snapshot"
        paths:
          - ./target/app-snapshot-0.0.1.jar

    build:
      stage: build
      script:
        - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
        - BUILD_IMAGE_NAME=$CI_REGISTRY_IMAGE:`echo "$CI_BUILD_REF_NAME" | tr /# _`
        - docker build --pull --force-rm=true -t "$BUILD_IMAGE_NAME" .
        - docker push "$BUILD_IMAGE_NAME"

但是,当我在提交、更改等之后使用 docker 映像时,我仍然看到第一个应用程序 .jar,没有任何更改。

我的错误在哪里?我想看看 - 在构建过程之后 - 我对工件 jar 应用程序的所有更改。

【问题讨论】:

我不明白你的所有问题,但我认为你有缓存问题。也许,(我说也许)artifacts 指令缓存了你以前的 .jar。 问题是:在构建过程之后,当我使用 docker 映像时 - 我看到了我的应用程序的第一个版本 - 没有更改、更新等。 你什么时候构建你的 docker 镜像? 在 gitlab-ci 文件中,在构建过程中。请查看我的原始帖子 - 已更新。 【参考方案1】:

我无法复制问题,但有一些方法可以“解决”:

    尝试修复缩进:
maven:
  image: maven:3-jdk-8
  stage: maven
  script:
    - "mvn clean package -e"
  artifacts:
    name: "app-snapshot"
    paths:
      - ./target/app-snapshot-0.0.1.jar
    在工件中使用模式:(当版本更改时您不需要更改代码)

.gitlab-ci.yml:

  artifacts:
    name: "app-snapshot"
    paths:
      - target/*.jar

Dockerfile:

FROM openjdk:8u201-jdk-alpine3.9
ADD target/*.jar .

    使用dependenciesdocs:

    在构建作业时,从 maven 定义依赖项:

build:
  stage: build
  script:
    - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
    - BUILD_IMAGE_NAME=$CI_REGISTRY_IMAGE:`echo "$CI_BUILD_REF_NAME" | tr /# _`
    - docker build --pull --force-rm=true -t "$BUILD_IMAGE_NAME" .
    - docker push "$BUILD_IMAGE_NAME"
  dependencies:
    - maven
    使用artifacts:expiredocs是一个好习惯

.gitlab-ci.yml:

  artifacts:
    name: "app-snapshot"
    expire_in: 15 min #Just a example
    paths:
      - target/*.jar

【讨论】:

非常感谢您的回复。它可以帮助我清除项目中的一些代码。

以上是关于Gitlab ci - 工件应用程序 jar 的差异的主要内容,如果未能解决你的问题,请参考以下文章

未找到 Gitlab ci 工件

从 gitlab-ci dir 中获取所有工件并使其成为工件

如何在 .gitlab-ci.yml 中指定通配符工件子目录?

如何创建一个工件,以便它可以在 .gitlab-ci.yml 中下载

Gitlab CI 中缓存/工件的正确用法是啥?

在gitlab-ci.yml上动态设置工件路径/文件夹结构