关于github:笔记-关于使用-calcitrunner-的-GitHub-Actions-配置

5次阅读

共计 1663 个字符,预计需要花费 5 分钟才能阅读完成。

需要, calcit-runner 目前提供了一个 cr_once 命令用来跑 CI 脚本.
原始的 cr 命令存在对 SDL2 和 fswatch 的依赖, 这个场景并不不便.
所以 cr_once 这个命令是专门编译提供的, 托管在 http://bin.calcit-lang.org/li… .

其余的我的项目运行 GitHub Actions 跑测试时, 就须要应用 cr_once 来执行.
思路上讲, 就是要把这个命令加载到容器当中, 而后给与可执行权限.
而后, 我的项目自身会有依赖, 就须要下载依赖, 寄存到指定的地位.

目前 calcit 相干我的项目, 依赖的治理形式只是指定门路加载文件, 所以间接用 git clone 就能够了.

按说现实的欠缺计划是 cr 命令自身不要依赖奇怪的货色, 间接能在 CI 运行,
而后通过扩大模块的计划, 也就是动静加载动态链接库或者其余模块引入扩大性能, 比方 SDL2,
其次模块治理也内置一个命令来做, 主动下载, 主动保护依赖关系 ….
目前 calcit 性能完好, 这些只好先不论了.

回到 GitHub Actions, 就须要加载二进制文件到容器, 我尝试了两个计划,

Dockerfile 计划(最终未采纳)

首先, GitHub 是反对在 Actions 里边应用容器的,
https://docs.github.com/en/fr…
依照教程, 我写 Dockerfile 打包一个容器, 这个容器外部蕴含 cr_once.
调试实现一些报错, 我也能在容器里失常运行起来了.

然而这个计划让我理解到 GitHub Actions 这个环境的一些限度,
或者说 docker 容器自身的限度, Dockerfile 里边定义的命令是在容器外部跑的.
而后容器运行实现, 对外部没有影响 (具体不晓得怎么配能力裸露能力).
于是我在我的项目里尝试 git clone, 那个容器外部算是能拜访到,
然而那个容器外部 git clone, 容器运行完结, 内部就拜访不到了.
这样也就是说, 最终运行是容器外部的, 我在内部就比拟难做各种配置了. 逻辑就不天然.

setup 计划

而后我去看一眼别的编程语言怎么做的, 比方 Nim 也是二进制执行文件:
https://github.com/jiro4989/s…
大抵思路是用 Node.js 脚本模式的 Action, 下载安装 Nim, 从而失去一个环境.
看了一下 nodejs 的思路, 也是这样的, 间接下载到以后环境当中装置.

而后我转变思路也改过来, 最终失去这样一个脚本:
https://github.com/calcit-lan…

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - name: wget
      run: mkdir ci-bin/ && wget -O ci-bin/cr_once http://repo.calcit-lang.org/binaries/linux/cr_once
    - name: "permission"
      run: chmod +x ci-bin/cr_once

    - name: "prepare modules"
      run: mkdir -p ~/.config/calcit/modules/ && cd ~/.config/calcit/modules/ && echo 'no deps'

    - name: "test"
      run: env=ci ./ci-bin/cr_once

这个步骤是:

  • 通过 wget 下载 cr_once 的可执行文件, 对应 Linux 环境的,
  • 创立 calcit-runner 应用的模块目录, 而后有依赖模块的话, 间接 clone 代码进去,
  • 运行可执行文件, 依照须要加上一个 env=ci 的环境变量加以辨别.

最终运行也是胜利了, 而且比拟不便依照须要改写定制. 满足目前的须要.

其余

我尝试的时候, Docker 应用 Ubuntu 默认零碎是什么都没有的,
GitHub 提供的容器倒是不便, git, wget 这些命令都在里边了, 就比拟省事了.
从原理上说, 装置 cr_once 这一步能够抽出来写成一个 Action,
那样应用的切实会不便很多, 而且不便后续降级, 只有升版本号就好了.
临时先这样.

正文完
 0