如何在Dockerfile中使用Azure变量$(build.buildnumber)-$(build.sourcebr



我正在编写一个 Azure 管道,它将构建一个 jar 和一个 docker 映像。大部分工作正常,但我无法替换 Dockerfile 中的$version变量。我将工件版本声明为 $(build.buildnumber(-$(build.sourcebranchname(,如下所示。我不能像每次构建一样对其进行硬编码,builnumber 会发生变化。 如何在 Dcokerfile 中使用 $version 或 $(build.buildnumber(-$(build.sourcebranchname(,我将 jar 复制到容器文件夹。

我生成的工件名称如下所示someservice-api-$(build.buildnumber)-$(build.sourcebranchname).jar

Azure Pipeline:

pool:
vmImage: 'windows-latest'
steps:
- task: DownloadSecureFile@1
displayName: 'Download gradle.properties secure file'
inputs:
secureFile: gradle.properties
- powershell: |
New-Item -Type Directory -Force "${HOME}/.gradle"
$version = "$(build.buildnumber)-$(build.sourcebranchname)"
Add-Content "$(Agent.WorkFolder)/_temp/gradle.properties" "`nartifactVersion=$version"
Add-Content "$(Agent.WorkFolder)/_temp/gradle.properties" "`nartifactDir=$path"
Copy-Item -Force "$(Agent.WorkFolder)/_temp/gradle.properties" "${HOME}/.gradle/gradle.properties"

其他任务,如 gradlew 构建、复制、发布到暂存目录

Dockerfile:

FROM openjdk:8
WORKDIR /usr/src/webapp/clientscore
COPY ./build/libs/someservice-api-$version.jar api.jar
CMD ["java", "-jar", "api.jar"]

我已经尝试过以下

COPY ./build/libs/someservice-api-$version.jar api.jar
COPY ./build/libs/someservice-api-${version}.jar api.jar
COPY ./build/libs/someservice-api-$(build.buildnumber)-$(build.sourcebranchname).jar api.jar
COPY ./build/libs/someservice-api-${build.buildnumber}-${build.sourcebranchname}.jar api.jar

Azure Docker 任务:

- task: Docker@2
inputs:
command: 'buildAndPush'
Dockerfile: '**/Dockerfile'

你正在使用的Azure任务Docker "BuildAndPush"不接受构建参数。你需要定义 Docker "build" 任务,然后你可以传递 build args 并在 Dockerfile 中相应地使用它。

--build-arg varname="$(dynamicversion)"

看看这个

最新更新