您好,我正在尝试为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
答案 0 :(得分:0)
如果仅在交互式外壳程序中可以使用go
命令而没有完整的安装路径,请选中$HOME/.bashrc
。
这可能取决于操作系统的默认设置,但是某些操作系统的默认bashrc文件包含的脚本不会在非交互式shell中加载配置文件。
# open $HOME/.bashrc file
# and comment out these lines
case $- in
*i*) ;;
*) return;;
esac