Github-Giteaで互換性を保ちながらActionを実行させれるみたい
4 min read
こんにちは、無能です。
やっていることはほとんどGitea Actionsの導入です。
Gitea Actionsの実行環境を整える
ほとんど以下とやっていること変わらないのですが
Gitea Actionsが来てるやんけ
ちなみにapp.iniで[actions]をENABLED=trueにしなくてもデフォでOnになっているようです。
導入時Ver
$ gitea -v
Gitea version 1.22.4 built with GNU Make 4.3, go1.22.9 : bindata, sqlite, sqlite_unlock_notify
hetzner上のDebianのaptで入れたGoのバージョンが古くてビルドするときに怒られたので最新版のGoを入れます。
wget https://go.dev/dl/go1.23.4.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.23.4.linux-amd64.tar.gz
exec bash
go version
で、このときにまだapt removeしたけど/usr/bin/goを見ていたことと、パス渡し忘れていたのでパスを設定。
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
rm /usr/bin/go
exec bash
go version
Gitea Actionsのランナーをビルド
別のデーモンとして稼働させている必要あるのと、dockerも必要なので入れていきます。
apt install -y make docker.io
service docker status
git clone https://gitea.com/gitea/act_runner
cd act_runner/
make build
mv ./act_runner /usr/local/bin
exec bash
act_runner registerで紐付け
おそらく、これを本体のGiteaのバイナリと別けている理由がこの時点でわかりました。
Gitea自体をホストしているサーバーと別のサーバーに簡単にGitea Actionsを実行させる環境を分ける為なのかなと思います。
# act_runner register
INFO Registering runner, arch=amd64, os=linux, version=v0.2.11+6-g8bc0275.
INFO Enter the Gitea instance URL (for example, https://gitea.com/):
https://git.domain.tld/
INFO Enter the runner token:
Secret key
INFO Enter the runner name (if set empty, use hostname: debian-2gb-hel1-1):
danzig
INFO Enter the runner labels, leave blank to use the default labels (comma-separated, for example, ubuntu-latest:docker://gitea/runner-images:ubuntu-latest):
INFO Registering runner, name=danzig, instance=https://git.domain.tld/, labels=[ubuntu-latest:docker://gitea/runner-images:ubuntu-latest ubuntu-22.04:docker://gitea/runner-images:ubuntu-22.04 ubuntu-20.04:docker://gitea/runner-images:ubuntu-20.04].
DEBU Successfully pinged the Gitea instance server
INFO Runner registered successfully.
ちなみに、Runnerに渡すトークンの取得に関しては前述のサイトとは異なっており現在は
https://git.domain.tld/admin/actions/runners
になっていました。
しょうもないですが、runner nameをdanzigにしているのはMisfitsのボーカルの名前にしました。
裏でグレン・ダンジグがビルド作業していることを考えたら面白いので。
apparmorを入れないといけないっぽい
どうやら、必要なモジュールが足りないようです。
SE Linuxとは別のLinux Security Modulesが必要らしいです。

ということで入れます。
apt install -y apparmor apparmor-utils
で、問題のact_runnerのデーモン用の実行バイナリをどうするかっていうことなんですが一旦テスト期間中としてrc.localにいれてスタートアップだけするようにしました。
理由はSystemdだとか、Supervisordに最初っからつっこんで途中でデーモンが死んだときの確認のしようがめんどくさくなりそうなので、死ぬときはキレイに死んでくれた方があとからデーモン死んだログをnohup.outみるだけでよさそうなので見つけやすそうかなっていうだけです。
以下を/etc/rc.localに記述
nohup act_runner daemon &
そしてDockerデーモンを再起動。
service docker restart
ちなみに自分がほとんどsystemctlほとんど使わないのは汎用的で他のディストリビューションやBSD環境でも同様に使えるからです。
yamlを編集
ぶっちゃけactions/checkout@v4が明示的じゃないのに動いているのはどこの先を見ているのかイマイチ理解出来ないけどログみていたら、うまいことact_runner側でこの構文を理解してくれるように直しているようだ。

なので、act_runner側で持っている何かしらのactions/checkout@v4のミラー的な資産ではなくちゃんとGithub上の資産を使っている様子。
# This workflow will build a golang project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go
name: Go
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: '1.23.3'
- name: Build
run: go build -v ./...
- name: Test
run: go test -v ./...
Qiitaの記事だとactions/checkout@v4のとこ以外は明示的にURLをフルで指定してあげる必要があるからname: Set up Goのusesで指定しているURLはフルで指定したけど、前述の通りで行くならVer上がってる今ならもしかしたらうまいことGithub資産として認識してくれるのかな?
と思ったけどそうするとGitea上にある資産と競合したときに問題が起きそうなのでURLのフル指定したほうが問題はお気なさそうですね。
※追記
どうやらowner/repo@refのままでもGithub, Giteaどちらも通るみたいなので、なんも考えずにいけそうです。
無事動作

やったぜ!!!!
というわけで、今回はここまで。
またよろしくお願いいたします。