GitHub Actions run块设置的变量未在printenv中显示问题咨询
原因说明
该现象是Bash的默认特性,和GitHub Actions无关:
- 直接使用
变量名=值的语法定义的是shell本地变量,仅在当前shell上下文可访问,不会被加入进程的环境变量列表,因此打印系统环境变量的printenv命令无法读取到这类变量。 - 你用
echo能正常输出变量值,是因为echo是当前shell的内置命令,可以直接读取shell本地变量。
修复方案
仅需要当前run块内的命令能识别为环境变量
在变量定义前加export关键字,将本地变量提升为环境变量即可,修改后代码如下:
export INSTALL_DATE=$(date -d "`date +%Y%m01` -12 month" +%Y-%m-%d) echo "Here is install date $INSTALL_DATE" export IOS_GAME="${{ env.GAME }}_IOS_PROD" export ANDROID_GAME="${{ env.GAME }}_ANDROID_PROD" envsubst < get-data/training-data.sql cat get-data/training-data.sql printenv
修改后printenv就能正常输出这三个变量。
需要后续其他步骤也能使用这些变量
将变量写入GitHub Actions提供的$GITHUB_ENV环境文件即可,写法如下:
echo "INSTALL_DATE=$(date -d "`date +%Y%m01` -12 month" +%Y-%m-%d)" >> $GITHUB_ENV echo "IOS_GAME=${{ env.GAME }}_IOS_PROD" >> $GITHUB_ENV echo "ANDROID_GAME=${{ env.GAME }}_ANDROID_PROD" >> $GITHUB_ENV
写入完成后,后续所有步骤都可以通过${{ env.变量名 }}或者shell中直接调用$变量名读取对应值。
内容的提问来源于stack exchange,提问作者user14328853
相关产品推荐
相关产品推荐

