codemagic - 如何在 Codemagic 脚本部分中传递环境变量
问题描述
我正在使用 Codemagic CI/CD 构建 Flutter 应用程序。在脚本部分下,我为每个功能使用单独的部分。像这样:
scripts:
- name: Fetch the build number
script: |
touch major.txt
touch minor.txt
touch patch.txt
major_version=$(curl --header "PRIVATE-TOKEN: ${GITLAB_PERSONAL_ACCESS_TOKEN}" "https://gitlab.com/api/v4/projects/${GITLAB_PROJECT_ID}/variables/DEVOPS_IOS_MAJOR_VERSION" | jq -r '.value')
minor_version=$(curl --header "PRIVATE-TOKEN: ${GITLAB_PERSONAL_ACCESS_TOKEN}" "https://gitlab.com/api/v4/projects/${GITLAB_PROJECT_ID}/variables/DEVOPS_IOS_MINOR_VERSION" | jq -r '.value')
patch_version=$(curl --header "PRIVATE-TOKEN: ${GITLAB_PERSONAL_ACCESS_TOKEN}" "https://gitlab.com/api/v4/projects/${GITLAB_PROJECT_ID}/variables/DEVOPS_IOS_PATCH_VERSION" | jq -r '.value')
- name: Print the build number
script: |
echo "New Build version $major_version.$minor_version.$patch_version"
但是在这里,我获得的 major_verison、minor_version 等的值没有传递到下一节,因为我编写了脚本来分离这些功能。这是我从Print the build number部分得到的结果:
新的构建版本..
我知道如果我在一个部分下添加这些命令会起作用,但是有没有办法将我们在一个部分中创建的变量传递给另一个部分?
解决方案
这是 shell 解释器方面的限制。只能将环境变量从父进程传递给子进程(例如,如果您运行另一个 bash 脚本或任何命令)。
在您的情况下,每个script
部分都运行一个新的 shell 会话,并且您无权访问上一个会话中的环境变量。要克服此限制,您可以使用文件来保存和读取版本值或将所有命令移动到同script
一部分。
推荐阅读
- clojure - 带有基本身份验证的 Composure + Swagger
- python-3.x - 使用 Python 连接到 HBase 的推荐方法是什么?
- arrays - 如何使用 ColdFusion 从 CSV 文件制作关联数组?
- react-native - ssl pinning 与 react native 和 ios
- c# - 如何首先连接到ef core数据库中的两个不同的数据库
- typescript - 如何在 vue 组合 api 组件中使用 jest 进行单元测试?
- arduino - 未编译... NarrowBand Twillio T-Mobile
- ios - didRegisterForRemoteNotificationsWithDeviceToken 在 swift 5 中不起作用
- c++ - 通过串口写入字符串(c++ Linux)
- python - Python3:模块'tabula'没有属性'read_pdf'