我是AzureDevOps的新手,我试图将Azure DevOps用于我的C ++项目之一。我的要求如下。
1:构建C ++并发布到Artifactory(Azure),这是我能够做到的,并且能够在Artifactory中发布。
2:我想在二进制文件的帮助下构建Docker映像时使用该Artifactory(二进制文件)。但是我无法在Azure DevOps中实现。在本地,我能够使用二进制文件和正在运行的文件来构建docker映像。
作为总结,我正在写。
我需要使用上一个任务中的构建工件来创建简单的发布管道 ●发布管道应构建具有以下要求的Docker映像 ○必须包含来自构建管道的构建工件。
请找到以下代码:
trigger:
- master
jobs:
- job: gcctest
pool:
vmImage: 'ubuntu-16.04'
steps:
- script: sudo apt-get update && sudo apt-get install libboost-all-dev
- script: g++ -std=c++11 -I/usr/include/boost/asio -I/usr/include/boost -o binary.out main.cpp
connection.cpp connection_manager.cpp mime_types.cpp reply.cpp request_handler.cpp request_parser.cpp server.cpp -lboost_system -lboost_thread -lpthread
- powershell:
$commitId= "$env:BUILD_SOURCEVERSION"
$definitionName= "$env:BUILD_DEFINITIONNAME"
$shortId= $commitId.Substring(1, 8)
$buildName="$definitionName.$shortId"
Write-Host $buildName
Write-Output "$buildName">readme.txt
# echo "##vso[task.setvariable variable=text]$buildName"
- task: CopyFiles@2
inputs:
sourceFolder: '$(Build.SourcesDirectory)'
contents: '?(*.out|*.txt)'
targetFolder: $(Build.ArtifactStagingDirectory)
- task: PublishBuildArtifacts@1
inputs:
pathToPublish: $(Build.ArtifactStagingDirectory)
artifactName: result
- task: Docker@1
displayName: 'Build using multi-stage'
inputs:
containerregistrytype: 'Container Registry'
dockerRegistryEndpoint: 'My Container Registry'
arguments: '--build-arg ARTIFACTS_ENDPOINT=$(ArtifactFeed)'
Docker文件:
FROM ubuntu:18.04
RUN apt-get update
RUN apt-get install -y libboost-all-dev
COPY . /app
EXPOSE 80
CMD /app/binary.out 0.0.0.0 80 .```
~
预期结果:
Docker image should build by artifact and able to publish on DockerHub repo.