You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps构建Magento 2 CI时遇Composer认证错误求助

解决Azure DevOps中Magento 2 CI流程的Composer 401认证错误

问题说明

在Azure DevOps搭建Magento 2持续集成流程时,执行Composer安装命令触发HTTP 401认证错误,提示需要交互式控制台认证,最终Bash脚本以255码退出,构建失败。错误核心是访问https://repo.magento.com/archives/magento/framework/magento-framework-103.0.3.0.zip时未通过认证。

错误日志

In AuthHelper.php line 197:
                                                                               
  The 'https://repo.magento.com/archives/magento/framework/magento-framework-  
  103.0.3.0.zip' URL required authentication (HTTP 401).                       
  You must be using the interactive console to authenticate                    
                                                                               

install [--prefer-source] [--prefer-dist] [--prefer-install PREFER-INSTALL] [--dry-run] [--dev] [--no-suggest] [--no-dev] [--no-autoloader] [--no-progress] [--no-install] [--audit] [--audit-format AUDIT-FORMAT] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [--apcu-autoloader-prefix APCU-AUTOLOADER-PREFIX] [--ignore-platform-req IGNORE-PLATFORM-REQ] [--ignore-platform-reqs] [--] [<packages>...]

##[debug]Exit code 255 received from tool '/usr/bin/bash'
##[debug]STDIO streams have closed for tool '/usr/bin/bash'
##[error]Bash exited with code '255'.
##[debug]Processed:
##vso[task.issue type=error;]Bash exited with code '255'.
##[debug]task result: Failed
##[debug]Processed:
##vso[task.complete result=Failed;done=true;]

当前YAML配置

trigger:
- master

pool:
  vmImage: ubuntu-latest

variables:
  phpVersion: 7.4.3
steps:
- script: |
    composer self-update
    composer dump-autoload
    composer install --ignore-platform-reqs
  displayName: 'Install Composer'

- task: ArchiveFiles@2
  displayName: 'Archive files'
  inputs:
    rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
    includeRootFolder: false
    archiveType: zip
    archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
    replaceExistingArchive: true
- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'

尝试过的命令

composer install --no-interaction --prefer-dist

解决方案

1. 获取Magento Composer认证密钥

登录Magento Marketplace,进入「My Profile」→「Access Keys」,生成新的访问密钥:

  • 公钥(Public Key)作为Composer用户名
  • 私钥(Private Key)作为Composer密码

2. 在Azure DevOps中配置保密变量

打开你的Azure DevOps管道,进入「变量」页面:

  • 添加两个保密变量:MAGENTO_COMPOSER_USERNAME(值为Magento公钥)、MAGENTO_COMPOSER_PASSWORD(值为Magento私钥)
  • 确保变量设置为「保密」,避免明文泄露

3. 修改YAML中的Composer安装步骤

在执行composer install前,先配置Magento仓库的认证信息,可通过两种方式实现:

方式一:直接配置Composer全局认证

- script: |
    composer self-update
    # 配置Magento仓库及认证
    composer config repo.magento.com composer https://repo.magento.com
    composer config --global http-basic.repo.magento.com $(MAGENTO_COMPOSER_USERNAME) $(MAGENTO_COMPOSER_PASSWORD)
    # 执行安装
    composer install --ignore-platform-reqs --no-interaction --prefer-dist
  displayName: 'Install Composer Dependencies'

方式二:创建本地auth.json文件

- script: |
    composer self-update
    # 生成auth.json文件存储认证信息
    echo '{"http-basic": {"repo.magento.com": {"username": "'$(MAGENTO_COMPOSER_USERNAME)'", "password": "'$(MAGENTO_COMPOSER_PASSWORD)'"}}}' > auth.json
    # 执行安装
    composer install --ignore-platform-reqs --no-interaction --prefer-dist
  displayName: 'Install Composer Dependencies'

关键说明

Magento官方仓库是私有仓库,必须通过认证才能下载核心包。CI环境为非交互式模式,无法弹出认证提示,因此需要提前通过Composer配置或auth.json文件注入认证信息,确保安装过程自动完成。

内容的提问来源于stack exchange,提问作者Taqi Rizvi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 14:15:33