运行代码部署挂钩时找不到Go命令

时间:2019-04-25 22:36:57

标签: amazon-web-services go aws-code-deploy

您好,我正在尝试为golang应用程序创建CodeDeploy部署。我有一个使用我创建的AMI的自动伸缩组,该AMI具有我需要安装的所有库。当我尝试运行CodeDeploy时,它在我的after_install中存在错误:

LifecycleEvent - AfterInstall
Script - scripts/after_install.sh
[stderr]/opt/codedeploy-agent/deployment-root/a65d9a2e-fddd-471c-8ea1-c018792d00bd/d-4IKP3PP4Y/deployment-archive/scripts/after_install.sh: 
line 4: go: command not found

我知道go已安装在服务器上,我可以通过将其切入服务器并运行go命令来进行验证。最初,我以root用户身份运行after_install钩子,这就是为什么我认为它抱怨无法安装。

我将其更新为以ubuntu的身份运行,这是appspec文件

version: 0.0
os: linux
files:
  - source: ./
    destination: ./home/ubuntu/code
hooks:
  AfterInstall:
    - location: scripts/after_install.sh
      timeout: 180
      runas: ubuntu
  ApplicationStart:
    - location: scripts/application_start.sh
      timeout: 180
      runas: root

但是我仍然遇到找不到go命令的错误。我以ubuntu用户的身份通过SSH进入服务器,并且可以清楚地看到go已安装。

我更进一步,并运行了after_install.sh文件,它没有任何错误。我在这里做什么错了?

只是出于好奇,这里是我的after_install.sh文件

#!/bin/bash

cd /home/ubuntu/code/vibeify/cmd/vibeify
go build

1 个答案:

答案 0 :(得分:0)

如果仅在交互式外壳程序中可以使用go命令而没有完整的安装路径,请选中$HOME/.bashrc

这可能取决于操作系统的默认设置,但是某些操作系统的默认bashrc文件包含的脚本不会在非交互式shell中加载配置文件。

# open $HOME/.bashrc file
# and comment out these lines
case $- in
    *i*) ;;
      *) return;;
esac