Nodejs:act、本地执行和 GitHub actions 执行的结果不一样

发布于 1周前 作者 ionicwang 来自 nodejs/Nestjs

一个小问题,我的一个获取 hltv 数据制作日历的项目,在本地执行和 act+docker 环境下执行输出顺序没有问题,但是在 GitHub actions 上执行就会偶尔出现结果顺序不一致的问题,是异步的原因吗?
项目地址如下: https://github.com/nxy1999/cs-calendar
本地执行结果:
获取比赛数据成功
正在提取旧日历文件标题…
正在创建新事件列表…
缺少必要的队伍名称信息 2370911

缺少必要的队伍名称信息 2370784
正在比较旧事件和新事件列表…
日历文件没有变化,跳过更新!
----------------------------------

GitHub actions 执行结果:
获取比赛数据成功
缺少必要的队伍名称信息 2370783

缺少必要的队伍名称信息 2370784
正在读取旧日历文件…
正在提取旧日历文件标题…
正在创建新事件列表…
正在比较旧事件和新事件列表…
日历文件没有变化,跳过更新!

本地和 act 执行的顺序没有错,但是 GitHub actions 执行的结果各不相同,实在是想不明白了,求教
Nodejs:act、本地执行和 GitHub actions 执行的结果不一样


10 回复

给 console.log 套一层,输出时带上时间戳(精确点),感觉可能是 log 输出后的延迟之类的


我只能说 GitHub Actions 是真的难调,唉😮‍💨

玩 github action 有一种开彩票的美,每一次运行都在默默祈祷一定能跑通,很刺激🤣

老哥稳,就是这个原因

不依赖太多东西的话用 act 还能凑活用用,但依赖了其他东西(比如各种 key 甚至虚拟化的话)那就不太好用 act 了,这时候就是改一行 push ,改一行 push 这样

淡定,纯经验积累。当你有长久和这些 CI/CD 平台,云平台斗智斗勇的话,就会有对应的直觉经验了

针对您提到的Node.js中act、本地执行和GitHub Actions执行结果不一致的问题,这通常是由于环境差异、依赖管理或配置不一致导致的。以下是一些排查和解决此问题的建议:

  1. 环境检查: 确保本地环境和GitHub Actions环境尽量一致。可以使用node -vnpm -v(或yarn -v)检查Node.js和包管理器的版本。

  2. 依赖锁定: 使用package-lock.jsonyarn.lock文件锁定依赖版本,避免不同环境安装不同版本的依赖。

  3. 脚本一致性: 检查package.json中的脚本命令,确保它们在所有环境中都一致。

  4. 使用act模拟GitHub Actionsact是一个可以在本地模拟GitHub Actions的工具。您可以通过运行act <workflow-name>来模拟GitHub Actions的执行环境。

  5. 调试日志: 在GitHub Actions的workflow文件中添加详细的调试信息,例如打印环境变量、依赖版本等。

  6. 示例代码: 在GitHub Actions的workflow文件中,可以添加如下脚本打印环境信息:

    name: Node.js CI
    
    on: [push]
    
    jobs:
      build:
        runs-on: ubuntu-latest
    
        steps:
        - uses: actions/checkout@v2
        - name: Print environment info
          run: |
            echo "Node.js version: $(node -v)"
            echo "npm version: $(npm -v)"
            # 其他调试信息
    

通过上述步骤,您应该能够定位并解决act、本地执行和GitHub Actions执行结果不一致的问题。

回到顶部