[分享创造] 一个让脚本直接跑在 GitHub Runner 上的 JetBrains IDE 插件 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
foyoux
V2EX    分享创造

[分享创造] 一个让脚本直接跑在 GitHub Runner 上的 JetBrains IDE 插件

  •  
  •   foyoux 1 月 31 日 566 次点击

    分享一个我最近做的项目: https://github.com/foyoux/github-action-runner

    这是一个 JetBrains IDE 插件,用于在 GitHub Runner 上直接执行脚本。


    起因

    做这个东西的起因是我需要经常同步镜像,将 Docker Hub 中的镜像同步到国内镜像仓库。

    如果使用自己电脑同步,速度很慢,瓶颈主要在上传。

    如果是定期任务或者固定的镜像,大家很容易想到用 GitHub Action 做,我们也是这么做的。

    但我的场景是比较零碎的,不是固定任务。

    当镜像较小时,就直接用内部服务器做了;但镜像很大的话,会非常慢。

    于是我专门建了一个私有仓库,每次要做的事情大概是:

    1. 修改脚本
    2. 提交并推送
    3. 去 GitHub Actions 页面手动触发

    这样下来确实快了不少,但整个流程很繁琐,也谈不上优雅。


    一些改进尝试

    后来我想到,可以通过 Workflow Inputs 传参,把脚本内容 Base64 之后直接传给 Action 执行。

    这样就省去了提交和推送的步骤,灵活性确实提升了不少。

    但操作多了之后,还是觉得不够顺。

    于是我又在想,能不能再优雅一点。


    插件

    于是抽空 Vide Code 了这个插件。

    更新了几个版本之后,自己用下来感觉还比较满意,也挺贴合我的需求。

    除了同步镜像,我们也有临时需要同步模型权重的场景,用这个插件也很方便。

    顺便一提,GitHub Runner 的上传、下载速度可以到 1Gbps ,甚至更高。 每个月还有 2000 分钟免费额度,算下来大概 33 小时多一点。


    插件功能和用法

    简单说下目前支持的功能:

    1. 选中内容或者文件后右键,会出现 “Runner for GitHub Actions” 菜单

      • 一个是直接执行
      • 一个是先清理 GitHub Runner 空间再执行 ( GitHub Runner 磁盘空间大概 17G )
    2. 支持 shebang ,比如 #!/usr/bin/env python 所以不仅限于 shell ,python 、node 这些都 OK (当然即使不直接支持,脚本里套一层也能解决)

    3. 执行前会有预览确认窗口

    4. 执行完成后会弹窗提示 第二个提示里有两个按钮:

      • 打开 workflow runs 列表
      • 打开当前 job 的输出页面

    欢迎大家捧场: https://github.com/foyoux/github-action-runner

    用 AI 排了下版

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4111 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 05:40 PVG 13:40 LAX 21:40 JFK 00:40
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86