了解流水线变量的使用
流水线内置环境变量
系统内置环境变量以“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. 在流水线中作为入参使用
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'] }} | 不支持 | 不支持 |
关于跨阶段的变量引用
暂不支持