2024-03-04 / @syui

gitea

gitea actionsに移行するかも

gitea actionsというのは、github actionsとかgitlab-ciと呼ばれるものに相当するものなんだけど、有効にするかどうか迷っていました。

というのもserverの負担が増大するし、いくつものserviceを動作させている環境だと、それぞれの反応がどうしても遅くなってしまうからです。

したがって、こういうのは全部無料で使えるgithubを利用するのが一番でした。

しかし、最近になってusername(id)の関係でgiteaを使う頻度が増えてきたので、gitea actionsを有効にすることにしました。

githubでは使いたいusername(id)がすでに取られていることが多く、時代はself-hostやdomainになっていくのだろうなあと、そんなふうに思います。

私の場合、最近になってreposを整理したこともあり、ネームスペースは結構気になります。

例えば、最近作った自作osはai osという名前ですが、username/aiosではなく、ai/osというネームスペースを使用したかった。

とはいえ、これもちょっと分かりづらいですよね。本来はai/aiosとかのほうがわかりやすいかな。まあ、好みの問題ということにしておきましょう。

gitea actionsの構築

gitea ciとも呼ばれます。

https://blog.gitea.com/hacking-on-gitea-actions/

[actions]
ENABLED=true

web-uiでsettingからactionsのtokenを取得しておいてください。

$ git clone https://gitea.com/gitea/act_runner
$ cd act_runner
$ make build
$ ./act_runner register
$ ./act_runner daemon

# nohup ./act_runner daemon &

これで使えるはず。statusがアイドルになります。

あとはgh-actionsと同じようにrepoに設定ファイルを置いてpushします。

name: Gitea Actions Demo
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
on: [push]
jobs:
  Explore-Gitea-Actions:
    runs-on: ubuntu-latest
    steps:
      - run: echo "🎉 The job was automatically triggered by a ${{ gitea.event_name }} event."
      - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!"
      - run: echo "🔎 The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."
      - name: Check out repository code
        uses: actions/checkout@v3
      - run: echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner."
      - run: echo "🖥️ The workflow is now ready to test your code on the runner."
      - name: List files in the repository
        run: |
          ls ${{ gitea.workspace }}          
      - run: echo "🍏 This job's status is ${{ gitea.status }}."

docker images(container registry)

docker imagesの置き場所としてdocker hub(dockerhub)が最も支配的で、かつ使いやすいです。

なぜなら、デフォルトでdockerhubが指定されるからです。

ただ、github packages(ghcr.io)に置いてあることも増えてきて、github actionsの影響が大きいと思います。

$ docker run -it syui/aios ai
$ docker run -it ghcr.io/syui/aios ai

しかし、今までsyui/aiosを使っていましたが、gitea actionsを有効にしたことでai/osに置き換えやすくなります。というか、有効にしたのは、主にこれのためです。

$ docker tag syui/aios git.syui.ai/ai/os
$ docker push git.syui.ai/ai/os
$ docker run -it git.syui.ai/ai/os ai

ただ、docker imagesは本当に容量を食うので、あまりおすすめできない。dockerhubに置くのが一番でしょう。

私の場合、repoをgiteaに移行したのに、dockerだけgithub, dockerhubなのはあまり良くない。ネームスペースが異なるのが良くない。dockerもgiteaに移行するかも。

なんか2GBを超えたあたりでpushできなくなります。

received unexpected HTTP status: 500 Internal Server Error

The push refers to repository [***/divya.jain/homer]
994393dc58e7: Pushed 
received unexpected HTTP status: 500 Internal Server Error

したがって、localhostからpushします。

actions runner

OCI runtime exec failed: exec failed: unable to start container process: exec: “node”: executable file not found in $PATH: unknown

nodeをdocker(gitea-runner)にinstallしてもcheckoutのときにerrが出ます。

ただ、runs-on: ubuntu-latestのみならerrがでません。したがって、これはcontainer: archlinuxが問題なのかもしれません。

どちらにせよarchisoはarchlinuxで実行しますので、nodeをinstallしたcontainer: syui/aiosを使用します。

    runs-on: ubuntu-latest
    container: 
      #image: archlinux
      image: syui/aios