我正在使用适用于jenkins的AWS CodeDeplo插件部署ruby代码。 Jenkins正在触发部署并且部署成功。成功我的意思是说将文件复制到服务器是成功的。
服务器在ubuntu 14.04上运行Ruby2.3.1
部署后,有待执行的.sh文件。这些详细信息通过appspec.yml文件维护。在appspec.yml文件中提到要以用户身份执行:devops
.sh文件正在执行,但结果我们没有成功。
问题如下: 1. .sh文件中的命令包括gem安装。 2.执行的执行导致错误,因为它总是指的是ruby 1.9.3而不是2.3.1
我们分析了目录/代码部署日志文件&发现如下: 1. codedeploy代理目录由具有4位数字值的用户拥有,例如.3456 2.打印ruby-v时打印为1.9.3,即使从终端打印也始终显示为2.3.1 3.日志显示某个gem安装失败的错误,因为我们没有权限在gems / 1.9.1目录中写入
当我们从终端执行.sh文件时,执行总是成功。
有些人可能会关注我做错了吗?
答案 0 :(得分:1)
CodeDeploy代理没有shell env。
由于我在部署代码的机器上使用rvm,并且在我的.sh文件之上使用
#!/bin/bash
source /etc/profile.d/rvm.sh
rvm use 2.3.0
#rest of your commands
这对我来说很好。