Azure DevOps Pipeline и Docker - PullRequest
       27

Azure DevOps Pipeline и Docker

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

Я отчаянно пытаюсь создать проект do tnet core 3.1, а затем создать из него образ с docker и pu sh, который помещается в мой реестр

Вот мой azure -pipeline.yaml:

# Starter pipeline
# Start with a minimal pipeline that you can customize to build and deploy your code.
# Add steps that build, run tests, deploy, and more:
# https://aka.ms/yaml

trigger:
- none

pool:
  vmImage: 'ubuntu-latest'

variables:
  - group: obs-devops-global-variables
  # Put variable group for your team  (variable groups in Pipelines-->Library)
  - group: obs-devops-tso-variables
  - name: AzureSubscription
    value: 'obs-acr-sc-dev'
  - name: ACR
    value: obsaksacrdev.azurecr.io
  - name: ImagePrefix
    value: obs-$(team)/
  # Put name of Image same like name of repo
  - name: ImageName
    value: obs-datalake-raw2gold
  - name: BuildConfiguration
    value: 'Release'
  - name: imageTag
    value: '4.0.$(build.buildId)'
  - name: rid
    value: 'linux-x64'

steps:
#- script: |
#    dotnet restore
#    dotnet build
#    dotnet publish ./RawToGold.Worker/ --configuration $(buildConfiguration) 

- task: UseDotNet@2
  inputs:
    version: '3.1.x'
    packageType: sdk

- task: DotNetCoreCLI@2
  displayName: 'dotnet build $(buildConfiguration)'
  inputs:
    command: 'build'
    arguments: '-r $(rid) --configuration $(buildConfiguration) /p:SourceRevisionId=$(Build.SourceVersion)'

- task: DotNetCoreCLI@2
  displayName: "Publish"
  inputs:
    command: 'publish'
    publishWebProjects: false
    arguments: './RawToGold.Worker/ -r $(rid) --configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
    zipAfterPublish: false


- task: Docker@1
  displayName: 'Containerize the micro service'
  inputs:
    useDefaultContext: false
    azureSubscriptionEndpoint: '$(AzureSubscription)'
    azureContainerRegistry: '$(ACR)'
    dockerFile: 'Dockerfile'
    imageName: '$(ACR)/$(ImagePrefix)$(ImageName):$(imageTag)'

- task: Docker@1
  displayName: 'Push image'
  inputs:
    azureSubscriptionEndpoint: '$(AzureSubscription)'
    azureContainerRegistry: '$(ACR)'
    command: 'Push an image'
    imageName: '$(ACR)/$(ImagePrefix)$(ImageName):$(imageTag)'

- task: PublishPipelineArtifact@1
  displayName: 'Publish Pipeline Artifact'
  inputs:
    artifactName: 'k8s'
    targetPath: 'k8s'

А вот мой docker файл

FROM mcr.microsoft.com/dotnet/core/runtime:3.1-bionic

RUN groupadd --gid 1000 rawtogold \
  && useradd --uid 1000 --gid rawtogold --shell /bin/bash --create-home rawtogold

USER rawtogold

#Use locally
#COPY ./RawToGold.Worker/bin/Release/netcoreapp3.1/publish /home/rawtogold/app/
COPY . /home/rawtogold/app/
RUN ls /home/rawtogold/app/
WORKDIR /home/rawtogold/app/
ENTRYPOINT ["dotnet", "RawToGold.Worker.dll"]

Но скомпилированный код не копируется в изображение? Я попробовал и COPY . /home...., и COPY ./RawToGold.Worker/bin/Release/netcoreapp3.1/publish, которые я использовал бы на своей локальной машине для разработки образа. Но как мне контролировать buildContext файла Docker? И добавление ввода: buildContext к задаче НЕ помогает в Docker@1 Если я создаю его с помощью powershell (строки без комментария вверху), я могу получить доступ к файлам с помощью ./RawToGold.Worker/bin/Release/netcoreapp3.1/publish Но я бы хотел знать, как управлять контекстом сборки docker в docker@1

1 Ответ

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

На самом деле я отказался от этого и начал использовать Docker@2 вместо этого, что работает безупречно, Docker@1 устарела в любом случае

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