bash - 如何跨 AWS CodeDeploy 步骤共享环境变量?
问题描述
我正在制定一种利用 AWS CodeDeploy 的新部署策略。我从事的项目有许多环境(例如:预生产、生产)和实例(例如:EMEA、US、APAC)。
我的基本脚手架工作正常,但我注意到在BeforeInstall挂钩中设置的环境变量无法从其他步骤(例如AfterInstall)中检索。
有没有办法在 AWS CodeDeploy 步骤之间共享环境变量?
appspec.yml 的内容:
version: 0.0
os: linux
files:
- source: /
destination: /tmp/code-deploy
hooks:
BeforeInstall:
- location: utils/delivery/aws/CodeDeploy/before_install.sh
timeout: 300
AfterInstall:
- location: utils/delivery/aws/CodeDeploy/after_install.sh
timeout: 300
ApplicationStart:
- location: utils/delivery/aws/CodeDeploy/application_start.sh
timeout: 300
ValidateService:
- location: utils/delivery/aws/CodeDeploy/validate_service.sh
timeout: 300
我在before_install.sh中设置了一个环境变量:
export ENVIRONMENT=preprod
如果我在after_install.sh中引用它:
$ echo $ENVIRONMENT
$
没有什么。
感谢您对此的帮助!
解决方案
您可以将其export
放入一个临时文件,然后放入source
该文件。所以在 before_install.sh 中:
ENVIRONMENT="preprod"
echo "export ENVIRONMENT=\"$ENVIRONMENT\"" > "/path/to/file"
注意:使用此方法,您不再导出 before_install.sh 中的变量。您只是在 after_install.sh 中编写要获取的文件:
source "/path/to/file"
echo "$ENVIRONMENT"
推荐阅读
- c++ - 使用 TriangleStrip 渲染单个三角形会渲染一个矩形
- android - 如何在 Kotlin 中显示来自 ArrayList 的随机数据?
- c++ - 如何将txt文件中的数字放入C++中的向量中
- jquery - 将用户通过引导模式上传的选定图像传递给控制器方法
- html - 将样式添加到 asp.net 按钮
- flutter - 来自完整开发人员指南课程 Udemy 165 的 Flutter Bloc 模式问题
- nginx - NGINX API 请求使用错误的 IP 值
- rust - 从拥有实体和借用实体的功能中移出?
- python - 使用 Sqlite 和 PyQT5 制作 TreeView
- c#-4.0 - 替换字符串中的数字