Gitea Actionsの初期設定手順

に公開

まず初めに

下記で記していることは基本的に公式ドキュメントに沿った内容です。
ドキュメント通りに進める上で別途必要なことを知りたい方や、英語のドキュメントを読みたくない方のために執筆します。
以下、Giteaの公式ドキュメントです
https://docs.gitea.com/usage/actions/quickstart/

前提条件

giteaとrunnerの動作環境:Ubuntu 24.04.1 LTS
giteaバージョン:1.25.2
Goのバージョン:1.25.5

手順

0. Gitea側の事前準備

まず初めに、giteaのバージョンが1.19以上でないと、Gitea Actionsがそもそも機能としてありませんので、アップデートが必要です。
当方もその一人でしたので、非常に慎重にアップデートを行いました。(実際はそれほど心配する必要がなかったが…)
私のような慎重派の方はバックアップ手順も書きましたので参考までに。
https://zenn.dev/dev_yamamon/articles/db588df430300f

アップデートが完了したら、対象のリポジトリの設定タブの下の方にある、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点を確認する必要があります。

  1. そもそもランナーが起動しているか
  2. ランナーが意図した.runnerファイルを参照のうえ、起動しているか

最後に

次はDockerを活用して実際にデプロイする際のyamlの中身を交えながら手順を書こうと思います。
最後まで読んでくれてありがとうございます。

Discussion