【Github】Github Actions ~ Self-hosted runners / あれこれ編 ~

■ はじめに

https://dk521123.hatenablog.com/entry/2023/12/18/204119

の続き。

Github Actions の Self-hosted runners に関するTipsをまとめておく

目次

【1】サービスとして設定するには
 1)設定手順例
 2)アンインストールする
 3)ユーザを指定してサービスを立ち上げる
【2】セルフホストランナーでプロキシ サーバーを使う
【3】runs-onを動的に指定する

【1】サービスとして設定するには

* 以下の公式サイトに記載されている

https://docs.github.com/ja/actions/hosting-your-own-runners/managing-self-hosted-runners/configuring-the-self-hosted-runner-application-as-a-service

* ユーザを指定した手順は以下のサイトに記載されている

https://qiita.com/h_tyokinuhata/items/7a9297f75d0513572f4a

1)設定手順例

# ユーザ名取得
YOUR_NAME=$(whoami)

# サービスインストール
sudo ./svc.sh install $YOUR_NAME

# サービス起動
sudo ./svc.sh start

# サービス確認
sudo ./svc.sh status

2)アンインストールする

# Step1: 停止する
sudo ./svc.sh stop

# Step2: アンインストール
sudo ./svc.sh uninstall

【2】セルフホストランナーでプロキシ サーバーを使う

* 以下の公式サイトに記載されている

https://docs.github.com/ja/actions/hosting-your-own-runners/managing-self-hosted-runners/using-a-proxy-server-with-self-hosted-runners#using-a-env-file-to-set-the-proxy-configuration

[1] 以下の「例:~/actions-runner/.env」を参考に.env ファイルを作成する
[2] セルフホスト ランナーのディレクトリ内に、[1] の .env ファイルを置く
 => ランナー アプリケーションが起動すると、
  この .env に設定されたプロキシ設定の変数が読み取られる

例:~/actions-runner/.env

http_proxy=http://proxy.local:3128
https_proxy=http://proxy.local:3128
no_proxy=localhost,127.0.0.1,169.254.169.254

参考文献
https://zenn.dev/hironobuu/articles/e85418948e896f

【3】runs-onを動的に指定する

実装方法
https://zenn.dev/snowcait/articles/56fad93b7dc95e

[1] workflow_dispatch.inputs で指定
 => 手動でデプロイする運用ならいいが、それ以外は不可

[2] イベントで切替

[3] ファイルを分けて管理する
 => 例えば「dev.workflow.yml」「prod.workflow.yml」って感じで分けてみる

etc...

サンプル:ブランチで切換

name: demo for multiple runners

on:
  push:
    branches:
      - dev
      - prod

jobs:
  demo-job1:
    # if affected branch is 'demo' then runs on 'ubuntu-latest' else self-hosted...
    runs-on: >-
      ${{
        github.ref_name == 'dev'
          && fromJSON('[ "ubuntu-latest", "development" ]')
          || fromJSON('["self-hosted", "production" ]')
      }}
    steps:
      - name: Demo sample
        run: echo "Hello, world!!"

参考文献
https://stackoverflow.com/questions/73241812/how-to-dynamically-assign-the-runs-on-value-in-the-github-actions

関連記事

Github ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/07/18/234652
Github Actions ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/04/142835
Github Actions ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2022/06/16/151443
Github Actions ~ egg / wheel ファイル作成 ~
https://dk521123.hatenablog.com/entry/2022/06/21/143624
Github Actions ~ Self-hosted runners / 入門編 ~
https://dk521123.hatenablog.com/entry/2023/12/18/204119
Github ~ Webhook 編 ~
https://dk521123.hatenablog.com/entry/2020/01/25/224402
Github Actionsで「Waiting for a runner to pick up this job...」から進まない
https://dk521123.hatenablog.com/entry/2024/01/10/195350
Pythonpython-dotenv ~
https://dk521123.hatenablog.com/entry/2024/02/22/004839