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
相关产品推荐
相关产品推荐

