1

我无法为我的 node.js 项目运行 appspec.yml 文件中提到的脚本。也为 runas 用户提供了执行权限。此外,将 runas 更改为 ec2-user 也无济于事,因为脚本仅以 root 用户运行。Codedeploy 能够在我的 ec2 服务器上的指定位置部署工件而不会出现任何错误。有人可以帮我解决这个问题。(之后想用 Beanstalk 试试,但这也需要 appspec.yml 文件才能工作!!)

appspec.yml 文件

version: 0.0  
os: linux  
files:  
  - source: /  
    destination: /opt/dev  
permissions:
  - object: /opt/dev/scripts/UnzipResourceBundle.sh
    mode: 777
    owner: root
    type:
      - file  

hooks:  
  AfterInstall:  
    - location: scripts/UnzipResourceBundle.sh  
      timeout: 1800  
      runas: root 

UnzipResourceBundle 文件位置和权限(在 codedeploy 代理部署文件夹中):

/opt/codedeploy-agent/deployment-root/7f8a2414-b048-4468-a3f5-74efa04371c7/d- 
G7FCROQS2/deployment-archive/scripts/UnzipResourceBundle.sh


-rwxr-xr-x 1 root root 532 Feb 27 08:07 UnzipResourceBundle.sh

解压缩ResourceBundle.sh 文件:

shebang : #!/bin/bash  
script runs the forever service and migrates db scripts.
4

1 回答 1

0

我通过在 linux 服务器中创建 shell 脚本然后将其提交到 codecommit 来解决它。我已经在 Windows 机器上创建了文件,它们是以 DOS 格式创建的,因此 EC2 OS 无法找到或执行脚本文件,因为它正在寻找 unix 格式。所以,需要创建 Unix 格式的文件来执行它。我的代码管道现在工作正常!

于 2020-02-27T10:10:27.000 回答