如何在Azure DevOps中选择指定版本制品构建Docker镜像推送至AWS ECR
环境
- Azure Dev Ops(代码仓库及流水线触发器)
- AWS ECR/ECS(目标部署平台)
- Docker
- .NET Core Web 应用(v5.0)
当前现状
目前我们通过powershell脚本执行dotnet build构建应用,再通过azurepipeline.yml将生成的压缩包推送至Azure DevOps制品库,该流程运行正常。我们已新增ECR推送任务,可通过源码中的Dockerfile生成镜像并推送至ECR,该环节也可正常运行。
业务问题
我们需要支持在Azure Artifact中选择指定版本的构建产物(例如0.1.24,通过变量传入版本号),使用对应版本的二进制文件和Dockerfile完成Docker镜像构建,目前未找到该需求的实现方案。具体执行流程如下:
- 部署人员更新变量"versionNoToDeploy",填入待部署的制品ID或名称
- 部署人员运行指定的流水线
- 流水线拉取对应制品(若制品无效则返回错误),将压缩包解压至临时目录(该步骤需要技术支持)
- 流水线运行Dockerfile构建镜像(该步骤已实现可正常运行)
- 流水线将构建好的镜像推送至ECR(该步骤已实现可正常运行)
该需求的背景是:我们会持续构建分支直到产出稳定版本,构建产物会先手动部署到测试服务器验证,通过验证后才需要推送至生产环境的ECR/ECS实例。
流水线核心代码
- pwsh: ./build.ps1 --target Clean Protolint Compile --runtime $(runtime) displayName: ⚙️ Compile - task: Docker@2 displayName: Build inputs: command: build repository: appRepo tags: | $(Build.BuildId) deploy addPipelineData: true Dockerfile: src\DockerfileNew - task: ECRPushImage@1 inputs: awsCredentials: 'AWS ECR Connection' regionName: 'ap-south-1' imageSource: 'imagename' sourceImageName: 'myApplication' sourceImageTag: 'deploy' repositoryName: 'devops-demo' outputVariable: 'imageTagOutputVar' - pwsh: ./build.ps1 --target Test Coverage --skip displayName: 🚦 Test - pwsh: ./build.ps1 --target BuildImage Pack --runtime $(runtime) --skip displayName: 📦 Pack - pwsh: ./build.ps1 --target Publish --runtime $(runtime) --skip displayName: 🚚 Publish
制品详情

如需更多特定信息可另行提供。
内容的提问来源于stack exchange,提问作者NitinSingh
相关产品推荐
相关产品推荐

