※当サイトの記事には、広告・プロモーションが含まれます。

GitHub Actionsをローカルで実行できるnektos/actを導入の前にArch Linuxの導入

scienceportal.jst.go.jp

 コレステロール値を下げる薬のスタチンと組織の再生や修復に用いるナノサイズの構造体を一緒に使うと、視神経を再生・保護する能力が増すことを、米ピッツバーグ大学のグループがマウスの実験で明らかにした。

スタチンとナノ構造体で視神経を再生・保護、緑内障の治療に期待 米大が成果 | Science Portal - 科学技術の最新情報サイト「サイエンスポータル」

ヒトをはじめとした哺乳類では自然には起きないとされていた視神経の回復につながることを示す成果。将来的には外傷や緑内障などによる失明を防ぐ治療に期待できるという。

スタチンとナノ構造体で視神経を再生・保護、緑内障の治療に期待 米大が成果 | Science Portal - 科学技術の最新情報サイト「サイエンスポータル」

⇧ amazing...

GitHub Actionsをローカルで実行できるnektos/actとは

職場の方に教えてもらって、その存在を知ったので備忘録として。

公式の公開しているGitHubのREADMEによると、

github.com

Run your GitHub Actions locally

https://github.com/nektos/act

⇧ とあり、「GitHub Actions」の「ワークフロー」をローカル環境で実行できるらしい。

とりあえず、

nektosact.com

act depends on docker (exactly Docker Engine API) to run workflows in containers.

https://nektosact.com/installation/index.html

⇧「Docker」の「コンテナ」環境で動作するらしいので、「Docker Engine」がインストール済みのLinux環境がMUSTな要件になるっぽい。

後発だとは思うのだけど、

github.com

⇧「GitHub」からも似たような機能が提供されてるみたい。

GitHub Actionsをローカルで実行できるnektos/actの仕組みを整理してみる

とりあえず、「nektos/act」を利用するための要件としては、

  1. Docker Engineが稼働している環境

ということになるようなので、基本的にはLinux環境を前提としていますと。

公式のドキュメントにシステムの概要図のようなものは無いので、あくまで推測になりますが、

みたいな感じになるのかなと。

「act(Runner)」の「Dockerイメージ」が、「nektos/act」をインストールした段階で同梱されてくるのかがよく分からないのだけど...

公式のドキュメントによると、

nektosact.com

⇧「Default」で「Dockerイメージ」が用意されているみたいなのだが、「Default」以外を利用することも可能らしいようなのだが、

⇧「Dockerイメージ」をどこから取得するのかの説明が無い...

何やら、

github.com

⇧「Dockerイメージ」のリンクが「Docker Hub」を参照しているっぽいので、外部からネットワーク経由でインストールする形になるっぽい。

ということは、おそらく、一旦、「Dockerイメージ」をローカル環境に配置できれば、

⇧ ローカル環境に配置済みの「Dockerイメージ」を利用する形にできるってことなんかね?

デフォルトは、「Docker」の利用になるようなのだけど、

⇧「Docker Engine API」と互換性があるのであれば、別の「Container Engine」を利用することも可能らしい。

ChatGPTに質問した感じでは、

No コンテナエンジン Docker Engine API互換性 ランタイム 備考
高レイヤー 低レイヤー
1 Docker 完全互換性あり DockerはDocker Engine APIを完全に提供。標準的なコンテナ管理ツール。
2 Podman 高い互換性あり PodmanはDocker Engine API互換のREST APIを提供。podmanコマンドはDockerとほぼ同等。
3 CRI-O 限定的互換性あり Kubernetes向けに設計され、Docker APIとの直接的な互換性はないが、コンテナの管理は可能。
4 containerd 部分的互換性あり Docker Engine内部で使用。APIは提供しないが、dockerコマンドとの互換性を持つ。
5 Rancher RKE 部分的互換性あり RancherのKubernetes向けのエンジン。Docker APIを直接利用しないが、互換性を持つ機能がある。
6 K3s 部分的互換性あり 軽量Kubernetesディストリビューションcontainerdを使用し、Docker API互換の機能も一部サポート。
7 LXC/LXD 互換性なし Docker Engine APIとは異なる、低レベルのコンテナ管理。API互換はなく、コンテナの実行は可能。

⇧ 上記のような回答が返ってきた。

「Container Engine」の定義が分からんのだが、「Container Runtime」は、

  1. high-level
  2. low-level

に分かれるらしく、

www.cloudraft.io

⇧ ChatGPTの回答では出て来なかった情報もあって、「Docker Engine API」との関係性がよく分からない...

GitHub Actionsをローカルで実行できるnektos/actを導入の前にArch Linuxの導入

ローカルのPC(Windows 10 Home)のCドライブの空き容量が心許ないのですが、「WSL 2(Windows Subsystem for Linux 2)」で試してみることにしようと思ったのですが、ただ、予想通りと言いますか、

⇧「nektos/act」の「Install」で紹介されている「Linux ディストリビューション」は「WSL 2(Windows Subsystem for Linux 2)」側では対応していない...

「WSL 2(Windows Subsystem for Linux 2)」で「Arch Linux」をインストール方法としては、

learn.microsoft.com

⇧「tar」からimportする方法になり、

wiki.archlinux.jp

archive.archlinux.org

