Please enable Javascript to view the contents

debugger-action 更新 v2 版支持 ngrok

 ·  ☕ 2 分钟

1. 什么是 Ngrok

Ngrok 是一个内网穿透工具,能够将内网的服务,发布到公网上。下面这张图,可以很好地展示其功能:

相较于同类工具 Frp (需要同时运行 Server 和 Client ),Ngrok 将内网穿透做成了一个服务。只需要在 Ngrok 注册账户,获得 Authtoken ,启动 Client 就可以对外提供,本地服务的公网地址。

使用方式非常地简单,三步走:

  1. 解压 Ngrok 文件
1
unzip /path/to/ngrok.zip
  1. 授权
1
./ngrok authtoken xxxxxxxxxx
  1. 暴露服务
1
./ngrok tcp 22

这样就可以得到一个可以在公网直接访问的地址,例如: 4.tcp.ngrok.io:18848

2. 什么是 debugger-action

在之前的文章《GitHub Actions 在线调试工具:debugger-action》中,给大家介绍了一个 GitHub Actions 的调试工具,允许开发者将 Runner 保持在线,从而远程 SSH 登陆进行调试。

shaowenchen/debugger-actions@v1 中,调试依赖于 Frp Server 服务,示例如下:

1
2
3
4
5
6
7
8
9
- uses: shaowenchen/debugger-action@v1
  name: debugger
  timeout-minutes: 30
  continue-on-error: true
  with:
    frp_server_addr: ${{ secrets.FRP_SERVER_ADDR }}
    frp_server_port: ${{ secrets.FRP_SERVER_PORT }}
    frp_token: ${{ secrets.FRP_TOKEN }}
    ssh_port: ${{ secrets.SSH_PORT }}

这对开发者不够友好。了解到 Ngrok 可以提供免费的穿透服务之后,我在 shaowenchen/debugger-actions@v2 中,对 Ngrok 进行了支持。在 v2 中,同样支持 Frp 。

下面一起来看看,怎么使用 Ngrok 进行 GitHub Actions 调试吧。

3. 在 debugger-action 上使用 Ngrok 进行进行调试

3.1 登陆 Ngrok 官网,获取 Authtoken

访问 Ngrok 官网,https://dashboard.ngrok.com/ , 可以使用 GitHub 或者 Google 账户登陆。

进入 Authentication 页面,找到自己的 Authtoken,如下图:

3.2 在 GitHub 项目下,配置 Secrets

在项目的 Settings 页面中,新增 Secrets,如下图:

NGROK_TOKEN 设置为上一步中获取到的 Authtoken 。

3.3 在项目中,添加 debugger-action

在需要断点调试的 Workflows 中,添加如下 debugger-actions 片段:

1
2
3
4
5
6
- uses: shaowenchen/debugger-action@v2
  name: debugger
  timeout-minutes: 30
  continue-on-error: true
  with:
    ngrok_token: ${{ secrets.NGROK_TOKEN }}

这里给出一个 Kind 环境的完整示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
name: example-ngrok-kind-v2
on:
  workflow_dispatch:

jobs:
  example-ngrok-kind-v2:
    runs-on: ubuntu-latest
    steps:
      - name: Creating kind cluster
        uses: helm/[email protected]
      - uses: shaowenchen/debugger-action@v2
        name: debugger
        timeout-minutes: 30
        continue-on-error: true
        with:
          ngrok_token: ${{ secrets.NGROK_TOKEN }}

3.4 远程登陆进行调试

由于上一步设置的是 workflow_dispatch ,因此需要手动触发流程。

在 GitHub Actions 的日志中可以找到 Ngrok 输出的访问地址,如下图:

使用 SSH 进行登录:

1
ssh [email protected] -p 10815

输入密码: root

然后就可以在 Runner 上愉快地进行调试了。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
kubectl get pod -A

NAMESPACE            NAME                                                  READY   STATUS    RESTARTS   AGE
kube-system          coredns-6955765f44-cknkh                              1/1     Running   0          2m35s
kube-system          coredns-6955765f44-crx27                              1/1     Running   0          2m35s
kube-system          etcd-chart-testing-control-plane                      1/1     Running   0          2m51s
kube-system          kindnet-l2sjw                                         1/1     Running   0          2m35s
kube-system          kube-apiserver-chart-testing-control-plane            1/1     Running   0          2m51s
kube-system          kube-controller-manager-chart-testing-control-plane   1/1     Running   0          2m51s
kube-system          kube-proxy-td9jg                                      1/1     Running   0          2m35s
kube-system          kube-scheduler-chart-testing-control-plane            1/1     Running   0          2m52s
local-path-storage   local-path-provisioner-7745554f7f-qf6n8               1/1     Running   0          2m35s

4. 参考


微信公众号
作者
微信公众号