由于成本原因,我使用 EC-2,其中生产和登台都驻留在单独的虚拟主机上:
对于我的部署,我使用单个 codeploy 应用程序,但为每个环境使用单独的部署组。我的 appspec.yml 是:
version: 0.0
os: linux
files:
- source: /
destination: /var/www/staging
hooks:
ApplicationStop:
- location: deploy/application-stop.sh
runas: root
BeforeInstall:
- location: deploy/clean-files.sh
runas: root
AfterInstall:
- location: deploy/install_app.sh
runas: root
ApplicationStart:
- location: deploy/application-start.sh
runas: root
如何根据部署组指定必要的部署路径。有没有办法进行参数化部署,以便我可以设置部署应用程序的必要路径?
我遵循的方法如下:
在构建步骤中,我定义了一个名为
ENVIRONMENT
的纯文本环境变量,然后在构建步骤中我执行了以下操作(我使用 aws codebuild):
cp appspec.$ENVIRONMENT.yml appspec.yml
我放置了 2 个 appspec 文件:
appspec.production.yml
appspec.staging.yml
并在
ENVIRONMENT
变量上放置适当的值:
production
用于生产staging
用于舞台然后在我的构建规范中部署的工件上,我放置了:
# rest ob buildspec.
artifacts:
files:
# rest of files here
- appspec.yml
此外,在我的例子中,每个应用程序规范都会从以下文件夹中检索必要的 Webhook 脚本:
deploy/production
用于生产deploy/staging
用于舞台对于新环境(名为
development
)我可以:
ENVIRONMENT
放入 development
总而言之,这个想法是使用多个具有命名约定的appspec文件,并将正确的文件复制到预期的
appspec.yml
文件中
对于构建脚本,我认为我可以让每个脚本加载一个配置文件或
source
一个使用现有环境变量的配置脚本,以便加载适当的值。但我还没有测试过。