⇧「archlinux-bootstrap-2024.12.01-x86_64.tar.zst」のようなファイルを元に、

zenn.dev

⇧ 上記サイト様にありますように、

  1. Linux環境上で作業
    1. 「Arch Linux」の「tar.zst」ファイルをダウンロードする
    2. zstdをインストール
    3. zstdとtarで「tar.zst」ファイルを展開(解凍)
    4. etc/pacman.d/mirrorlistを編集
      利用したいミラーサイトコメントアウト外す
    5. tar.gzで圧縮し、tarball(Arch Linux)を作る
  2. Windows環境で作業
    1. tarball(Arch Linux)をダウンロード
    2. WSL 2でimportする(WSL 2にArch Linuxをインストール)
    3. WSL 2にインストールされたArch Linuxを起動

という手順になる模様。

これといった正式な手順が無いっぽいというカオスな状況らしい...

とりあえず、「WSL 2(Windows Subsystem for Linux 2)」に「Linux環境」を準備します。

で、参考サイト様にありますように、

sudo apt-get update

sudo apt-get upgrade

「Arch Linux」をどのミラーサイトから取得するかは、以下で確認できるっぽい。

archlinux.org

##
## Arch Linux repository mirrorlist
## Generated on 2024-12-14
##

## Japan
#Server = http://mirrors.cat.net/archlinux/$repo/os/$arch
#Server = https://mirrors.cat.net/archlinux/$repo/os/$arch
#Server = http://jp.mirrors.cicku.me/archlinux/$repo/os/$arch
#Server = https://jp.mirrors.cicku.me/archlinux/$repo/os/$arch
#Server = http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/$repo/os/$arch
#Server = http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch
#Server = https://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch
#Server = http://repo.jing.rocks/archlinux/$repo/os/$arch
#Server = https://repo.jing.rocks/archlinux/$repo/os/$arch
#Server = http://www.miraa.jp/archlinux/$repo/os/$arch
#Server = https://www.miraa.jp/archlinux/$repo/os/$arch
#Server = http://mirror.nishi.network/archlinux/$repo/os/$arch
#Server = https://mirror.nishi.network/archlinux/$repo/os/$arch
#Server = https://mirror.saebasol.org/archlinux/$repo/os/$arch

⇧ 日本の「Arch Linux」を管理・公開しているミラーサイト一覧が表示される。

今回は、「https://ftp.jaist.ac.jp/pub/Linux/ArchLinux/iso/latest/」に配置されてるものを利用してみます。

wget https://ftp.jaist.ac.jp/pub/Linux/ArchLinux/iso/latest/archlinux-bootstrap-2024.12.01-x86_64.tar.zst
wget https://ftp.jaist.ac.jp/pub/Linux/ArchLinux/iso/latest/sha256sums.txt

zstdをインストールします。

sudo apt install zstd

展開(解凍)します。

sudo tar --zstd -xvf archlinux-bootstrap-2024.12.01-x86_64.tar.zst

ミラーサイト」が全てコメントアウトされてしまっているようなので、「root.x86_64/etc/pacman.d/mirrorlist」を編集します。

とりあえず、「/jp」で検索し、ヒットした付近について、「https://archlinux.org/mirrorlist/」で「Japan」を検索した結果の一覧と同じURLについてコメントアウトを解除していくことにします。

圧縮します。

sudo tar czvf arch.tar.gz *

Windows」環境の「C:\wsltars」というディレクトリを作成し、「arch.tar.gz」を配置します。(「Windows」環境のディレクトリにマウントされているのでダウンロードしなくても連携できる)

mkdir -p /mnt/c/wsltars
sudo mv arch.tar.gz /mnt/c/wsltars

自分は、「Cドライブ」の容量が心許ないので、「Eドライブ」にimportすることにしました。

wsl --import ArchLinux E:\soft_work\wsl2\arch\ C:\wsltars\arch.tar.gz

⇧ 無事、「WSL 2(Windows Subsystem for Linux 2)」に「Arch Linux」がインストールできたようです。

「WSL 2(Windows Subsystem for Linux 2)」の「Arch Linux」の「仮想ディスク」は、「Eドライブ」に配置されてます。

作業用にインストールした「Ubuntu-24.04」をアンインストールします。

「C:\wsltars\arch.tar.gz」も不要になったので、削除します。

とりあえず、「ArchLinux」の環境が構築できたので、次回は、「ArchLinux」環境に「Docker」や「Git」をインストールした後に、「nektos/act」をインストール、動作する環境を構築していく感じになるかと。

「ArchLinux」の構築方法の正確な手順が分からないので、再現性が担保できないのが辛いところですな...

正式な手順が無い以上、やってみたら動いたの域を出ていないことになってしまいますからな...

所謂、

tracpath.com

⇧ 上記サイト様にあるような「オレオレ環境」が乱立していくことになるという...

  1. 仮想マシン
  2. OS(Operation System)
  3. ネットワーク
  4. ミドルウェア

あたりの環境構築については、統一的な導入手順が欲しいのよね...

後は、単純にgit cloneして動作しない「アプリケーション」であるなら、「アプリケーション」が正常に動作するまでの手順は欲しいよね...

構築した環境がこのプロジェクトでは間違いでした、とかの判断の仕様も無いですし...

毎度モヤモヤ感が半端ない…

今回はこのへんで。