云服务器内容精选

  • 原因分析 由提示信息可知,解决方案中引入了程序集“Microsoft.Office.Interop.Word”,但构建时环境中不具备此程序集,导致编译告警,如果项目代码中使用了此引用,甚至会直接导致失败。 通常情况下,此类程序集默认安装于本地系统,无需指定程序集位置,VS构建时会从默认配置的几个程序集路径查找,可以构建成功;而云端构建环境对应目录无此程序集,进而导致本地与云端构建不一致。 为解决此类场景,Msbuild集成了NuGet,可以在构建时从远程仓库下载对应程序集,此时只需于项目中指定“packages.config”,并于其中声明依赖的程序集即可。 特殊情况下,项目引用的程序集可能无法在远程仓库找到,此时需要手工保存程序集至代码仓库中,并显示指定程序集路径。
  • 问题现象 构建告警: warning MSB3245: 未能解析此引用。 未能找到程序集“Microsoft.Office.Interop.Word, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL”。请检查磁盘上是否存在该程序集。 如果您的代码需要此引用,则可能出现编译错误。
  • 处理方法 避免javadoc的检查,在项目根目录下的Gradle下面就要添加如下配置: allprojects {repositories {jcenter()}tasks.withType(Javadoc) {options.addStringOption('Xdoclint:none', '-quiet')options.addStringOption('encoding', 'UTF-8')}}
  • 问题现象 异常信息如下: 123456789 [2019-07-02 08:29:23.179] ERROR: Command "git submodule update --init --recursive --remote asae-feign" returned status code 1:[2019-07-02 08:29:23.179] stdout: Cloning into 'asae-feign'...[2019-07-02 08:29:23.179] [2019-07-02 08:29:23.179] Error: ERROR: Needed a single revision[2019-07-02 08:29:23.179] Unable to find current origin/develop revision in submodule path 'asae-feign'[2019-07-02 08:29:23.179] [2019-07-02 08:29:23.202] [INTERNAL] : [pluginFrame] step run failed, errorMessage: Could not perform submodule update[2019-07-02 08:29:23.250] [INFO] [代码检出] : StagePostExecution started[2019-07-02 08:29:23.251] [INFO] [代码检出] : StagePostExecution finished
  • 问题现象 异常信息如下: 1 [ERROR] The goal you specified requires a project to execute but there is no POM in this directory (/xxx/slavespace/slave3/workspace/job_4a1d5be4-b273-4ac8-8d5d-2ee583e71832_1544498089095). Please verify you invoked Maven from the correct directory.
  • 处理方法 进入编译构建服务首页。 选择对应的构建任务,单击任务所在行的,单击“编辑”。 在“构建步骤”页面编辑“NPM构建”。 在NPM构建步骤里,添加如下命令,修改Npm镜像仓地址: 1 npm config set registry https://repo.xxcloud.com/repository/npm/ 或 npm config set registry https://registry.npm.taobao.org 单击“保存并执行”,重新执行构建任务。
  • 问题现象 执行Npm构建任务时,日志报如下异常信息: Module Error (from ./node_modules/@vue/cli-plugin-eslint/node_modules/eslint-loader/index.js):***//public/LodopFuncs.js 79:25 error 'getCLodop' is not defined no-undef 80:27 error Empty block statement no-empty 89:21 error 'CLODOP' is not defined no-undef
  • 问题现象 使用Maven等工具构建时,通常会依赖特定的构建文件,如:pom.xml文件等。如果工具找不到相应的构建文件,则会失败并报“xxx工程找不到xxx文件”此类错误,常见的错误信息如下: 工具 构建文件 错误信息 Maven pom.xml The goal you specified requires a project to execute but there is no POM in this directory (). Please verify you invoked Maven from the correct directory Ant build.xml Buildfile: build.xml does not exist! NPM package.json npm ERR! enoent ENOENT: no such file or directory, open '/package.json' Yarn package.json error Couldn't find a package.json file in ""
  • 处理方法 在Android构建过程中推荐使用“Android APK签名”构建步骤完成APK签名,编译构建提供了Android APK签名构建步骤,配置方法如下: 在“Android构建”步骤后添加“Android APK签名”步骤。 参数说明如下: 参数 说明 需要签名的APK路径 Android构建后生成要签名的.apk文件位置,支持正则表达式,如:可以使用build/bin/*.apk匹配构建出来的APK包。 Keystore文件 用于签名的Keystore文件,单击下拉列表,展示文件管理已经上传的Keystore文件,请根据需要选择。 keystore password 密钥文件密码。 别名(Alias) 密钥别名。 key password 密钥密码。 apksigner命令行 用户自定义签名参数,默认“--verbose”显示签名详细。 验证签名是否成功。 配置完成后执行构建任务,当显示任务执行成功后,查看构建日志,若“Android APK签名”那段日志中显示“result: Signed”即为签名成功。
  • 问题现象 执行Npm构建任务时,日志报如下异常信息: Downloading binary from https://github.com/sass/node-sass/releases/download/v4.14.1/linux-x64-72_binding.nodeCannot download "https://github.com/sass/node-sass/releases/download/v4.14.1/linux-x64-72_binding.node": read ECONNRESET...npm ERR! code ELIFECYCLEnpm ERR! errno 1npm ERR! node-sass@4.14.1 postinstall: `node scripts/build.js`npm ERR! Exit status 1npm ERR! npm ERR! Failed at the node-sass@4.14.1 postinstall script.npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
  • 原因分析 找不到需要的文件。 上图中6068行的错误日志,“Module not found: Error: Can't resolve './App.Vue' in '/xxx/slave1/workspace/job_d5d70df6-9b64-4faa-ba67-93c06d4a1972_1545727944134/src'”,在“src”文件夹下找不到“./App.Vue”文件。可能原因如下: 对应文件夹下,没有所需文件。 文件路径大小写配置有误。图中代码配置的是“'./App.Vue'”,实际文件名是“'./App.vue'”,导致找不到所需文件。因为Windows系统不区分大小写,而Linux系统区分,所以可能本地能构建成功,在编译构建服务上却构建失败。
  • 处理方法 可以在命令行中的gradle命令后加上-xlint参数,跳过lint检查。如: /bin/bash ./gradlew assembleDebug -Dorg.gradle.daemon=false -d --stacktrace -xlint 或 gradle assembleDebug -Dorg.gradle.daemon=false -d --stacktrace --init-script /root/.gradle/init.gradle -xlint
  • 处理方法 确定target目录下有war包,只是名字可能不是“bb.war”。 这种情况下修改构建包路径为“**/target/*.war”,正则匹配war包。 无法确定target目录下有哪些文件。 在构建执行的步骤shell里最后增加“ls -al target”,再次执行构建,就会打印出target目录下的所有文件。找到需要的文件位置后,再重写构建包路径配置。 如果构建结果不在workspace目录(构建命令在workspace目录或其子目录下执行),则在下一个Action中将丢失此构建包,因此需要提前拷贝构建包到workspace目录,如: mv /usr/bin/nginx ./。 相关构建步骤:上传软件包到软件发布库。
  • 处理方法 修改文件路径长度至系统要求大小即可。 项目文件全路径长度实际为项目下文件相对路径长度与编译构建服务默认路径长度之和。 编译构建服务默认路径长度为45字符。 因此,在使用Msbuild构建的过程中,您的项目文件路径需满足:项目下文件相对路径(以代码仓库为根目录)长度不可大于215字符。 一些特殊场景(如构建时指定输出目录为“Output/release”)下,可能会额外占用路径长度。 建议您的项目下文件相对路径(以代码仓库为根目录)长度保持在200个字符以下,原则上尽可能短最好。
  • Gradle Wrapper使用教程 在本地环境中,进入代码根目录,执行gradle wrapper命令。命令执行完毕后,可以发现代码仓库中新增了以下文件: gradlew (Unix Shell 脚本) gradlew.bat (Windows批处理文件) gradle/wrapper/gradle-wrapper.jar (Wrapper JAR文件) gradle/wrapper/gradle-wrapper.properties (Wrapper属性文件) 提交代码到代码仓库。 修改构建任务中命令行里的语句,将gradle替换成./gradlew,如将gradle build替换为./gradlew build。