Azure devops - передать git коммит SHA на шаг док-файла - PullRequest
0 голосов
/ 15 апреля 2020

Вот мой Dockerfile:

FROM node:alpine as builder
ENV GIT_SHA  ${WhatToSetHere} <--------------------------- Would like to set gitSHA here
RUN printenv
RUN mkdir -p /app
WORKDIR /app

COPY package.json ./
RUN yarn install

COPY . .
COPY public ./public

# RUN ls -la /src/

RUN yarn run build


FROM node:alpine
RUN mkdir -p /app
WORKDIR /app
ENV NODE_ENV production

COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/build ./build

EXPOSE 3000

CMD [ "yarn", "start:prod" ]

Вот мой azure конвейер:

trigger:
  - master

pool:
  vmImage: "ubuntu-latest"

variables:
  buildConfiguration: "Release"
steps:
  - task: GitVersion@5
  - script: |
      echo '##vso[task.setvariable variable=buildVersion]$(GitVersion.FullSemVer")'
  - script: |
      echo //registry.npmjs.org/:_authToken=$(NPM_TOKEN) > .npmrc
    displayName: 'npm Authentication'
  - task: Docker@2
    inputs:
      containerRegistry: acrXXX
      repository: "XXX-client"
      command: "buildAndPush"
      Dockerfile: "**/Dockerfile"

  - task: PublishBuildArtifacts@1
    inputs:
      PathtoPublish: "$(Build.SourcesDirectory)/deploy/XXX-client"
      ArtifactName: "charts"
      publishLocation: "Container"

Как мне получить коммит SHA из сборки jenkins и установить его как env переменная в моем dockerfile? Есть ли какая-либо документация, на которую вы могли бы указать, какие значения включены в сборку?

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

К вашему Dockerfile , добавьте следующие строки после шага FROM:

ARG GIT_SHA
ENV build_ref=$GIT_SHA

Для вашего YAML-конвейера вам нужно разбить вашу сборку и pu sh шагов. Мы будем использовать предопределенную переменную Build.SourceVersion на этапе сборки следующим образом:

- task: Docker@2
  displayName: build
  inputs:
    command: build
    arguments: '--build-arg GIT_SHA=$(Build.SourceVersion)'

Это передаст значение Git эталонного SHA конвейера, на котором выполняется конвейер. ваш Dockerfile. Вы можете назвать его на следующих шагах как ${build_ref}, например, чтобы распечатать его в журналах, вы бы добавили шаг в свой Dockerfile следующим образом:

RUN echo ${build_ref}

Для дальнейшего чтения: Ссылка на Dockerfile: ARG , вы можете изменить соглашения об именах, просто оставаясь неизменными как в Dockerfile, так и в конвейере YAML.

0 голосов
/ 15 апреля 2020

Пожалуйста, проверьте Build.SourceVersion переменную.

Последнее изменение управления версией запуска репо, включенное в эту сборку.

Git: The commit ID.
TFVC: the changeset.

Ссылка на документацию.

...