Forgejo actions runner - Code of Conduct:
Go to file
Earl Warren 6f8ca39fa4
All checks were successful
Integration tests for the release process / release-simulation (push) Successful in 6m21s
checks / check and test (push) Successful in 48s
[FORGEJO] secrets are trimmed from output, cope with it
2023-04-30 23:32:40 +02:00
.forgejo/workflows [FORGEJO] secrets are trimmed from output, cope with it 2023-04-30 23:32:40 +02:00
.gitea/workflows build: optimize Dockerfile and update dependencies (#162) 2023-04-29 12:07:15 +08:00
internal [FORGEJO] look for workflows in the .forgejo/workflows directory 2023-04-30 18:14:44 +02:00
.dockerignore [FORGEJO] build forgejo-runner 2023-04-30 18:13:11 +02:00
.gitignore [FORGEJO] build forgejo-runner 2023-04-30 18:13:11 +02:00
.golangci.yml chore: add .golangci config 2022-11-24 15:36:28 +08:00 checksum and compress 2023-03-18 01:58:21 -04:00
.goreleaser.yaml ci: improve API usage and test robustness across platforms (#159) 2023-04-28 23:46:46 +08:00
build.go Support cache (#25) 2023-02-28 23:39:30 +08:00
Dockerfile [FORGEJO] build forgejo-runner 2023-04-30 18:13:11 +02:00
go.mod [FORGEJO] include ACT at the desired version 2023-04-30 18:13:38 +02:00
go.sum [FORGEJO] include ACT at the desired version 2023-04-30 18:13:38 +02:00
LICENSE Add license 2022-11-24 15:36:16 +08:00
main.go Refactor to new framework (#98) 2023-04-04 21:32:04 +08:00
Makefile [FORGEJO] build forgejo-runner 2023-04-30 18:13:11 +02:00 Document persisting /data for docker container (#160) 2023-04-29 03:05:00 +08:00 Run as a container (#8) including Docker-in-Docker. (#84) 2023-04-11 10:58:12 +08:00

act runner

Act runner is a runner for Gitea based on Gitea fork of act.



Docker Engine Community version is required for docker mode. To install Docker CE, follow the official install instructions.

Download pre-built binary

Visit and download the right version for your platform.

Build from source

make build

Build a docker image

make docker



./act_runner register

And you will be asked to input:

  1. Gitea instance URL, like You should use your gitea instance ROOT_URL as the instance argument and you should not use localhost or as instance IP;
  2. Runner token, you can get it from;
  3. Runner name, you can just leave it blank;
  4. Runner labels, you can just leave it blank.

The process looks like:

INFO Registering runner, arch=amd64, os=darwin, version=0.1.5.
WARN Runner in user-mode.
INFO Enter the Gitea instance URL (for example,
INFO Enter the runner token:
INFO Enter the runner name (if set empty, use hostname: Test.local):

INFO Enter the runner labels, leave blank to use the default labels (comma-separated, for example, ubuntu-20.04:docker://node:16-bullseye,ubuntu-18.04:docker://node:16-buster,linux_arm:host):

INFO Registering runner, name=Test.local, instance=, labels=[ubuntu-latest:docker://node:16-bullseye ubuntu-22.04:docker://node:16-bullseye ubuntu-20.04:docker://node:16-bullseye ubuntu-18.04:docker://node:16-buster].
DEBU Successfully pinged the Gitea instance server
INFO Runner registered successfully.

You can also register with command line arguments.

./act_runner register --instance --token <my_runner_token> --no-interactive

If the registry succeed, it will run immediately. Next time, you could run the runner directly.


./act_runner daemon


You can also configure the runner with a configuration file. The configuration file is a YAML file, you can generate a sample configuration file with ./act_runner generate-config.

./act_runner generate-config > config.yaml

You can specify the configuration file path with -c/--config argument.

./act_runner -c config.yaml register # register with config file
./act_runner -c config.yaml deamon # run with config file

Run a docker container

docker run -e GITEA_INSTANCE_URL= -e GITEA_RUNNER_REGISTRATION_TOKEN=<runner_token> -v /var/run/docker.sock:/var/run/docker.sock -v $PWD/data:/data --name my_runner gitea/act_runner:nightly

The /data directory inside the docker container contains the runner API keys after registration. It must be persisted, otherwise the runner would try to register again, using the same, now defunct registration token.

Running in docker-compose

    image: gitea/gitea

    image: gitea/act_runner
    restart: always
      - gitea
      - ./data/act_runner:/data
      - /var/run/docker.sock:/var/run/docker.sock
      - GITEA_INSTANCE_URL=<instance url>
      - GITEA_RUNNER_REGISTRATION_TOKEN=<registration token>