Gitea Actionsの初期設定手順
まず初めに
下記で記していることは基本的に公式ドキュメントに沿った内容です。
ドキュメント通りに進める上で別途必要なことを知りたい方や、英語のドキュメントを読みたくない方のために執筆します。
以下、Giteaの公式ドキュメントです
前提条件
giteaとrunnerの動作環境:Ubuntu 24.04.1 LTS
giteaバージョン:1.25.2
Goのバージョン:1.25.5
手順
0. Gitea側の事前準備
まず初めに、giteaのバージョンが1.19以上でないと、Gitea Actionsがそもそも機能としてありませんので、アップデートが必要です。
当方もその一人でしたので、非常に慎重にアップデートを行いました。(実際はそれほど心配する必要がなかったが…)
私のような慎重派の方はバックアップ手順も書きましたので参考までに。
アップデートが完了したら、対象のリポジトリの設定タブの下の方にある、Actionsを有効にするのチェックが入っていなければチェックを入れます。

チェックが入っている状態であれば、左タブにActionsタブが現れるので、ランナーを選び、「新しいランナーを作成」を選ぶと、トークンが表示されるので、これをコピーしてメモに控えておきます。これは後でランナーの設定で使います。

※ちなみに、これはこのリポジトリ専用のランナーになります。
私のチームでは組織レベルでランナーを設定し、それを使い回すような運用をしています。
その場合は組織の設定タブで同様の操作を行えばOKです。
以上でGitea側の事前準備は完了です。
1. Goのダウンロードとインストール
runnerを実行させるマシンにGoがインストールされていなければGoのインストールを行う必要があります。公式バイナリをダウンロードして展開します。
wget https://go.dev/dl/go1.25.5.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.25.5.linux-amd64.tar.gz
パスを通して反映します
echo 'export PATH=/usr/local/go/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
以下コマンドを実行し、バージョンが返ってくれば正常にインストール完了してます
go version
2. ランナーのインストールと設定
act_runner用のディレクトリ作成し、現在ログイン中のユーザーに権限付与します
sudo mkdir /opt/act_runner
cd act_runner
sudo chown $USER:$USER /opt/act_runner
act_runnerのリポジトリからソースコードをクローンします。
git clone https://gitea.com/gitea/act_runner.git .
ビルドしてバイナリを生成します
go build -o act_runner .
正常にバイナリが生成できたら、以下のように実行環境へ移動します。
$ sudo mv /opt/act_runner/act_runner /usr/local/bin/
act_runnnerが動作するか確認
act_runner -v
3. runnerをgiteaに登録する
下記のコマンドを実行
act_runner register --instance http://[giteaのURL] --token [Gitea Actionsで確認できるトークン]
2つほど質問が返ってくるので、回答する
(1)ランナーの名前 >>どのサーバーのランナーかわかるようにすればOK
Giteaでランナーの一覧表示で使用されます。(後の手順で画像貼ってあります)
(2)ランナーのラベル >>空文字でOK
成功するとバイナリのフォルダ階層(/usr/local/bin/act_runner)に.runnerファイルが生成される
act_runner を実行するユーザーを docker グループに追加
$ sudo usermod -aG docker $USER
グループの即時反映
$ newgrp docker
グループ一覧表示
$ groups
ここでDockerが表示されれば成功
giteaのActions>ランナーの管理に表示されていることを確認

4. ワークフローのyamlファイルを設置してPush
あとはリポジトリの直下からみて.gitea/workflowsにdemo.yamlを作成し、
以下内容をコピペして、pushすれば自動的にrunnerが走る。
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@v4
- 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 ${{ job.status }}."
実行結果>>

登録したけどランナーがオフラインのままで動かない場合
上記の手順3でランナーの登録が正常に完了しているのにGitea Actionsのランナー一覧でオフラインと表示されている場合、登録したランナーが起動していない可能性があります。
act_runner register~のコマンド実行したディレクトリ直下に.runnerファイルが生成され、同一ディレクトリで「act_runner daemon」コマンド実行することでその.runnerファイルを参照して起動するという挙動のようです。したがって、新たにランナーを登録して動作しない場合、下記2点を確認する必要があります。
- そもそもランナーが起動しているか
- ランナーが意図した.runnerファイルを参照のうえ、起動しているか
最後に
次はDockerを活用して実際にデプロイする際のyamlの中身を交えながら手順を書こうと思います。
最後まで読んでくれてありがとうございます。
Discussion