【问题标题】:Pull Latest Build From Repository从存储库中提取最新版本
【发布时间】:2021-01-08 16:21:21
【问题描述】:

我有 2 个项目。让我们说项目A和项目B。 projectB 需要 projectA 构建。

所以从 projectB 有一个 shell 脚本,它从我的工件下载 projectA 的最新版本。 wget http:///projectA-234.zip。

projectA build 的名称类似于 projectA-234.zip,下一个 build 将是 projectB-235.zip 等等

所以 eaxh & 每次我需要去 projectB 并更新 projectA 构建号。即,从 wget http:///projectA-234.zip。 至 wget http:///projectA-235.zip。

我想避免这种情况,我总是想获取最新版本。我怎样才能做到这一点。 我不想更改 projectA build 的名称格式,即名称将始终为 projectA-236.zip、projectA-237.zip 等。

【问题讨论】:

  • 您是否为您的项目尝试过 Maven 或 Gradle?如果您有 Artifactory,这可能是完成此任务的最简单方法。
  • 此命令存在于 Dockerfile 中。并且 Docker 构建是使用 maven exec 插件执行的
  • 所以projectA是projectB的运行时依赖?
  • yes... 在 projectB 的 dockerfile 中,我正在执行 RUN wget http:///projectA-236.zip 数字部分会在每个最新的 projectA 构建中更新,并且项目 B 需要最新版本
  • 是否可以将 projectA 直接包含在 Maven 构建中而不是稍后在 Dockerfile 中?如果不了解两个项目之间的依赖关系,就有点难以提供帮助。

标签: java linux docker shell


【解决方案1】:

image 构建期间执行此操作的 Docker 方法是使用带有版本号的 ARG

Dockerfile:

...

ARG PROJECTA_VERSION
# if you need this later at container runtime
# ENV ENV_PROJECTA_VERSION=$PROJECTA_VERSION

RUN wget http://<artifacturl>/projectA-${PROJECTA_VERSION}.zip

...

Docker CLI

...

export PROJECTA_VERSION=236
docker build --build-arg PROJECTA_VERSION (...)

# or (without export)
docker build --build-arg PROJECTA_VERSION=236 (...)

...

https://docs.docker.com/engine/reference/commandline/build/#set-build-time-variables---build-arg

但这也许不是严格意义上的 Docker 问题,您更需要类似 latest 版本(具有相应的,始终相同的 url /releases/latest):

https://docs.github.com/en/free-pro-team@latest/github/administering-a-repository/linking-to-releases

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多