1. 持续集成
  2. 词汇表

构建任务运行失败

目前主流的计算机操作系统内任何进程的退出都会留下 exit code,并以此判定进程是否按照预期运行。因此持续集成过程中执行进程的 exit code(退出码)不为 0 就会判定为构建失败。以下是常见原因:

持续集成的配置文件语法有错误

与大多数的编程语言一样,Jenkinsfile 也是由特定领域的语言 (DSL) 组成,语法错误就会导致编译或者运行失败。

测试不通过

大多数主流的测试工具或测试框架,在测试逻辑不通过时,默认都会将退出码设置为非 0。

构建超时或构建配额不足

每一个团队在使用 CODING 持续集成的时候,都会有一定的配额。为防止恶意使用持续集成,每一个构建任务都会有超时的限制,超时或者构建次数超过配额系统将会主动中止构建任务。用户遇到配额不足时,可以在团队管理内进行配额调整,购买满足自己实际需求的配额。

查看构建日志与构建快照

CODING 持续集成为用户提供了构建日志,用户可以根据日志内容,判断构建失败的原因。除此之外,CODING 持续集成还提供了每一次构建的配置快照, 用户可以根据快照获取构建使用的配置文件内容和参数,得知是否是配置差异导致的构建失败。

构建日志:

构建快照:

在本地运行自动化任务

用户可以再将自动化的逻辑重新执行一遍(如:在本地重新运行测试代码)或者实时修改代码获得更多的信息反馈,以此来排查问题。

使用了交互式命令行程序

在持续集成的过程中,用户无法直接使用交互式命令,若使用了呼出交互式命令行窗口的程序会导致构建失败。

常见的命令有 npm login docker login -u xxx( 在持续集成登录 docker 时需使用 docker -u xx -p xx 命令)

若本文未能收录您实际遇见的问题,欢迎前往工单中心提交使用疑惑,我们将按照实际情况及时补充相关问题的处理方法。

如何 Debug 构建任务

如果你需要 Debug 构建运行过程,可以通过在构建过程中添加以下步骤的方式提供 ssh:

steps {
  sh 'apt-get update'
  sh 'apt-get install -y tmate openssh-client'
  sh '''echo -e \'y
\'|ssh-keygen -q -t rsa -N "" -f ~/.ssh/id_rsa'''
  sh 'tmate -S /tmp/tmate.sock new-session -d'
  sh 'tmate -S /tmp/tmate.sock wait tmate-ready'
  sh '''
tmate -S /tmp/tmate.sock display -p \'#{tmate_ssh}\'
tmate -S /tmp/tmate.sock display -p \'#{tmate_web}\'
echo "WebURL: ${tmateWeb}"
echo "SSH: ${tmateSSH}"
'''
  sh 'sleep 3600'
}

无法连接阿里云主机

执行 SSH 命令访问阿里云主机时提示 Connection reset 错误。

此问题是阿里云侧白名单未放行 CODING IP 所致。前往阿里云「安全管控平台」→「安全管控」→「新增访问白名单」,将构建机的 IP 加入至白名单中可以防止其在访问云主机时被拦截。

CODING 构建机所使用的出口 IP 如下:

# 中国上海节点

111.231.92.100

81.68.101.44

# 中国香港节点

124.156.164.25

119.28.15.65

# 美国硅谷节点

170.106.136.17

170.106.83.77

若用户直接复制构建计划页提供的构建机 IP 地址,请去掉 /32 结尾以防格式错误。

上一篇Jenkinsfile 相关问题
最近更新
感谢反馈有用
感谢反馈没用

在阅读中是否遇到以下问题?

您希望我们如何改进?