前言
本博客全网首发了 GitHub Actions 虚拟服务器评测,相信看过的小伙伴其实都很好奇,那些评测截图是怎么做到的?难道是能通过 SSH 连接?这篇文章将告诉你答案。
实际上 GitHub Actions 本身是不允许直接连接进行交互式操作,但有好事的开发者竟然另辟蹊径通过安装 tmate 来实现了 SSH 连接,并且制作了相关的 action 。这使得我们可以非常容易连接到 Actions 的虚拟环境中,相当于免费获得了20台 E5 2vCPU/7G RAM/90G SSD 配置的Linux VPS 和 5台 macOS VPS。
方案一
第一个实现 tmate 连接 Actions 的 action ,但此方案在退出连接后不能进行到下一个步骤,所以在实际使用中没有多少价值,且极易造成资源浪费,所以只能用于 SSH 连接。不过由于其开天辟地的作用,我决定把它放到第一位。
workflow 文件示例:
name: Ubuntu
on: push
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Setup tmate session
uses: mxschmitt/action-tmate@v1
方案二
此 action 作者受 mxschmitt/action-tmate 启发,同样是通过 tmate 连接,退出连接后可持续进行下一个步骤,能更好的应用到实际项目中使用。作者可能考虑到为 GitHub 节约资源,默认加了15分钟自动断开连接,不过可以通过执行touch /tmp/keepalive
命令去解除。
TIPS: 博主在实际使用中发现,如果一段时间内(大概2分钟左右)不进行任何操作将会失去控制,有可能是 Actions 的限制措施或者是 tmate 本身的问题。
workflow 文件示例:
name: Ubuntu
on: push
jobs:
Ubuntu:
runs-on: ubuntu-latest
steps:
- name: Setup Debug Session
uses: csexton/debugger-action@master
方案三
博主在实际使用中觉得以上方案的体验并不理想,于是决定自己开了坑。fork 了csexton/debugger-action 并进行了一些代码细节上的改进,主要解决了连接失去控制的问题。
workflow 文件示例:
name: Ubuntu
on:
watch:
types: started
jobs:
Ubuntu:
runs-on: ubuntu-latest
steps:
- name: SSH connection to Actions
uses: P3TERX/debugger-action@master
尾巴
GitHub Actions 作为开发者一个小众的服务在经过博主写的一套 OpenWrt 云编译方案后有了一定热度,那么 SSH 连接方法必然会有好事者发现并公布,这就不可避免的会被滥用,这只是迟早的问题。最后经过深思熟虑还是决定把方法直接公布出来。
希望大家以学习研究的目的来使用,切勿用作其它恶意用途。
本博客已开设 Telegram 频道,欢迎小伙伴们订阅关注。
本文作者:P3TERX
本文链接:https://p3terx.com/archives/ssh-to-the-github-actions-virtual-server-environment.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。非商业转载及引用请注明出处(作者、原文链接),商业转载请联系作者获得授权。
一次是不是只能用6小时?再次启动服务器里面的文件没了。可惜了,本来还以为可以用来开个minecraft服务器什么的
我觉得我老瞎编译就挺恶意了....
為何相當20台呢?
可以同时开20个
大神,我试着新建仓库,黏贴了你的workflow的代码,点击star后,action确实启动了,但是没有显示怎么ssh上去啊?
有时候可能因为网络问题没有显示,2分钟内每30秒会显示一次 SSH 信息,在这个时间内可以尝试刷新,如果超过这个时间了你就重试吧。