如何在 buildspec.yml 文件工件中添加 .platform
How to add .platform in buildspec.yml file artifacts
如何将 .platform
目录包含在 buildspec.yml
文件的工件中?
背景:我想更改 Elastic Beanstalk 上的 nginx 设置 client_max_body_size
。我正在使用 CodePipeline 在 Elastic Beanstalk 上部署我的 war 文件。
下面是我的 repo 目录结构:
├── .checkstyle
├── .gitignore
├── .platform
│ ├── hooks
│ │ └── postdeploy
│ │ └── 01_nginx.sh
│ └── nginx
│ └── conf.d
│ └── proxy.conf
├── README.md
├── appspec.yml
├── buildspec.yml
├── mvnw
├── mvnw.cmd
├── nginx.sh
├── pom.xml
└── src
├── .platform
│ └── nginx
│ └── conf.d
│ ├── hooks
│ │ └── postdeploy
│ │ └── 01_nginx.sh
│ └── proxy.conf
├── main
│ ├── java
│ │ └── com
│ │ └── k12
│ │ └── caap
│ │ └── service
│ │ └── ServiceNAME
编辑:
buildspec.yml
不包括 artifact.zip
文件中的“.platform”目录。 proxy.conf
文件未添加到服务器。
buildspec.yml:
version: 0.2
phases:
install:
runtime-versions:
java: corretto11
pre_build:
commands:
- pip3 install awscli --upgrade --user
build:
commands:
- mvn clean compile package
artifacts:
files:
- target/*.war
- '.platform'
discard-paths: yes
以下是来自 EC2 /var/log/eb-engine.log
的日志
[INFO] Executing instruction: RunAppDeployPostDeployHooks
[INFO] Executing platform hooks in .platform/hooks/postdeploy/
[INFO] The dir .platform/hooks/postdeploy/ does not exist
[INFO] Finished running scripts in /var/app/current/.platform/hooks/postdeploy
01_nginx.sh 脚本的内容
echo "client_max_body_size 20M;" > /etc/nginx/conf.d/proxy.conf
systemctl restart nginx.service
存在三个错误配置和两个需要改进的提示:
在您的 buildspec.yml
中,您为神器设置了 discard-paths: yes
。这意味着所有文件将直接放在工件中,子目录将丢失。因此,你的nginx配置proxy.conf
不会在.platform/nginx/conf.d/proxy.conf
而是./proxy.conf
。 beantalk部署找不到的原因就是这个
只需删除选项 discard-paths: yes
并将您的 war 文件复制到根目录(并相应地更改工件文件路径)。这样,您的 war 文件将与以前位于同一位置。
您提供了工件文件路径'.platform'
(带引号)。根据documentation of the buildspec,需要是.platform/**/*
(不带引号)
同样,您必须将文件 appspec.yml
、buildspec.yml
以及任何 CodeDeploy 或 Beanstalk 需要的文件添加到工件文件路径。
我不确定你为什么有另一个 src/.platform
目录。请记住,它的结构是错误的,因为它在 .platform/nginx/conf.d
而不是 .platform
下有 hooks
目录。在这个路径下,也不会被beanstalk发现。
您只将脚本 01_nginx.sh
放在目录 hooks
中,该目录用于部署挂钩。您可能还想将它放在 confighooks
中,请参阅 documentation on beanstalk hooks。目前,如果 beantalk 仅在代码部署期间由于配置更改而需要再次部署,则脚本不会 运行。
如何将 .platform
目录包含在 buildspec.yml
文件的工件中?
背景:我想更改 Elastic Beanstalk 上的 nginx 设置 client_max_body_size
。我正在使用 CodePipeline 在 Elastic Beanstalk 上部署我的 war 文件。
下面是我的 repo 目录结构:
├── .checkstyle
├── .gitignore
├── .platform
│ ├── hooks
│ │ └── postdeploy
│ │ └── 01_nginx.sh
│ └── nginx
│ └── conf.d
│ └── proxy.conf
├── README.md
├── appspec.yml
├── buildspec.yml
├── mvnw
├── mvnw.cmd
├── nginx.sh
├── pom.xml
└── src
├── .platform
│ └── nginx
│ └── conf.d
│ ├── hooks
│ │ └── postdeploy
│ │ └── 01_nginx.sh
│ └── proxy.conf
├── main
│ ├── java
│ │ └── com
│ │ └── k12
│ │ └── caap
│ │ └── service
│ │ └── ServiceNAME
编辑:
buildspec.yml
不包括 artifact.zip
文件中的“.platform”目录。 proxy.conf
文件未添加到服务器。
buildspec.yml:
version: 0.2
phases:
install:
runtime-versions:
java: corretto11
pre_build:
commands:
- pip3 install awscli --upgrade --user
build:
commands:
- mvn clean compile package
artifacts:
files:
- target/*.war
- '.platform'
discard-paths: yes
以下是来自 EC2 /var/log/eb-engine.log
的日志[INFO] Executing instruction: RunAppDeployPostDeployHooks
[INFO] Executing platform hooks in .platform/hooks/postdeploy/
[INFO] The dir .platform/hooks/postdeploy/ does not exist
[INFO] Finished running scripts in /var/app/current/.platform/hooks/postdeploy
01_nginx.sh 脚本的内容
echo "client_max_body_size 20M;" > /etc/nginx/conf.d/proxy.conf
systemctl restart nginx.service
存在三个错误配置和两个需要改进的提示:
在您的
buildspec.yml
中,您为神器设置了discard-paths: yes
。这意味着所有文件将直接放在工件中,子目录将丢失。因此,你的nginx配置proxy.conf
不会在.platform/nginx/conf.d/proxy.conf
而是./proxy.conf
。 beantalk部署找不到的原因就是这个只需删除选项
discard-paths: yes
并将您的 war 文件复制到根目录(并相应地更改工件文件路径)。这样,您的 war 文件将与以前位于同一位置。您提供了工件文件路径
'.platform'
(带引号)。根据documentation of the buildspec,需要是.platform/**/*
(不带引号)同样,您必须将文件
appspec.yml
、buildspec.yml
以及任何 CodeDeploy 或 Beanstalk 需要的文件添加到工件文件路径。我不确定你为什么有另一个
src/.platform
目录。请记住,它的结构是错误的,因为它在.platform/nginx/conf.d
而不是.platform
下有hooks
目录。在这个路径下,也不会被beanstalk发现。您只将脚本
01_nginx.sh
放在目录hooks
中,该目录用于部署挂钩。您可能还想将它放在confighooks
中,请参阅 documentation on beanstalk hooks。目前,如果 beantalk 仅在代码部署期间由于配置更改而需要再次部署,则脚本不会 运行。