文章506
标签266
分类65

在Github免费领取你的Mac和Linux终端吧~

今天RSS推送了一个挺有趣的东西,能通过Github Actions直接创建一个Mac或者Linux服务器,并且可以通过ssh直接连接;

花了几分钟试了一下,感觉挺方便的!

源代码:



在Github免费领取你的Mac和Linux终端吧~

觉得这个不错是由于,有的时候还需要在mac上跑一些代码进行跨平台的测试,但是手头又没有mac电脑;

而通过这个仓库,可以很方便的拉起一个macOS,并且内置了brew!

下面是大致的操作过程:


注意:

根据 GitHub Actions Terms of Service,项目必须是公开的,否则每个月使用的时间就是被限制的!(虽然每个action的时间已经被限制为6个小时!)

另外,六个小时之后,Action就会被停止,然后所有资源都会被回收!

大致的使用方法在README基本上介绍的很详细了,但是由于README是英文的,这里就大概翻译一下;


克隆模板

首先,点击这里克隆一个模板;

在 “repository name” 输入fastmac,然后点击 “Create repository from template” ;

稍等片刻之后,你的克隆仓库就成功创建了!


注意:这里是Copy一个仓库,而非直接Fork一个仓库!

接下来,在你克隆的仓库里面执行下面的步骤:


在Actions中启动mac工作流

点击仓库中的Actions,并选择mac工作流,如下图:

fastmac1.png

最后点击Run workflow,即可创建工作流(mac终端);


通过ssh或浏览器访问终端

几秒钟后,刷新页面,会看到一个旋转的橙色圆圈;

单击旁边的“mac”超链接,如下图:

fastmac2.png

在下一个页面上,你会看到另一个旋转的橙色圆圈,这一次旁边有“build”,点击“build”,如下图:

fastmac3.png

这将显示创建工作流的log;

一段时间后,会执行Setup tmate session阶段,一旦完成自身安装,它将重复打印类似于如下行:

WebURL: https://tmate.io/t/ub7bnMg9RQxcWAXqRTKWrhvMz

SSH: ssh ub7bnMg9RQxcWAXqRTKWrhvMz@nyc1.tmate.io

WebURL: https://tmate.io/t/ub7bnMg9RQxcWAXqRTKWrhvMz

SSH: ssh ub7bnMg9RQxcWAXqRTKWrhvMz@nyc1.tmate.io

WebURL: https://tmate.io/t/ub7bnMg9RQxcWAXqRTKWrhvMz

......

复制并粘贴ssh行(例如:ssh ub7bnMg9RQxcWAXqRTKWrhvMz@nyc1.tmate.io);

进入终端(强烈建议Windows用户尽可能使用WSL),按Enter键执行命令进入服务器;

之后,你会看到欢迎信息,按q键退出它,即可进入Mac shell!

shell已经安装了brew,因此可以轻松添加所需的任何软件!

当然也可以将“WebURL”粘贴到浏览器中,即可在浏览器中获得终端!


如果无法使用终端(例如,必须在手机或平板电脑上执行一些紧急操作)可以使用浏览器终端;

但浏览器终端的可靠性不如ssh方法,而且并非所有的方法都能正常工作!


停止终端

根据Github Actions对免费用户的限制,会话最多持续六个小时;

但是当你完成工作后,应该直接它,否则你占用了一台其他人可能正在使用的计算机资源!

要关闭会话,单击Actions屏幕右侧的红色“Cancel workflow”即可,如下图:

fastmac4.png


使用Linux终端而非Mac

如果需要访问linux shell而非MacOS;

可以按照上面所有步骤操作,只是点击“linux”而不是“mac”来创建工作流;


使用SSH连接其他服务器

你还可以通过ssh从fastmac/linux实例连接到你的其他服务器;

首先,必须在fastmac项目的settings/secrets设置一个GitHub密码,其中包含连接到服务器所需的ssh私钥,如下图:

fastmac5.png

将该私钥其命名为SSH_KEY(必须是这个名字),并将私钥文件(例如:~/.ssh/id_rsa)内容粘贴为值;

保存secret,然后当使用fastmac/linux工作流进行其他服务器连接时,会发现终端已经准备好了密钥以供使用;


为终端添加启动脚本&文件

在你的fastmac仓库中,编辑{linux/mac}.sh文件,添加创建新会话时要自动运行的配置命令;

这些是bash脚本,在创建新会话时运行;

此外,添加到这个repo中的任何文件都将在会话中可用!

因此,可以使用它来包含你想在fastmac/linux会话中访问的任何数据、脚本、信息等。


后记

fastmac是tmate的一个非常薄的封装,所以tmate的所有特性都是可用的!

tmate本身是基于tmux的,所以你也可以有这些功能;

实际上,这也意味着其他人也可以连接到同一个ssh会话,和你共享同一个屏幕!

这对于调试和支持非常方便!

与Github操作的集成由 action-tmate 提供;


附录

源代码:



本文作者:Jasonkay
本文链接:https://jasonkayzk.github.io/2020/09/18/在Github免费领取你的Mac和Linux终端吧/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可