AWS CodeDeploy的疑难问题小记
AWS官方文档:CodeDeploy AppSpec File reference - AWS CodeDeploy (amazon.com)
appspec.yml中location指定的脚本文件
当CodeDeploy Agent执行location指向脚本文件的时候,有两点:
1. 脚本文件的全路径是什么?
对于Linux系统,CodeDeploy Agent会把所有源文件脚本文件放到一个,形如
/opt/codedeploy-agent/deployment-root/76bdfdd2-91c7-4d88-84e0-6ebe4d25bfa6/d-6BTWU2CDK/deployment-archive
的路径下
“76bdfdd2-91c7-4d88-84e0-6ebe4d25bfa6/d-6BTWU2CDK/”这部分每个人都不一样,不要照抄。
如果appspec.yml中location的值是“a.sh”,那么CodeDeploy Agent就会去找一个全路径为
/opt/codedeploy-agent/deployment-root/76bdfdd2-91c7-4d88-84e0-6ebe4d25bfa6/d-6BTWU2CDK/deployment-archive/a.sh
的脚本去执行。
2. 文件的执行路径是什么?
CodeDeploy Agent执行脚本的执行路径是根目录: /。
可以在脚本开始加入如下命令调整成上述的脚本所在文件夹作为执行路径:
cd `dirname $0`
appspec.yml中的runas
当指定runas的时候,CodeDeploy Agent会以runas的值作为用户,去执行脚本。但是建议在脚本中加入如下一行:
source /etc/profile
去获取环境变量。否则很容易报“命令找不到”这样的错误。
具体source的profile文件,根据实际情况调整。