【问题标题】:How to pass environment variable in Codemagic scripts section如何在 Codemagic 脚本部分中传递环境变量
【发布时间】:2021-10-25 05:03:00
【问题描述】:

我正在使用 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 等值并没有传递到下一部分,因为我编写了脚本来分离这些功能。这是我从打印内部版本号部分得到的结果:

新的构建版本..

我知道如果我在一个部分下添加这些命令会起作用,但是有没有办法将我们在一个部分中创建的变量传递给另一个部分?

【问题讨论】:

    标签: codemagic


    【解决方案1】:

    这是 shell 解释器方面的限制。只能将环境变量从父进程传递给子进程(例如,如果您运行另一个 bash 脚本或任何命令)。

    在您的情况下,每个 script 部分都会运行一个新的 shell 会话,并且您无法访问上一个会话中的环境变量。要克服此限制,您可以使用文件来保存和读取版本值或将所有命令移至同一 script 部分。

    【讨论】:

    • 你能举个例子说明如何在文件中读取和写入变量吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    相关资源
    最近更新 更多