Невозможно получить доступ к azure переменным конвейера devops в Dockerfile - PullRequest
0 голосов
/ 31 марта 2020

Я не уверен, где я делаю это неправильно. - Создан пустой шаблон конвейера. - Добавлены задачи для генерации 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"]

1 Ответ

0 голосов
/ 31 марта 2020

Секреты не отображаются автоматически в переменных среды. Вам придется добавить их как переменные среды самостоятельно с помощью встроенного скрипта, если вы хотите представить их как переменные среды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...