【发布时间】:2020-12-04 03:22:14
【问题描述】:
我们目前正在使用 CircleCI 运行我们的自动化测试,并希望迁移到 Azure DevOps 以在 Azure Pipeline 上运行这些测试。我们的应用程序已完全 docker 化,我无法在 Azure Pipeline 上的容器中执行测试。
我的目标只是构建映像,将其推送到我们的 Docker Hub 存储库,然后将其拉取以执行 PHPUnit。第一部分没问题,我成功推送了图片。
然后我创建了一个作业来执行一个简单的脚本,我希望它在容器内运行。我的管道配置文件将随之而来。当前失败的步骤是第二个作业的容器初始化。它失败并出现错误:
/usr/bin/docker pull [已编辑]:azure-master 来自守护进程的错误响应:拒绝 [redacted] 的拉取访问,存储库不存在或可能需要“docker login”:拒绝:请求的资源访问被拒绝
trigger:
- master
resources:
- repo: self
stages:
- stage: Build
displayName: Build image
jobs:
- job: Build_and_push
displayName: Build and push image
pool:
vmImage: 'ubuntu-latest'
steps:
- task: Docker@2
displayName: Build and push image
inputs:
containerRegistry: 'Docker Hub'
repository: '[redacted]'
command: 'buildAndPush'
Dockerfile: '**/Dockerfile'
tags: 'azure-$(Build.SourceBranchName)'
- task: Docker@2
displayName: Login to docker repo
inputs:
containerRegistry: 'Docker Hub'
command: 'login'
- job: Install_composer_and_run_tests
dependsOn: ['Build_and_push']
pool:
vmImage: 'ubuntu-latest'
container: [redacted]:azure-$(Build.SourceBranchName)
steps:
- task: Docker@2
displayName: Login to docker repo
inputs:
containerRegistry: 'Docker Hub'
command: 'login'
- script: composer install -n --prefer-dist
- script: php vendor/bin/phpunit tests/ --group me
我真的不明白我应该如何或在哪里登录,因为我在工作中使用container 参数,而不是拉取图像的任务。另外,即使我没有在该步骤明确登录,我也没有问题推送图像。最后一件事是,我使用我的凭据在 Azure DevOps (Docker Hub) 中创建了一个容器注册表,它可以正常工作。
感谢您的帮助:)
【问题讨论】:
-
谢谢,您的回答帮助我完成了工作!抱歉,我自己的回复延迟了。
标签: azure-devops azure-pipelines