Я не уверен, где я делаю это неправильно. - Создан пустой шаблон конвейера. - Добавлены задачи для генерации java исполняемых файлов, сборки dockerfile и pu sh it в ACR. - Добавлены секреты keyvault для переменных конвейера, которые требуются приложению во время выполнения
Теперь, Я хотел бы передать эти секреты Dockerfile как исполняемые ARG. Ниже приведены pipe.yml и Dockerfile.
Pipeline.yml
trigger:
branches:
include:
- "*"
tags:
include:
- dev-*
- qa-*
resources:
- repo: self
variables:
# Accessing zzure keyvault secrets
KEYVAULT-BASE-URL: "$(UI_Variable_4_BASE_URL)"
KEYVAULT-CLIENT-ID: "$(UI_Variable_4_CLIENT_ID)"
KEYVAULT-CLIENT-SECRET: "$(UI_Variable_4_CLIENT_SECRET)"
dockerRegistryServiceConnection: '123-456'
containerRegistry: 'my-demo-app.azurecr.io'
tag: 'latest'
# Setting variables based on git tag
${{ if or(startsWith(variables['Build.SourceBranch'], 'refs/tags/dev-'), startsWith(variables['Build.SourceBranch'], 'refs/heads')) }}:
imageRepository: 'dev'
dockerfilePath: '$(Build.SourcesDirectory)/Dockerfile.development'
${{ if startsWith(variables['Build.SourceBranch'], 'refs/tags/qa-') }}:
imageRepository: 'staging'
dockerfilePath: '$(Build.SourcesDirectory)/Dockerfile.staging'
vmImageName: 'ubuntu-latest'
stages:
- stage: Build
displayName: Build and push stage
jobs:
- job: Build
displayName: Build executables
pool:
vmImage: $(vmImageName)
steps:
- task: Maven@3
inputs:
mavenPomFile: 'pom.xml'
javaHomeOption: 'JDKVersion'
jdkVersionOption: 1.11
jdkArchitectureOption: x64
publishJUnitResults: false
goals: 'package'
- task: Docker@2
displayName: Build docker image
inputs:
command: build
#arguments: --build-arg KEYVAULT-BASE-URL="$(UI_Variable_4_BASE_URL)",KEYVAULT-CLIENT-ID="$(UI_Variable_4_CLIENT_ID)",KEYVAULT-CLIENT-SECRET="$(UI_Variable_4_CLIENT_SECRET)"
repository: $(imageRepository)
dockerfile: $(dockerfilePath)
containerRegistry: $(dockerRegistryServiceConnection)
tags: |
$(tag)
- task: Docker@2
displayName: Push docker image
inputs:
command: push
repository: $(imageRepository)
dockerfile: $(dockerfilePath)
containerRegistry: $(dockerRegistryServiceConnection)
tags: |
$(tag)
Dockerfile
FROM adoptopenjdk/openjdk11:ubi
ARG KEYVAULT-CLIENT-ID
ARG KEYVAULT-CLIENT-SECRET
ARG KEYVAULT-BASE-URL
ENV KEY_VAULT_CLIENT_ID=$(KEYVAULT-CLIENT-ID)
ENV KEY_VAULT_CLIENT_SECRET=$(KEYVAULT-CLIENT-SECRET)
ENV KEY_VAULT_BASE_URL=$(KEYVAULT-BASE-URL)
ENV spring.profiles.active=development
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]