公開:
2025/05/07
ForgejoのActionsを設定する。
何故かゴールデンウィークという4日の休みがあった。最初2日はとても規則的にDiscordに行動を書き込みつつRust勉強したりしていた。そのなかで、Rustの実行をするのに、システムレベルでいじるので、VirtualBoxで一々Linuxをインストールして環境をセットアップして、書いたコードをgitでpushしてpullして、などというのは面倒だから、コンテナ使おうぜ、となった。そこまでは良かった。
しかし、なぜだか、毎回コンテナ作るの面倒だから、imageをForgejoで作ってそれを落とそうぜ、という話になった。冷静になって考えてみるとおかしい。普通にローカルでもimageはbuildするんだから、一つDockerfileだかContainerfile(私は逆張りの民なのでpodman使っている)を持っていれば済む話である。この判断ミスのせいで、丸一日発狂し続けながらForgejoのActionsの設定をする羽目になった。
幸いなことに先人が無数にいるので、調べればおおよその問題は解決できる。(そのせいで私は希望を失わなかったためもしかしたら幸いではないかも知れないが。)
ここではすでにForgejoがどこかでホストされていて、httpsでアクセスできるものとする。
参照するのは以下のサイト
- https://github.com/digyx/raine-ing/blob/main/src/content/blog/forgejo-runner.md
- 基本的にこの方針で設定した。
config.ymlを生成してForgejoに登録するためのコンテナ、config.ymlに基づいてForgejoとdocker-in-dockerとやり取りするコンテナ、docker-in-dockerの3つのコンテナを使う。
- 基本的にこの方針で設定した。
- https://code.forgejo.org/forgejo/runner/src/branch/main/examples/docker-compose
詰まったポイント:
docker compose down --volumesしないとconfig.ymlが消えないので設定が反映されない。- `docker/login-action@v3、Forgejoではどうやってはいればいいのかちょっと迷った。
- ユーザーの設定->アプリケーションからアクセストークンを生成して、
- name: Login to Container Registry
uses: docker/login-action@v3
with:
registry: ${{ vars.PACKAGE_REGISTRY_URL }}
username: ${{ secrets.TOKEN_NAME }}
password: ${{ secrets.TOKEN }}
とすればいい。
- cloudflare Tunnelを使うと、100MBしかアップロードできない。(https://developers.cloudflare.com/cache/concepts/default-cache-behavior/#upload-limits)。
- これ解決できないまま今に至っている。100MB以上のサイズのパッケージをアップロードできない。ローカルで別のアドレス使ってやればいいんだけれど、docker/login-action@v3とかやっているのでHTTPSにする必要があり、これをしていない(自分がホストしているコンテナ一つもHTTPS対応していない…)ので、お悩み中。
そんなところです。
これについては大人しくContainerfile書いて、ローカルで実行します。
でも悪いことばっかりじゃなくて、なぜかtestを実行できる環境が整ってしまった。ので、今後は気軽にCI/CDやっていこうと思う。