2023-05-30 05:31:31 -05:00
# Forgejo Runner
**WARNING:** this is [alpha release quality ](https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha ) code and should not be considered secure enough to deploy in production.
2023-08-26 05:15:27 -05:00
A daemon that connects to a Forgejo instance and runs jobs for continous integration. The [installation and usage instructions ](https://forgejo.org/docs/next/admin/actions/ ) are part of the Forgejo documentation.
2023-05-30 05:47:12 -05:00
2023-05-30 05:31:31 -05:00
# Hacking
2023-11-04 18:36:12 -05:00
The Forgejo runner depends on [a fork of ACT ](https://code.forgejo.org/forgejo/act ) and is a dependency of the [setup-forgejo action ](https://code.forgejo.org/actions/setup-forgejo ). See [the full dependency graph ](https://code.forgejo.org/actions/cascading-pr/#forgejo-dependencies ) for a global view.
2023-05-30 05:31:31 -05:00
## Local debug
The repositories are checked out in the same directory:
- **runner**: [Forgejo runner ](https://code.forgejo.org/forgejo/runner )
- **act**: [ACT ](https://code.forgejo.org/forgejo/act )
- **setup-forgejo**: [setup-forgejo ](https://code.forgejo.org/actions/setup-forgejo )
### Install dependencies
The dependencies are installed manually or with:
```shell
setup-forgejo/forgejo-dependencies.sh
```
### 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 github.com/nektos/act => ../act
```
Running:
```
cd runner ; go mod tidy
```
Building:
```shell
cd runner ; rm -f forgejo-runner ; make forgejo-runner
```
### Launch Forgejo and the runner
A Forgejo instance is launched with:
```shell
cd setup-forgejo ; ./forgejo.sh setup
firefox http://$(cat forgejo-ip):3000
```
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
2023-05-30 07:58:37 -05:00
../runner/forgejo-runner register --no-interactive --instance "http://$(cat forgejo-ip):3000/" --name runner --token $(cat forgejo-runner-token) --labels docker:docker://node:16-bullseye,self-hosted
2023-05-30 05:31:31 -05:00
```
And launched with:
```shell
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
2023-10-22 17:12:03 -05:00
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.
2023-05-30 05:31:31 -05:00
```yaml
on: [push]
jobs:
ls:
runs-on: docker
steps:
- uses: actions/checkout@v3
- run: |
ls ${{ github.workspace }}
```