如何在 Codemagic 脚本部分传递环境变量
How to pass environment variable in Codemagic scripts section
我正在使用 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:
部分得到的结果
New Build version ..
我知道如果我在一个部分下添加这些命令会起作用,但是有没有办法将我们在一个部分中创建的变量传递给其他部分?
这是 shell 解释器方面的限制。可以仅将环境变量从父进程传递到子进程(例如,如果您 运行 另一个 bash 脚本或任何命令)。
在您的情况下,每个 script
部分 运行 都是一个新的 shell 会话,您无权访问上一个会话的环境变量。要克服此限制,您可以使用文件来保存和读取版本值或将所有命令移动到相同的 script
部分。
我正在使用 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:
部分得到的结果New Build version ..
我知道如果我在一个部分下添加这些命令会起作用,但是有没有办法将我们在一个部分中创建的变量传递给其他部分?
这是 shell 解释器方面的限制。可以仅将环境变量从父进程传递到子进程(例如,如果您 运行 另一个 bash 脚本或任何命令)。
在您的情况下,每个 script
部分 运行 都是一个新的 shell 会话,您无权访问上一个会话的环境变量。要克服此限制,您可以使用文件来保存和读取版本值或将所有命令移动到相同的 script
部分。