Jingbei Li
Jingbei Li
`action-extra-x86_64-build`第一版出现了: 已更新第二版 ```sh #!/bin/sh set -e export TOKEN= repo=petronny/arch4edu package=$(realpath .) package=$(basename $package) uuid=$(uuidgen) curl -sS -X POST https://api.github.com/repos/${repo}/dispatches \ -H "Accept: application/vnd.github.everest-preview+json" \ -H "Authorization: token $TOKEN" \ --data...
> 看了一下,实现 questioncb 并不困难。需要的话我有空 pr 一个。 能顺便帮忙pr一个`pacman -Sww package`就可以无视依赖下载包么? 当时找了半天发现竟然没有这个功能。。。 > 你是要 git clean -xfd? 下周再看[捂脸]
> pacman -Swd 不行么? 貌似是 pacman -Swdd > 但我shell不太会写argparse 我打算zsh试试。。。
发现了一个小问题 list all artifacts 这个API得通过翻页才能列出所有的 artifacts 目前这个API在以下几处用到了: 1. 监控某任务是否已经完成(即pkgname.uuid文件有没有出现) 这个只需要看最新的artifacts应该就行了,比如前100个吧 这个只在本地运行 1. 从所有artifact里找一个最新的某包 这个只在workflow run里运行 这个很要命,所有包都查一遍肯定是不好的 我想了以下解决办法: 1. 首先不需要从所有artifact里找,从2天内的artifact里找肯定没问题了 1. 在所有workflow runs之间传递一个artifacts list文件 每个workflow run启动开始, 先从所有artifact里找一个最新的artifacts list,除了首次运行之外应该不会翻很多页了 维护artifacts list到最新,且把2天外的老artifacts从list中去掉 最后上传...
应该会有很多吧 一个包传4个文件,假设每天100个包,60天,100个每页,总计240页。
不过可以限制到只找2天内的。8页吧。 虽然我觉得还是有点多 100个包都找8页也800次请求了,并且可能会比100个包多。。。 因为绝大多数都能搬上去
我想了一下其实貌似可以不冲突? 如果每个workflow run最后都只提交自己这个run里的artifacts的话 肯定不会冲突 感觉可以 ```sh while true do git push && break || git pull --rebase done ``` 有个问题,这个repo可不可以和存lilac.py的repo是一个?就是和lilac.py存一块 感觉上是同一个的话比较符合认识? 打开目录的同时就能查到文件下载链接,上次运行的workflow_id什么的 就是多存一个artifacts.json和(可选)workflow_id
> 现在有4个从artifact下载东西的sh... 4合1了。https://github.com/petronny/action-tools/blob/master/download-file-from-artifact.zsh
[`action-extra-x86_64-build`第二版](https://github.com/archlinuxcn/lilac/issues/149#issuecomment-643305640) 能正常工作了 现在 arch4edu 的 ncurses5-compat-libs 和 vim-youcompleteme-git 就是`action-extra-x86_64-build` 打包的了,调用的是`petronny/arch4edu`这个马甲的action,产生的commit见下 https://github.com/petronny/arch4edu/actions/runs/134418854 https://github.com/arch4edu/arch4edu/commit/91475c31b5894716a2aa8f7965026df88f387829 https://github.com/petronny/arch4edu/actions/runs/134422382 https://github.com/arch4edu/arch4edu/commit/b2c8fce3d6ac353ac3b9baa5e498da0c58447071 后续对接也正常。 > 就是多存一个`artifacts.json`和(可选)`workflow_id` 我目前就是把这俩都存了。我想了一下还是存repo里最好。 因为会有多个马甲repo来打包,要跨repo维护这个。 多个马甲比如: * action-runner-x86_64 这个就是调用github的runner * action-runner-x86_64-powerful 这个是调用self-hosted runner,比如archlinuxcn-build-e5 有几个self-hosted runner就是几并发 可以不用docker,直接在原生环境运行lilac.py,cache什么的能省很多事。...
> 怎么同时跑多个同一 prefix 的 chroot? 我猜`extra-x86_64-build -- -l session2` 应该是会在/var/lib/archbuild/extra-x86_64/session2里跑 > 可是万一并行的几个包占用空间大、/var/lib/archbuild 满了咋办? 是个问题。初步想法是先限制一下并行的数量。比如只允许开2个session,有表A的话可以查,多了就等着。可以解决一部分问题吧。。。 进一步的话可以在lilac.*里写一下预估的资源需求(比如写space_requirement_g=5),如果空间磁盘不够5g就也等着,如果此时表A里是空的那么就可以发out of space的邮件了