指定位置不存在脚本 ||代码部署问题
Script does not exist at specified location || CodeDeploy issue
我正在通过 CodeDeploy 执行示例 powershell 脚本作为部署的一部分。以下是appsec.yml
的内容
version: 0.0
os: windows
files:
- source: \
destination: C:\Users\Administrator\testapp
hooks:
ApplicationStop:
- location: C:\Users\Administrator\testapp\stop.ps1
timeout: 300
BeforeInstall:
- location: C:\Users\Administrator\testapp\copy.ps1
timeout: 300
ApplicationStart:
- location: C:\Users\Administrator\testapp\start.ps1
timeout: 300
ValidateService:
- location: C:\Users\Administrator\testapp\validate.ps1
timeout: 300
但是当我开始使用代码部署进行部署时,出现以下错误:
Error code
ScriptMissing
Script name
C:\Users\Administrator\testapp\copy.ps1
Message
Script does not exist at specified location: C:/ProgramData/Amazon/CodeDeploy/85c23e0a-90f5-474e-9675-df3301a3b8f9/d-CODHEXCG5/deployment-archive/C:/Users/Administrator/testapp/copy.ps1
当我检查位置 C:/ProgramData/Amazon/CodeDeploy/85c23e0a-90f5-474e-9675-df3301a3b8f9/d-CODHEXCG5/deployment-archive 时,我看到工件是从 S3 存储桶下载的。
工件目录结构:
+ deployment-archive
+ scripts
- copy.ps1
- stop.ps1
- start.ps1
- validate.ps1
- appsec.yml
我认为文件没有从部署存档复制到我在 appsec 文件中提到的目标。但为什么它没有被复制,无法理解。
请指导
您的 files
部分完全正确(参见 AppSpec 'files' section),问题出在 hooks
部分的脚本。
在这个官方文档AppSpec 'hooks' section中,它说:
The location of scripts you specify in the 'hooks' section is relative to the root of the application revision bundle.
所以,你需要把绝对路径改成相对路径,比如:
hooks:
ApplicationStop:
- location: scripts\stop.ps1
timeout: 300
你的错误日志也告诉你同样的问题:
Script does not exist at specified location: C:/ProgramData/Amazon/CodeDeploy/85c23e0a-90f5-474e-9675-df3301a3b8f9/d-CODHEXCG5/deployment-archive/C:/Users/Administrator/testapp/copy.ps1
我正在通过 CodeDeploy 执行示例 powershell 脚本作为部署的一部分。以下是appsec.yml
的内容version: 0.0
os: windows
files:
- source: \
destination: C:\Users\Administrator\testapp
hooks:
ApplicationStop:
- location: C:\Users\Administrator\testapp\stop.ps1
timeout: 300
BeforeInstall:
- location: C:\Users\Administrator\testapp\copy.ps1
timeout: 300
ApplicationStart:
- location: C:\Users\Administrator\testapp\start.ps1
timeout: 300
ValidateService:
- location: C:\Users\Administrator\testapp\validate.ps1
timeout: 300
但是当我开始使用代码部署进行部署时,出现以下错误:
Error code
ScriptMissing
Script name
C:\Users\Administrator\testapp\copy.ps1
Message
Script does not exist at specified location: C:/ProgramData/Amazon/CodeDeploy/85c23e0a-90f5-474e-9675-df3301a3b8f9/d-CODHEXCG5/deployment-archive/C:/Users/Administrator/testapp/copy.ps1
当我检查位置 C:/ProgramData/Amazon/CodeDeploy/85c23e0a-90f5-474e-9675-df3301a3b8f9/d-CODHEXCG5/deployment-archive 时,我看到工件是从 S3 存储桶下载的。
工件目录结构:
+ deployment-archive
+ scripts
- copy.ps1
- stop.ps1
- start.ps1
- validate.ps1
- appsec.yml
我认为文件没有从部署存档复制到我在 appsec 文件中提到的目标。但为什么它没有被复制,无法理解。 请指导
您的 files
部分完全正确(参见 AppSpec 'files' section),问题出在 hooks
部分的脚本。
在这个官方文档AppSpec 'hooks' section中,它说:
The location of scripts you specify in the 'hooks' section is relative to the root of the application revision bundle.
所以,你需要把绝对路径改成相对路径,比如:
hooks:
ApplicationStop:
- location: scripts\stop.ps1
timeout: 300
你的错误日志也告诉你同样的问题:
Script does not exist at specified location: C:/ProgramData/Amazon/CodeDeploy/85c23e0a-90f5-474e-9675-df3301a3b8f9/d-CODHEXCG5/deployment-archive/C:/Users/Administrator/testapp/copy.ps1