AWS CodeDeploy的疑难问题小记
管方文档:CodeDeploy AppSpec File reference - AWS CodeDeploy (amazon.com)
appspec.yml中location指定的脚本文件
当CodeDeploy Agent执行这个脚本文件的时候,有两点:
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执行location指定脚本的执行路径是根目录: /。
可以在脚本开始加入如下命令调整成上述的脚本所在文件夹作为执行路径:
cd `dirname $0`
appspec.yml中的runas
当指定runas的时候,CodeDeploy Agent会以runas的值作为用户,去执行脚本。但是建议先执行一下:
source /etc/profile
去获取环境变量。否则很容易报命令找不到这样的错误。
具体source的配置文件,根据实际情况调整。