Lia*_*van 5 deployment bitbucket web-deployment amazon-web-services aws-code-deploy
我有网站,存储在AWS EC2服务器上.
我们有2台服务器,一台用于生产环境,另一台用于开发和登台环境.
位于不同文件夹中的开发和登台环境.例如存储的开发env,存储的/var/www/development存储时/var/www/staging.
我想使用AWS CodeDeploy直接从bitbucket上传文件.我放了AppSpec文件,它将源代码复制到/var/www/html文件夹并安装所有依赖项和配置.但我想我AppSpec文件的源代码复制到/var/www/development或/var/www/staging取决于开发组,被选择的.
有没有办法做到这一点,或者,在我的情况下有一些更好的方法?
这appspec.yml有点不灵活,因此使用以下内容将代码部署到同一实例上的不同文件夹中。
version: 0.0
os: linux
files:
- source: /
destination: /var/www/my-temp-dir
permissions:
- object: /var/www/my-temp-dir
owner: ec2-user
group: ec2-user
hooks:
BeforeInstall:
- location: ci/integrations-deploy-pre.sh
runas: root
AfterInstall:
- location: ci/integrations-deploy-post.sh
runas: root
Run Code Online (Sandbox Code Playgroud)
在我的integrations-deploy-post.sh文件中,我然后使用 CodeDeploy 环境变量将文件移动到我需要的位置;
#!/bin/bash
if [ "$DEPLOYMENT_GROUP_NAME" == "Staging" ]
then
cp -R /var/www/my-temp-dir /var/www/my-staging-dir
chown -R ec2-user:ec2-user /var/www/my-staging-dir
# Insert other commands that need to run...
fi
if [ "$DEPLOYMENT_GROUP_NAME" == "UAT" ]
then
cp -R /var/www/my-temp-dir /var/www/my-uat-dir
chown -R ec2-user:ec2-user /var/www/my-uat-dir
# Insert other commands that need to run...
fi
Run Code Online (Sandbox Code Playgroud)
注意:在我的integrations-deploy-post.sh你还需要你想要在生产中运行的命令。为简单起见删除。
更改 AppSpec 或自定义脚本行为的推荐方法是利用CodeDeploy 代理提供的环境变量。您有权访问部署组名称和应用程序名称。
if [ "$DEPLOYMENT_GROUP_NAME" == "Staging" ]; then
# Copy to /var/www/staging
elif [ "$DEPLOYMENT_GROUP_NAME" == "Development" ]; then
# Copy to /var/www/development
elif [ "$DEPLOYMENT_GROUP_NAME" == "Production" ]; then
# Copy to /var/www/html
else
# Fail the deployment
fi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2055 次 |
| 最近记录: |