前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >"gitlab-runner-build": executable file not found in $PATH

"gitlab-runner-build": executable file not found in $PATH

作者头像
老麦
发布2022-12-24 09:45:05
6550
发布2022-12-24 09:45:05
举报
文章被收录于专栏:Go与云原生Go与云原生

在搭建 gitlab-runner 的过程中,报错如下

代码语言:javascript
复制
ERROR: Job failed (system failure): prepare environment: Error response from daemon: OCI runtime create failed: container_linux.go:370: starting container process caused: exec: "gitlab-runner-build": executable file not found in $PATH: unknown (exec.go:57:0s). Check https://docs.gitlab.com/runner/shells/index.html#shell-profile-loading for more information

因为在 environment 中 扩展了 PATH 而导致 gitlab-runner-helper 中的 PATH 出现了异常。从而导致 gitlab-runner-build 这个脚本(命令) 无法被找到。

原因分析

在 gitlab 的定义中 environment 的行为有两种 , append(扩展) 或 overwrite(覆盖)。记住 覆盖 行为就可以了。

代码语言:javascript
复制
# 这个是错误配置
########
environment = [
    "DDK_HOME=/root/atlas500",
    
		# 这里是整个 Runner 的默认定义, 在 runner-help 调度之前, 所以这里的 $PATH 值为空
    "PATH=$PATH",
    # 因此这里的 PATH 覆盖了以后运行的 runner-help 环境变量
    "PATH=$ATLAS500_CROSS_BIN:$ATLAS500_HOST_BIN:$ATLAS500_DEVICE_CROSS_BIN:$PATH",
  ]

解决方案

为了解决这个问题, 可以使用 pre_build_script ,build 前的执行的初始化脚本。同样可以达到设置环境变量的目录。

由于本身是 脚本 所以, 可以做的事情有很多。

代码语言:javascript
复制
  # environment 的设置都是字面值。只会被解析一次。
  # `ATLAS500_HOST_BIN=$DDK_HOME/host/bin` 不会扩展为 `ATLAS500_HOST_BIN=/root/atlas500/host/bin`
  # 变量会覆盖 PATH=/path/bin:$PATH。由于之前 PATH 未定义, 所以结果为 PATH
  environment = [
    # "PATH=$PATH",
    "DDK_HOME=/root/atlas500",
  ]

  # pre_build_script 是一个 shell script
  # """ 多行引号
  pre_build_script = """
    export ATLAS500_HOST_BIN=$DDK_HOME/host/bin
    # ....

    export PATH=$ATLAS500_CROSS_BIN:$ATLAS500_HOST_BIN:$ATLAS500_DEVICE_CROSS_BIN:$PATH
  """
  

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 熊猫云原生Go 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原因分析
  • 解决方案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档