Forgejo runner - alpha release, should not be considered secure enough to deploy in production
Go to file
earl-warren 5e51d8ed42
All checks were successful
checks / build and test (push) Successful in 1m19s
checks / runner exec tests (push) Successful in 53s
/ example-docker-compose (push) Successful in 6m17s
Merge pull request 'add combined labels back to registry' (#176) from thefox/runner:label_loading_patch into main
Reviewed-on: #176
Reviewed-by: earl-warren <>
2024-04-10 22:47:37 +00:00
.forgejo docker-compose example: use node:20-bookworm instead of the default 2024-04-07 20:48:31 +02:00
examples docker-compose example: use node:20-bookworm instead of the default 2024-04-07 20:48:31 +02:00
internal replace Nil with NoError 2024-04-10 23:55:42 +02:00
scripts add instructions to run under systemd user services 2024-02-19 09:09:57 +01:00
.dockerignore [FORGEJO] build forgejo-runner 2023-08-23 14:44:47 +02:00
.editorconfig Add .editorconfig and .gitattributes (#186) 2023-05-13 23:51:22 +08:00
.gitattributes Add .editorconfig and .gitattributes (#186) 2023-05-13 23:51:22 +08:00
.gitignore [FORGEJO] build forgejo-runner 2023-08-23 14:44:47 +02:00
.golangci.yml ci(lint): refactor code for clarity and linting compliance (#289) 2023-07-13 01:10:54 +00:00
build.go Support cache (#25) 2023-02-28 23:39:30 +08:00
Dockerfile general purpose rootless container 2023-08-25 15:30:24 +02:00
go.mod upgrade to ACT v1.20.1 2024-03-24 13:02:18 +01:00
go.sum upgrade to ACT v1.20.1 2024-03-24 13:02:18 +01:00
LICENSE [FORGEJO] branding 2023-08-23 16:03:12 +02:00
main.go Refactor to new framework (#98) 2023-04-04 21:32:04 +08:00
Makefile [FORGEJO] use go vet without any third party addition 2023-08-23 16:03:12 +02:00 use forgejo-url for brievety 2023-12-21 15:27:27 +01:00 add release notes 2024-04-10 23:55:42 +02:00

Forgejo Runner

WARNING: this is alpha release quality code and should not be considered secure enough to deploy in production.

A daemon that connects to a Forgejo instance and runs jobs for continous integration. The installation and usage instructions are part of the Forgejo documentation.


The Forgejo runner depends on a fork of ACT and is a dependency of the setup-forgejo action. See the full dependency graph for a global view.

Local debug

The repositories are checked out in the same directory:

Install dependencies

The dependencies are installed manually or with:


Build the Forgejo runner with the local ACT

The Forgejo runner is rebuilt with the ACT directory by changing the runner/go.mod file to:

replace => ../act


cd runner ; go mod tidy


cd runner ; rm -f forgejo-runner ; make forgejo-runner

Launch Forgejo and the runner

A Forgejo instance is launched with:

cd setup-forgejo
./ setup
firefox $(cat forgejo-url)

The user is root with password admin1234. The runner is registered with:

cd setup-forgejo
docker exec --user 1000 forgejo forgejo actions generate-runner-token > forgejo-runner-token
../runner/forgejo-runner register --no-interactive --instance "$(cat forgejo-url)" --name runner --token $(cat forgejo-runner-token) --labels docker:docker://node:16-bullseye,self-hosted:host://-self-hosted,lxc:lxc://debian:bullseye

And launched with:

cd setup-forgejo ; ../runner/forgejo-runner --config runner-config.yml daemon

Note that the runner-config.yml is required in that particular case to configure the network in bridge mode, otherwise the runner will create a network that cannot reach the forgejo instance.

Try a sample workflow

From the Forgejo web interface, create a repository and add the following to .forgejo/workflows/try.yaml. It will launch the job and the result can be observed from the actions tab.

on: [push]
    runs-on: docker
      - uses: actions/checkout@v3
      - run: |
          ls ${{ github.workspace }}