日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

GitHub Actions[1] 是 GitHub 的持續(xù)集成服務(wù)[2],于2018年10月推出[3]。它的功能非常強(qiáng)大,每一個(gè) action 都用來(lái)執(zhí)行一種操作,比如抓取代碼、運(yùn)行測(cè)試、登錄遠(yuǎn)程服務(wù)器,發(fā)布到第三方服務(wù)等等。將這些 actions 組合起來(lái),就是一個(gè)持續(xù)集成的過(guò)程。當(dāng)然,這些 actions 都共享在 GitHub 的代碼倉(cāng)庫(kù)中,我們可以直接引用。

Github Actions 提供了整套服務(wù)器環(huán)境,服務(wù)器規(guī)格為:

  • 2-core CPU
  • 7 GB RAM 內(nèi)存
  • 84 GB SSD 硬盤空間

詳細(xì)系統(tǒng)環(huán)境信息如圖:

直接白嫖 Github Action 的 2C7G 服務(wù)器

 

當(dāng)然,可使用的系統(tǒng)除了 Ubuntu 之外還可以使用 windows Server 2019 和 macOS X Catalina 10.15。

看起來(lái)很美好,但實(shí)際上 GitHub Ac­tions 本身是不允許直接連接進(jìn)行交互式操作的,也就是說(shuō)你無(wú)法通過(guò) SSH 來(lái)連接服務(wù)器。如果有辦法能夠直接連接到服務(wù)器進(jìn)行交互式操作,那豈不是相當(dāng)于白嫖了一臺(tái)或多臺(tái) E5 2vCPU/7G RAM/90G SSD 配置的 VPS?

本文就來(lái)告訴你如何通過(guò)一些奇技淫巧來(lái)繞過(guò) GitHub Actions 本身的限制,直接連接到服務(wù)器!

注意:請(qǐng)勿用于惡意用途,造成的一切后果比如封號(hào)、中美關(guān)系惡化、原子彈爆炸、第三次世界大戰(zhàn)等后果均與作者無(wú)關(guān)。

方案一

mxschmitt/action-tmate[4]

這是第一個(gè)實(shí)現(xiàn) tmate[5] 連接 Ac­tions 服務(wù)器的 ac­tion ,但此方案在退出連接后不能進(jìn)行到下一個(gè)步驟,所以在實(shí)際使用中沒(méi)有多少價(jià)值,只能用于 SSH 連接。不過(guò)由于其開(kāi)天辟地的作用,我決定把它放到第一位。

work­flow 文件示例:

name: CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Setup tmate session
      uses: mxschmitt/action-tmate@v2

方案二

csexton/debugger-action[6]

此 ac­tion 作者受 mxschmitt/action-tmate[7] 啟發(fā),同樣是通過(guò) tmate 連接,退出連接后可持續(xù)進(jìn)行下一個(gè)步驟,能更好的應(yīng)用到實(shí)際項(xiàng)目中使用。作者可能考慮到為 GitHub 節(jié)約資源,默認(rèn)加了 15 分鐘自動(dòng)斷開(kāi)連接,不過(guò)可以通過(guò)執(zhí)行 touch /tmp/keepalive 命令去解除。

work­flow 文件示例:

name: debugger-action
on: 
  watch:
    types: started
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
     - uses: actions/checkout@v2
      - name: Setup Debug Session
       uses: csexton/debugger-action@master

Action 日志輸出:

直接白嫖 Github Action 的 2C7G 服務(wù)器

 

方案三

該方案沒(méi)有使用 action 來(lái)實(shí)現(xiàn),而是另辟蹊徑,直接使用 ngrok 來(lái)穿透內(nèi)網(wǎng),腳本如下:

#!/bin/bash
 
 
if [[ -z "$NGROK_TOKEN" ]]; then
  echo "Please set 'NGROK_TOKEN'"
  exit 2
fi
 
if [[ -z "$USER_PASS" ]]; then
  echo "Please set 'USER_PASS' for user: $USER"
  exit 3
fi
 
echo "### Install ngrok ###"
 
wget -q https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-386.zip
unzip ngrok-stable-linux-386.zip
chmod +x ./ngrok
 
