AWS CodeDeploy AfterInstall 脚本正在 运行 来自代码部署代理目录
AWS CodeDeploy AfterInstall script is being run from code-deploy agent dir
我正在尝试 运行 AWS 代码部署中的 AfterInstall 脚本,但它是 运行 来自 /opt/codedeploy-agent/ 目录而不是我的应用程序目录。
这是 appspec.yml 文件的样子:
version: 0.0
os: linux
files:
- source: /
destination: /tmp/epub
hooks:
AfterInstall:
- location: server/install-packages.sh
runas: root
如您所见,这是一个基本示例。
现在,bash 脚本如下所示:
#!/bin/bash
npm install
我只想安装 npm,仅此而已。
很遗憾,我遇到了错误:
LifecycleEvent - AfterInstall
Script - server/install-packages.sh
[stderr]npm ERR! install Couldn't read dependencies
[stderr]npm ERR! Linux 3.13.0-48-generic
[stderr]npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install"
[stderr]npm ERR! node v4.2.1
[stderr]npm ERR! npm v2.14.7
[stderr]npm ERR! path /opt/codedeploy-agent/package.json
[stderr]npm ERR! code ENOPACKAGEJSON
[stderr]npm ERR! errno -2
[stderr]npm ERR! syscall open
[stderr]
[stderr]npm ERR! package.json ENOENT: no such file or directory, open '/opt/codedeploy-agent/package.json'
[stderr]npm ERR! package.json This is most likely not a problem with npm itself.
[stderr]npm ERR! package.json npm can't find a package.json file in your current directory.
[stderr]
[stderr]npm ERR! Please include the following file with any support request:
[stderr]npm ERR! /opt/codedeploy-agent/npm-debug.log
我正在尝试不同的 appspec.yml 配置,例如在位置路径的开头添加 运行as 或添加“/”。它一直在尝试从 /opt/codedeoploy-agent/ 目录 运行。
无奈之下,我设置了脚本的绝对路径,但后来我得到了:
Script does not exist at specified location: /tmp/epub/server/install-packages.sh
这真的很烦人,因为我正在根据文档做所有事情,但可能我遗漏了一些非常非常小的东西!
谢谢
好的,
所以我发现,codedeoloy-agent 是 运行 AfterInstall(可能还有所有其他步骤),来自代理在部署实例上创建的临时目录,所以在我的情况下,我必须通过 cd-ing 修改 bash 脚本到正确的目录:
#!/bin/bash
cd /tmp/epub/server/
npm install
我正在尝试 运行 AWS 代码部署中的 AfterInstall 脚本,但它是 运行 来自 /opt/codedeploy-agent/ 目录而不是我的应用程序目录。
这是 appspec.yml 文件的样子:
version: 0.0
os: linux
files:
- source: /
destination: /tmp/epub
hooks:
AfterInstall:
- location: server/install-packages.sh
runas: root
如您所见,这是一个基本示例。
现在,bash 脚本如下所示:
#!/bin/bash
npm install
我只想安装 npm,仅此而已。
很遗憾,我遇到了错误:
LifecycleEvent - AfterInstall
Script - server/install-packages.sh
[stderr]npm ERR! install Couldn't read dependencies
[stderr]npm ERR! Linux 3.13.0-48-generic
[stderr]npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install"
[stderr]npm ERR! node v4.2.1
[stderr]npm ERR! npm v2.14.7
[stderr]npm ERR! path /opt/codedeploy-agent/package.json
[stderr]npm ERR! code ENOPACKAGEJSON
[stderr]npm ERR! errno -2
[stderr]npm ERR! syscall open
[stderr]
[stderr]npm ERR! package.json ENOENT: no such file or directory, open '/opt/codedeploy-agent/package.json'
[stderr]npm ERR! package.json This is most likely not a problem with npm itself.
[stderr]npm ERR! package.json npm can't find a package.json file in your current directory.
[stderr]
[stderr]npm ERR! Please include the following file with any support request:
[stderr]npm ERR! /opt/codedeploy-agent/npm-debug.log
我正在尝试不同的 appspec.yml 配置,例如在位置路径的开头添加 运行as 或添加“/”。它一直在尝试从 /opt/codedeoploy-agent/ 目录 运行。
无奈之下,我设置了脚本的绝对路径,但后来我得到了:
Script does not exist at specified location: /tmp/epub/server/install-packages.sh
这真的很烦人,因为我正在根据文档做所有事情,但可能我遗漏了一些非常非常小的东西!
谢谢
好的,
所以我发现,codedeoloy-agent 是 运行 AfterInstall(可能还有所有其他步骤),来自代理在部署实例上创建的临时目录,所以在我的情况下,我必须通过 cd-ing 修改 bash 脚本到正确的目录:
#!/bin/bash
cd /tmp/epub/server/
npm install