主机部署问题

本文主要介绍使用云效在安装、主机部署接入中,常见的问题及解决方案。

主机部署

如何解决阿里云ECS提示deploy channel error或是离线?

  • ECS上确认下云助手是否正常,重启下云助手,具体可以参考查看执行结果及修复常见问题

  • 如果云助手正常,确认下ECS的磁盘是否满了,如果是可以清理下磁盘。

如何解决自有主机显示离线?

服务器上确认下agent是否在线,如果是离线,则需要重启agent。附agent基础操作:

  • 查看状态:

    /home/staragent/bin/staragentctl status
  • 重启:

    /home/staragent/bin/staragentctl restart
  • 卸载:

    /home/staragent/bin/staragentctl stop
    rm -rf /home/staragent
    rm /usr/sbin/staragent_sn

主机部署之前运行正常,本次运行机器上的包不是最新或下载不到最新构建包怎么办?

根据提示日志检查服务器磁盘是否满了,如是请自行清理。

主机部署失败且没有失败的详情日志怎么办?

如果使用的是非阿里云ECS,确认下是否自有主机是通过镜像生成的,如果是建议先卸载agent,然后重新添加自有主机后重试。

高的 (74).png

怎么进行多任务回滚?

回滚是按照任务回滚的,如果配置了3个任务,那3个任务都需要分别回滚,建议您可以通过在部署历史的下拉菜单中选择切换回滚任务,具体可以见截图。

高的 (75).png

部署失败,服务没有启动起来怎么办?

直接在服务器上执行对应的命令调试下,确保自己的部署脚本没有问题。

  1. 云效执行的部署逻辑是根据您部署配置中配置的命令去服务器上执行的,复制部署配置页面中配置的命令直接手动在服务器上执行,如果结果和云效执行的结果一样,需要你自行调试部署脚本,确认问题。比如:在服务器上新建一个sh文件,然后把云效上部署配置页面上的部署脚本框中的命令复制粘贴到新建的sh文件中,然后执行sh文件调试下,确保用户提供的脚本没有问题。

  2. 如果在服务器上直接执行可以,在云效执行没启动,确认下脚本中是否使用了相对路径,将相对路径改成绝对路径后重试。

Windows主机部署失败提示deploy channel error怎么办?

目前云效不支持添加Windows主机到云效。可以尝试以下两个替代方案:

  1. 可以通过一台Linux服务器中转下,在部署脚本中编写命令,通过在Linux上执行命令跟Windows交互。

  2. 可以将构建产物通过云效的OSS上传组件传到你自己的OSS上,后续Windows主机从OSS下载包部署。

主机组添加不了非阿里云ECS的自有主机怎么办?

非阿里云ECS的自有主机建议使用混合云托管模式,具体参考:https://help.aliyun.com/document_detail/201140.html高的 (76).png

主机部署报错环境变量not a valid identifier怎么办?

环境变量包含特殊字符1

因为环境变量中包含了特殊字符,需要通过以下操作对流水线进行配置才可正常使用环境变量:

  1. 主机部署任务中,勾选 变量进行编码

  2. 在部署脚本中,把您需要使用的所有环境变量进行 Base 64 解码。比如要使用PIPELINE_ID的环境变量,在部署脚本最前面添加一行export PIPELINE_ID=$(echo $PIPELINE_ID | base64 -d)

    环境变量包含特殊字符2

    image

主机磁盘满导致部署失败

登录你的主机执行df -hl查看磁盘剩余空间,若磁盘空间已满,请清理磁盘空间。

部署命令在机器上执行成功,但Flow上部署失败

  • 添加与命令相关的环境变量,例如:"source /root/.bash_profile;source /etc/profile;" 。

  • 部署相关脚本尽量使用绝对路径,例如"/home/admin/app/deploy.sh",不要使用"./deploy.sh"。

  • kill 命令中类似:"ps -ef | grep athens | grep -v grep" 需要改为: "ps -ef | grep athens | grep -v grep | grep -v rdc_deploy_command"。

主机部署报错 User.NoPermission怎么办?

在部署详情中,显示具体的部署错误码,不同的错误码对应的错误说明和错误排查如下:

User.NoPermission,用户没有调用某个API的权限。请检查部署组的服务连接是否正常。

云效统一Runner常见问题

排查步骤

重要

在开始处理主机部署、私有构建机申请环境失败问题之前请先按以下步骤确认机器上云效runner状态。

使用排查工具

只支持Linux系统

下载工具:

wget "https://rdc-public-software.oss-cn-hangzhou.aliyuncs.com/runner/runnerStatusCheck" -O runnerStatusCheck

设置执行权限:

chmod u+x runnerStatusCheck

执行工具:

./runnerStatusCheck

按照工具提示信息进行处理,示例如下。

image.png

  • 手动排查

    • 第一步:检查系统 Linux 版本是否匹配。

      通过命令lsb_release -a查看 Linux 发行版本信息是否满足条件。目前云效统一 Runner 支持以下 Linux 发行版本:

      • centos 6+ 及以上

      • ubuntu 16.04+ 及以上

      • Alibaba Cloud Linux 2/3

      image

    • 第二步:检查 Runner service 状态和日志。

      通过命令ls -al /etc/systemd/system | grep runner查看 Runner 服务名称,通常 Runner 服务的名称为 runner-{版本}-{租户名称}.service,如下图所示。

      image

      通过命令systemctl status runner-{版本}-{租户名称}.service查看 Runner 服务状态,如果服务状态为 active(running),则服务正常,如下图所示。image

      另外,你也可以通过命令journalctl -u runner-{版本}-{租户名称}.service -a --no-pager --since '5 minutes ago' -f查看 Runner 执行日志。

主机组离线常见问题

构建/部署运行中,无日志或者主机状态显示为离线。

  • 检查主机磁盘是否满了df -hl ,如果磁盘已满请尝试清理后重试。

  • 检查 Runner service 状态,如果状态非 active(running),通过命令systemctl restart runner-{版本}-{租户名称}.service重启 Runner service。

  • 检查网络连通性是否正常。

    • 通过systemctl status runner-{版本}-{租户名称}.service查询 Runner service 状态,并截取 service 进程参数 --configPath=***,如下图所示。image

    • 查看 configPath 中URL cat {***}/config.yml | grep url

      image

    • 通过以下命令判断是否可以正常访问。

      # 注意替换下面命令中的url
      curl '{url}/api/v2/runner/storage/latest?os=linux&arch=amd64'
  • 创建主机组/构建集群报错或手动安装 Runner 报错,典型报错如下:

    image

    目前 Flow 上创建主机组/私有构建集群支持通过 ECS 主机选择、自有主机安装两种方式,但对于同一台机器不可以在同一个云效企业中使用两种方式分别添加。

    例如,你已经通过 ECS 主机选择的方式添加了主机 A,该主机无法再次通过自有主机方式添加进主机组。

    • 只有将主机上的 Runner 卸载后,才可以更换添加方式,通过以下命令卸载 Runner 。

      systemctl stop runner-{版本}-{租户名称}.service
      rm -rf /etc/systemd/system/runner-{版本}-{租户名称}.service
      rm -rf /root/yunxiao/{租户名称}/runner/config
    • 部署命令可以在机器上手动执行成功,但在 Flow 流水线上执行失败。

      • 添加与命令相关的环境变量,例如:/source /root/.bash_profile; source /etc/profile

      • 部署相关脚本尽量使用绝对路径,不要使用相对路径,例如:/home/admin/app/deploy.sh