echo "### Update user: $USER password ###"
echo -e "$USER_PASSn$USER_PASS" | sudo passwd "$USER"
 
echo "### Start ngrok proxy for 22 port ###"
 
 
rm -f .ngrok.log
./ngrok authtoken "$NGROK_TOKEN"
./ngrok tcp 22 --log ".ngrok.log" &
 
sleep 10
HAS_ERRORS=$(grep "command failed" < .ngrok.log)
 
if [[ -z "$HAS_ERRORS" ]]; then
  echo ""
  echo "=========================================="
  echo "To connect: $(grep -o -E "tcp://(.+)" < .ngrok.log | sed "s/tcp:///ssh $USER@/" | sed "s/:/ -p /")"
  echo "=========================================="
else
  echo "$HAS_ERRORS"
  exit 4
fi

該腳本用來(lái)為 SSH 服務(wù)建立 TCP 隧道,并打印出通過(guò)公網(wǎng)連接遠(yuǎn)程服務(wù)器的命令。

首先需要在 ngrok 的官網(wǎng)[8] 注冊(cè)一個(gè)賬戶,并生成一個(gè)Tunnel Authtoken:https://dashboard.ngrok.com/auth。然后創(chuàng)建如下的 workflow:

name: Debugging with SSH
on: pushjobs:  build:
    runs-on: ubuntu-latest
    steps:     - uses: actions/checkout@v1      - name: Try Build
       run: ./not-exist-file.sh it bloke build
      - name: Start SSH via Ngrok
       if: ${{ failure() }}
       run: curl -sL https://gist.githubusercontent.com/retyui/7115bb6acf151351a143ec8f96a7c561/raw/7099b9db76729dc5761da72aa8525f632d8875c9/debug-github-actions.sh | bash
       env:        # After sign up on the https://ngrok.com/
        # You can find this token here: https://dashboard.ngrok.com/get-started/setup
        NGROK_TOKEN: ${{ secrets.NGROK_TOKEN }}
 
        # This password you will use when authorizing via SSH 
        USER_PASS: ${{ secrets.USER_PASS }}
 
     - name: Don't kill instace
       if: ${{ failure() }}
       run: sleep 1h # Prevent to killing instance after failure

服務(wù)器存活時(shí)間默認(rèn)是 1 小時(shí),可自行調(diào)整。這里面的 TOKEN 和 SSH 登錄密碼最好采用 workflow 中推薦的方式,先在 GitHub 中創(chuàng)建 Secret,然后在 workflow 中引用 Secret。具體步驟可參考官方文檔[9]。

Action 日志輸出:

直接白嫖 Github Action 的 2C7G 服務(wù)器

 

最后再次強(qiáng)調(diào):希望大家以學(xué)習(xí)研究目的來(lái)使用,切勿用作其他惡意用途,切勿濫用!

參考資料

  • SSH 連接到 GitHub Actions 虛擬服務(wù)器環(huán)境 [10]

參考資料

[1]GitHub Actions: https://github.com/features/actions

[2]持續(xù)集成服務(wù): http://www.ruanyifeng.com/blog/2015/09/continuous-integration.html

[3]推出: https://github.blog/changelog/2018-10-16-github-actions-limited-beta/

[4]mxschmitt/action-tmate: https://p3terx.com/go/aHR0cHM6Ly9naXRodWIuY29tL214c2NobWl0dC9hY3Rpb24tdG1hdGU=

[5]tmate: https://github.com/tmate-io/tmate

[6]csexton/debugger-action: https://p3terx.com/go/aHR0cHM6Ly9naXRodWIuY29tL2NzZXh0b24vZGVidWdnZXItYWN0aW9u

[7]mxschmitt/action-tmate: https://p3terx.com/go/aHR0cHM6Ly9naXRodWIuY29tL214c2NobWl0dC9hY3Rpb24tdG1hdGU=

[8]ngrok 的官網(wǎng): https://ngrok.com/

[9]官方文檔: https://docs.github.com/cn/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets

[10]SSH 連接到 GitHub Actions 虛擬服務(wù)器環(huán)境 : https://p3terx.com/archives/ssh-to-the-github-actions-virtual-server-environment.html

分享到:
標(biāo)簽:Github Action
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定