当前位置: 首页 > news >正文

GitHub Actions中steps下面的Setup environment设置的环境变量不能在后面步骤使用问题处理

文章目录

    • 问题
    • 解决方法
      • 方法一:在 job 级别使用 `env:` 统一设置
      • 方法二:用 `$GITHUB_ENV` 文件在一个步骤设置,供后续步骤使用
    • 具体效果


问题

在GitHub中使用CI工具进行测试,发现 steps下面的 Setup environment 设置的环境变量不能在后面(Test basic collection"步骤)使用。

如:这个mysql的ci的部分配置如下:

……steps:- name: Checkout codeuses: actions/checkout@v4- name: Setup environmentrun: |export MYSQL_PATH=/usr/bin/mysqlexport MYSQL_HOST=127.0.0.1export MYSQL_PORT=3306export MYSQL_USER=rootexport MYSQL_PWD=rootexport MYSQL_DATABASE=test_dbexport OUTPUT_FILE=processlist.log- name: Install MySQL clientrun: sudo apt-get install -y mysql-client- name: Test basic collectionrun: |# 授予PROCESS权限mysql -h127.0.0.1 -P3306 -uroot -proot -e "GRANT PROCESS ON *.* TO 'root'@'%';" test_dbexport MYSQL_PATH=/usr/bin/mysqlexport MYSQL_HOST=127.0.0.1export MYSQL_PORT=3306export MYSQL_USER=rootexport MYSQL_PWD=rootexport MYSQL_DATABASE=test_dbexport OUTPUT_FILE=processlist.log……echo ${MYSQL_PATH}- name: Test basic collection2run: |# 授予PROCESS权限mysql -h127.0.0.1 -P3306 -uroot -proot -e "GRANT PROCESS ON *.* TO 'root'@'%';" test_dbexport MYSQL_PATH=/usr/bin/mysqlexport MYSQL_HOST=127.0.0.1export MYSQL_PORT=3306export MYSQL_USER=rootexport MYSQL_PWD=rootexport MYSQL_DATABASE=test_dbexport OUTPUT_FILE=processlist.log……echo ${MYSQL_PATH}
……

可以发现export这一块其实是重复的,但是如果只在Setup environment 步骤设置,发现后面的步骤取不到值;如果只在具体步骤设置,就需要设置多个相关的配置,比较冗余。目标是设置一个就行。

解决方法

后面直接在copilot得到了答案:


在 GitHub Actions 的 workflow 中,每个 run 步骤默认会在一个新的 shell 环境中执行。

因此,“Setup environment”步骤里用 export 命令设置的环境变量,只在该步骤内有效,后续的步骤(比如 “Test basic collection”)是无法直接继承这些变量的。

如何让环境变量在所有步骤都有效?

这里介绍两个推荐方法:

方法一:在 job 级别使用 env: 统一设置

jobs:test-mysql-versions:runs-on: ubuntu-latestenv:MYSQL_PATH: /usr/bin/mysqlMYSQL_HOST: 127.0.0.1MYSQL_PORT: 3306MYSQL_USER: rootMYSQL_PWD: rootMYSQL_DATABASE: test_dbOUTPUT_FILE: processlist.logsteps:# 其它步骤...

这样所有步骤都能直接使用这些环境变量。

方法二:用 $GITHUB_ENV 文件在一个步骤设置,供后续步骤使用

- name: Setup environmentrun: |echo "MYSQL_PATH=/usr/bin/mysql" >> $GITHUB_ENVecho "MYSQL_HOST=127.0.0.1" >> $GITHUB_ENVecho "MYSQL_PORT=3306" >> $GITHUB_ENVecho "MYSQL_USER=root" >> $GITHUB_ENVecho "MYSQL_PWD=root" >> $GITHUB_ENVecho "MYSQL_DATABASE=test_db" >> $GITHUB_ENVecho "OUTPUT_FILE=processlist.log" >> $GITHUB_ENV

这样后续步骤就可以直接用这些变量,例如 ${MYSQL_PATH} 等。

具体效果

以这个mysql为例:

方法1可参考这个文件:https://github.com/yansheng836/mysql_collect_processlist/blob/main/.github/workflows/mysql-ci-8.0.43.yml

方法2可参考这个文件:https://github.com/yansheng836/mysql_collect_processlist/blob/main/.github/workflows/mysql-ci.yml


参考:github copilot


文章转载自:

http://JCf5vg7Y.xhftj.cn
http://HA4qvqM8.xhftj.cn
http://2c4PmeXd.xhftj.cn
http://I1BtDS2N.xhftj.cn
http://QupvJUF3.xhftj.cn
http://UfZnvZey.xhftj.cn
http://dfDpeSlM.xhftj.cn
http://i4KFfbkC.xhftj.cn
http://z8DRviaj.xhftj.cn
http://PP3ESMk9.xhftj.cn
http://Bna8HvAn.xhftj.cn
http://hUWTOKyr.xhftj.cn
http://6vxCeKC1.xhftj.cn
http://CE8Hy2fX.xhftj.cn
http://xtBzeYHW.xhftj.cn
http://MCacQvIo.xhftj.cn
http://y7jhdblz.xhftj.cn
http://ogiOYOQu.xhftj.cn
http://UdLIM2Fj.xhftj.cn
http://YlScABu3.xhftj.cn
http://sT8auaBM.xhftj.cn
http://VTFIPri7.xhftj.cn
http://NAcrnvxS.xhftj.cn
http://dQDvN8M9.xhftj.cn
http://jCP5SCQO.xhftj.cn
http://D1vG00iW.xhftj.cn
http://WGQ2604t.xhftj.cn
http://NvUSOlpI.xhftj.cn
http://O4RcEmDv.xhftj.cn
http://upPzw4Wz.xhftj.cn
http://www.dtcms.com/a/377362.html

相关文章:

  • YOLOv5实战-GPU版本的pytorch虚拟环境配置
  • 苍穹外卖项目实战(day7-2)-购物车操作功能完善-记录实战教程、问题的解决方法以及完整代码
  • 【VsCode】离线状态下安装插件
  • 浏览器开发CEFSharp (十七)网页自定义下载—仙盟创梦IDE
  • Nodejs读取目录下面的文件
  • docker 重命名镜像
  • 「CTF」青少年CTF·雏形系统
  • 光子计算芯片实战:Lightmatter Passage互连架构性能评测
  • 实时多模态电力交易决策系统:设计与实现
  • 条码控件Aspose.BarCode教程:使用 C# 构建 Code11 条形码生成器
  • 分布式专题——7 Redis Stack扩展功能
  • QuestionPicture:一键批量改图,支持压缩图片
  • Prompt提示词(保姆级教程)
  • SSM病房管理信息系统o45h4(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • SpreadJS:让多源数据筛选排序如 Excel 般便捷高效
  • ARM内存映射与启动地址重映射机制解析
  • 如何使用 QuickAPI 快速连接 MySQL 数据库并发布 RESTful API
  • PAT 1104 Sum of Number Segments
  • LeetCode 热题 3.无重复字符的最长子串
  • 抓虫:unshared后执行命令dump
  • 自定义类型:结构体、枚举、联合
  • SnowPro Core Certification
  • Java 大视界 -- Java 大数据机器学习模型在金融市场情绪分析与投资决策辅助中的应用
  • C++ 学习与 CLion 使用:(十三)分别提供了 CLion 中使用 cout 和 cin 中文乱码的问题
  • 容器编排工具Docker Copmose
  • 黑马点评高级篇第7节课 输入INFO replication 显示0个从节点,但是在7002节点又显示它已经是7001节点的从节点了
  • 单例模式(C++)详解(1)
  • 回声消除AEC初探
  • 9 如何评估 AI 产品的效果
  • C6.9:三极管的四种常用晶体管放大器的简述