Travis构建失败报错:无法定位dotnet-sdk-2.0.0包求排查建议
首先,我完全理解这种"之前好好的突然就挂了"的崩溃感——毕竟配置没动过,结果构建直接报错找不到包,确实头疼。结合你给出的.travis.yml配置和构建日志,我整理了几个针对性的排查方向:
1. 优先排查镜像源的版本支持问题
你当前用的是dist: trusty(对应Ubuntu 14.04),这个版本的Ubuntu已经停止官方维护很久了,Travis CI也逐步移除了旧版软件源里的过时包,其中就包括.NET Core 2.0 SDK。这大概率是构建突然失败的核心原因。
解决办法:
尝试把dist字段升级到较新的仍受支持的版本,比如dist: xenial(Ubuntu 16.04)或者dist: focal(Ubuntu 20.04),同时保留dotnet: 2.0.0配置,看看是否能正常拉取包。如果还是不行,那说明这个版本的.NET SDK已经完全从Travis的镜像源中移除了。
2. 手动注入官方软件源(仅当必须保留.NET 2.0时)
如果你暂时无法升级项目的.NET版本,可以尝试在构建前手动添加微软官方的.NET Core软件源,覆盖Travis默认的源。修改你的.travis.yml,添加before_install步骤:
before_install: # 添加微软官方Ubuntu 14.04软件源 - wget -q https://packages.microsoft.com/config/ubuntu/14.04/packages-microsoft-prod.deb - sudo dpkg -i packages-microsoft-prod.deb - sudo apt-get update -qq
这样先更新软件源,再让Travis尝试安装dotnet-sdk-2.0.0,大概率能解决找不到包的问题。
3. 长远方案:升级到受支持的.NET版本
.NET Core 2.0早在2018年10月就结束了官方支持,不仅是Travis CI,后续还可能遇到更多兼容性、安全性问题。建议把项目升级到LTS版本(比如.NET 6或.NET 8),然后更新.travis.yml中的dotnet字段到对应版本,比如:
dotnet: 6.0
这样既能获得持续的官方支持,也能避免旧镜像源带来的各种问题。
4. 临时验证镜像内的可用包
如果想确认当前镜像里到底有没有dotnet-sdk-2.0.0,可以在构建脚本里加一个调试命令,比如在before_script前添加:
before_script: - apt-cache search dotnet-sdk - chmod +x build.sh - chmod +x run-tests.sh
这样能看到当前环境中可安装的所有.NET SDK包,帮助你确认是不是真的没有目标版本。
附你提供的原始配置和错误日志:
原始.travis.yml配置
language: csharp dist: trusty sudo: required mono: none dotnet: 2.0.0 solution: Dibware.Salon.sln addons: sonarcloud: organization: "dibley1973-github" token: secure: $SONAR_TOKEN branches: only: - master before_script: - chmod +x build.sh - chmod +x run-tests.sh script: - ./build.sh - ./run-tests.sh - sonar-scanner
核心错误日志
C# support for Travis-CI is community maintained. Please open any issues at https://travis-ci.community/c/languages/37-category and cc @joshua-anderson @akoeplinger @nterry
Installing .NET Core
$ export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
$ export DOTNET_CLI_TELEMETRY_OPTOUT=1
7.67s0.49sE: Unable to locate package dotnet-sdk-2.0.0
E: Couldn't find any package by glob 'dotnet-sdk-2.0.0'
E: Couldn't find any package by regex 'dotnet-sdk-2.0.0'
The command "sudo apt-get install -qq dotnet-sdk-2.0.0" failed and exited with 100 during . Your build has been stopped.
内容的提问来源于stack exchange,提问作者Dib

