文档

如何使用流水线变量

更新时间:

了解流水线变量的使用

流水线内置环境变量

说明

系统内置环境变量以“EMAS_”开头,由EMAS系统预留占用,用户不可以定义EMAS_开头的环境变量。

  • EMAS_PIPELINE_NAME:当前运行的流水线名称

  • EMAS_PIPELINE_INSTANCE_ID:  当前运行的流水线实例id

  • EMAS_PIPELINE_JOB_ID:当前流水线阶段id

  • EMAS_PIPELINE_TIMESTAMP: 当前运行流水线开始时间(10位 unix时间戳)

  • EMAS_RUNNER_WORK_DIR:  安全容器内工作目录

  • EMAS_RUNNER_CODE_DIR:  安全容器内代码目录

  • EMAS_RUNNER_ARTIFACT_DIR:安全容器内产物目录

  • EMAS_RUNNER_OUTPUTS_FILE: 安全容器内输出文件路径

  • APP_KEY: 应用key

构建环境中内置的环境变量

Android

  • ANDROID_HOME

  • ANDROID_NDK_HOME

  • ANDROID_CMAKE_HOME

  • JAVA_HOME_8

  • JAVA_HOME_11

  • JAVA_HOME_17

  • JAVA_HOME

HarmonyOS

  • COMMANDLINE_TOOL_DIR

  • HDC_HOME

  • JAVA_HOME_17

  • JAVA_HOME

运行时的变量

在运行特定的插件时输出的变量,包含环境变量和普通变量,在后续步骤中可以进行引用。

代码克隆

变量名

变量类型

变量值说明

EMAS_SHA

环境变量

当前克隆的代码最新的commit id

EMAS_BRANCH

环境变量

当前克隆的代码的分支名

替换应用版本

变量名

变量类型

变量值说明

VERSION_NAME

环境变量

版本名,比如 1.0.0。

VERSION_CODE

环境变量

版本code,Android/HarmonyOS对应为VersionCode

上传构建产物

此插件会将用户构建的产物相关路径生成变量

变量名

变量类型

变量值说明

产物1相对路径

普通变量

存放在OSS的key

产物2相对路径

普通变量

存放在OSS的key

说明

何为产物相对路径?

以Android端为例,假设构建产物相对代码根目录路径为:app/build/outputs/apk/release/app-release.apk,在插件中填写的收集路径为:app/build/outputs,则产物相对路径为:apk/release/app-release.apk

自定义Bash

可以输出自定义的环境变量和普通变量,供后续步骤中引用。

输出自定义环境变量

......
echo "::set-env name=EXAMPLE_KEY::hello emas"
......

输出自定义普通变量

......
echo "example_key=hello emas" >> $EMAS_RUNNER_OUTPUTS_FILE
......
说明

如何使用自定义普通变量?

例如:添加一个Bash插件,将步骤ID命名为Bash_1,在Bash_1中输出一个名为example_key的普通变量;再次添加一个Bash插件,并将其步骤ID命名为Bash_2,在Bash_2的脚本内容添加:

echo ${{ steps.Bash_1.outputs['example_key'] }}

则会在Bash_2的步骤中打印example_key的值

变量的引用

不同类型的变量引用方式不同,需要根据实际情况进行使用。

使用变量的场景说明

1. 在流水线中作为入参使用

image

2. 在自定义的脚本中使用

echo "building..."
echo "VERSION = $VERSION"
echo "VERSION_CODE = $VERSION_CODE"
chmod +x ./gradlew
./gradlew clean assembleRelease

3. 在构建工具中进行引用

在Gradle中引用系统变量

各类型变量适配的场景说明

变量使用场景

变量类型

流水线入参

自定义脚本

构建工具引用

流水线内置环境变量

支持,示例:

${{ env.EMAS_PIPELINE_JOB_ID }}

支持,示例:

$EMAS_PIPELINE_JOB_ID

支持

构建环境中内置的环境变量

不支持

支持,示例:

$ANDROID_HOME

支持

运行时环境变量

支持,示例:

${{ env.VERSION_CODE }}

支持,示例:

$VERSION_CODE

支持

运行时普通变量

支持,示例:

${{ steps.Bash_1.outputs['example_key'] }}

不支持

不支持

关于跨阶段的变量引用

暂不支持