构建问题
本文主要介绍流水线构建相关常见问题。
Java 构建报错 Could not resovle dependencies for project com.xxx
问题描述:Java构建步骤依赖缺失导致构建失败,典型报错如下。

解决方案:请参考 Maven依赖配置 检查流水线构建使用的 settings.xml 是否符合预期,检查 settings.xml 文件中配置的依赖库是否符合预期,检查依赖库中是否存在目标包文件。
Java 构建失败:未拉取到最新依赖包
问题描述:Java构建过程中,未拉取到最新依赖包导致构建失败。
解决方案:
若最新依赖包为新版本号,请检查 pom 文件中是否更新了相应版本号。
若最新依赖包为老版本号(对已存在的依赖包进行了相同版本的覆盖),解决方法如下:
若依赖包是 snapshot 版本,可使用
-U
参数强制刷新。构建命令参考如下:mvn -B clean package -Dmaven.test.skip=true -Dautoconfig.skip -U
若依赖包是 release 版本,可能原因是老的 release 依赖包已经被 Flow 缓存,因为版本未发生更新,构建过程中不会重新下载最新依赖包。可参考 缓存设置 清理缓存后重试。
Gradle 构建报错 ./gradlew: No such file or directory
问题描述:Java构建步骤失败,提示 ./gradlew: No such file or directory
,典型报错如下图。

解决方案:Flow 未提供内置 Gradle,建议使用GradleWrapper,请检查代码目录下是否存在 gradlew 文件,若不存在请上传 gradlew 文件后重试。
Gradle 构建报错 ./gradlew:Permission denied
问题描述:Java构建步骤失败,提示 ./gradlew:Permission denied
,典型报错如下图。

解决方案:该错误原因为 gradlew 没有执行权限,可以在构建命令中通过chmod +x gradlew
修改 gradlew 权限后重试。详见下图。

Gradle 构建缓慢或超时失败
问题描述:Java构建步骤Gradle构建缓慢或下载依赖超时失败。
解决方案:
检查 Gradle Wrapper 是否存在跨境网络等问题,如有,可参考构建环境更换下载源。
检查构建日志是否存在跨境下载依赖情况,如有,可以修改 build.gradle 文件,将依赖仓库配置为国内代理。如下示例。
buildscript {
repositories {
maven {
url 'http://maven.aliyun.com/nexus/content/groups/public/'
}
maven {
url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
}
}
}
allprojects {
repositories {
maven {
url 'http://maven.aliyun.com/nexus/content/groups/public/'
}
maven {
url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
}
}
}
PHP 构建报错 requested PHP extension xxx is missing from your system
问题描述:composer install 安装失败,提示缺少部分依赖。
解决方案:可以通过类似apt-get install xxx或者yum install xxx 指令安装相关依赖。
PHP 构建 Composer 版本不满足
问题描述:PHP 构建时因 Composer 版本问题导致失败
解决方案:云效默认 PHP 环境中,提供的 Composer 为 1.8.6。您可通过添加以下指令将默认环境中的 Composer 版本快速升级至 2.1.5。
wget https://rdc-public-software.oss-cn-hangzhou.aliyuncs.com/composer/2.1.5/composer.phar -O /usr/local/bin/composer

GO 构建报错 not found: xxx 无法访问仓库
问题描述:Go构建步骤报错not found xxx,无法访问仓库,典型报错如下。

解决方案:Go 构建过程中,如果需要通过 private registry 下载依赖文件,需要在环境中配置相关凭证,可参考 设置依赖下载访问凭证 配置。
GO 构建下载海外依赖导致构建缓慢
问题描述:从 Github 等海外仓库直接下载构建依赖会导致构建缓慢。
解决方案:建议添加以下命令,设置国内代理。
export GOPROXY=https://goproxy.cn
GO 构建报错 no rule to make target build
问题描述:使用make build执行 go 构建,报错 no rule to make target build...。
解决方案:
执行 make build 需要代码仓库下有 makefile 文件,请检查您代码中该文件是否存在。
修改流水线中的执行命令,使用本地可以通过的构建命令。