self-hosted runner

Self-hosted runners:

  • Receive automatic updates for the self-hosted runner application only. You are responsible updating the operating system and all other software.
  • Can use cloud services or local machines that you already pay for.
  • Are customizable to your hardware, operating system, software, and security requirements.
  • Don’t need to have a clean instance for every job execution.
  • Are free to use with GitHub Actions, but you are responsible for the cost of maintaining your runner machines.
  • Self-hosted runnnerアプリのみ自動アップデート。OS等は自身でメンテナンス。
  • クラウドサービスやローカルマシン上で実行できる
  • OSやハードウェアを自由にカスタマイズ
  • ジョブ実行のたびにクリーンなインスタンスとする必要はない
  • GitHub Actionsと組み合わせて無料で利用できるが、Runnnerマシンのメンテナスは自分で行う

A self-hosted runner is automatically removed from GitHub if it has not connected to GitHub Actions for more than 30 days.

30日以上接続されない場合はGitHubから削除される。

The self-hosted runner application communicates with GitHub using the HTTPS protocol for inbound and outbound traffic. You must ensure that the machine has the appropriate network access to communicate with the GitHub URLs listed below.

1
2
3
github.com
api.github.com
*.actions.githubusercontent.com

GitHubとの通信はHTTPSで行われる。

RunnnerホストでLISTENするわけではないので、NAPTを介してもOK。

self-hosted runnerを登録する

Settings -> Actions -> Self-hosted runnesAdd Runnerをクリック

GitHub Actions Runner width=640

Runnerホスト上で実行するコマンドが表示されるので、順次実行する。

GitHub Actions Runner width=640

Runnerホストでコマンド実行する

表示されたコマンドを実行していく。./run.shを実行すると待機状態になる。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
local-ubuntu:~$ mkdir actions-runner && cd actions-runner
local-ubuntu:~/actions-runner$ curl -O -L https://github.com/actions/runner/releases/download/v2.169.0/actions-runner-linux-x64-2.169.0.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 652 100 652 0 0 1684 0 --:--:-- --:--:-- --:--:-- 1684
100 72.0M 100 72.0M 0 0 3492k 0 0:00:21 0:00:21 --:--:-- 6134k
local-ubuntu:~/actions-runner$ tar xzf ./actions-runner-linux-x64-2.169.0.tar.gz
local-ubuntu:~/actions-runner$ ./config.sh --url https://github.com/XXXXXXX/XXXXXXX --token XXXXXXXXXXXXXXXXXXXXXX

--------------------------------------------------------------------------------
| ____ _ _ _ _ _ _ _ _ |
| / ___(_) |_| | | |_ _| |__ / \ ___| |_(_) ___ _ __ ___ |
| | | _| | __| |_| | | | | '_ \ / _ \ / __| __| |/ _ \| '_ \/ __| |
| | |_| | | |_| _ | |_| | |_) | / ___ \ (__| |_| | (_) | | | \__ \ |
| \____|_|\__|_| |_|\__,_|_.__/ /_/ \_\___|\__|_|\___/|_| |_|___/ |
| |
| Self-hosted runner registration |
| |
--------------------------------------------------------------------------------

# Authentication


√ Connected to GitHub

# Runner Registration

Enter the name of runner: [press Enter for local-ubuntu]

√ Runner successfully added
√ Runner connection is good

# Runner settings

Enter name of work folder: [press Enter for _work]

√ Settings Saved.

local-ubuntu:~/actions-runner$ ./run.sh

√ Connected to GitHub

2020-05-19 07:48:19Z: Listening for Jobs

登録された状態を確認する

登録されたホストが表示され、Idle状態となっている。

GitHub Actions Runner width=640

runs-on: self-hostedを設定し、ジョブを実行する。
この例ではdocker-composeが入っていないホストのためエラーになっているが、Runnerホストの作成した_workディレクトリ上で実行されていることを確認することができる。

GitHub Actions Runner width=640

Runnerホストを終了する

Runnerホスト側で.run.shを停止する。

1
2
3
4
2020-05-19 07:48:19Z: Listening for Jobs
2020-05-19 07:53:38Z: Running job: XXXXXXXXXXX
2020-05-19 07:53:52Z: Job XXXXXXXXXXX completed with result: Failed
^CExiting...

GitHub側ではOfflineとなる。

GitHub Actions Runner width=640

実行後のRunnerホストでは、_workに実行時の状態が残っている。

1
2
3
4
5
local-ubuntu:~/actions-runner$ ls
_diag _work actions-runner-linux-x64-2.169.0.tar.gz bin config.sh env.sh externals run.sh svc.sh
local-ubuntu:~/actions-runner$ cd _work
local-ubuntu:~/actions-runner/_work$ ls
_PipelineMapping _actions _temp _tool <XXXXXXXXXXX>