mirror of
https://code.forgejo.org/actions/setup-forgejo.git
synced 2024-11-24 00:40:58 -05:00
122 lines
4.6 KiB
Markdown
122 lines
4.6 KiB
Markdown
# setup-forgejo
|
|
|
|
<!-- action-docs-description -->
|
|
## Description
|
|
|
|
Setup Forgejo and a runner.
|
|
|
|
The forgejo-test-helper.sh script is available to help test and debug actions.
|
|
|
|
`forgejo=http://root:admin1234@${{ steps.forgejo.outputs.host-port }}`
|
|
|
|
* `forgejo-test-helper.sh push_self_action $forgejo root myaction vTest`
|
|
Creates the repository `$forgejo/root/myaction` and populates it with the
|
|
content of the repository under test, except for the `.forgejo` directory
|
|
(it would otherwise create an infinite loop). The tag `vTest` is
|
|
set to the SHA under test.
|
|
* `forgejo-test-helper.sh run_workflow testrepo $forgejo root testrepo myaction`
|
|
Creates the repository `$forgejo/root/testrepo` and populates it with the
|
|
content of the `testrepo` directory. All occurrences of `SELF` in
|
|
`testrepo/.forgejo/workflows/*.yml` are replaced with `$forgejo/root/myaction`.
|
|
* `forgejo-test-helper.sh push testrepo $forgejo root testrepo`
|
|
Creates the repository `$forgejo/root/testrepo` and populates it with the
|
|
content of the `testrepo` directory.
|
|
* `forgejo-test-helper.sh build_runner $forgejo/forgejo/runner v3.0.1`
|
|
Builds the forgejo runner from source in `./forgejo-runner/forgejo-runner`.
|
|
`export PATH=$(pwd)/forgejo-runner:$PATH` will ensure that calling `forgejo-runner.sh`
|
|
will use this binary instead of downloading a released version of the runner.
|
|
If the version is not specified, build from the main branch.
|
|
|
|
The combination of `push_self_action` and `run_workflow` allows to
|
|
run Forgejo Actions workflows from `testrepo` that use the action
|
|
under test (`myaction`) to verify it works as intended.
|
|
|
|
The [forgejo-curl.sh](https://code.forgejo.org/forgejo/forgejo-curl#forgejo-curlsh)
|
|
script is logged in the instance and ready to be used with web or api endpoints.
|
|
<!-- action-docs-description -->
|
|
|
|
It can only be run on the `self-hosted` platform, running on a host with LXC installed.
|
|
|
|
<!-- action-docs-inputs -->
|
|
## Inputs
|
|
|
|
| parameter | description | required | default |
|
|
| --- | --- | --- | --- |
|
|
| image | Container image | `false` | codeberg.org/forgejo/forgejo |
|
|
| image-version | Container image version | `false` | 1.20 |
|
|
| user | Administrator user name | `false` | root |
|
|
| password | Administrator password | `false` | admin1234 |
|
|
| runner | Runner git repository | `false` | https://code.forgejo.org/forgejo/runner |
|
|
| runner-version | Runner version | `false` | v3.0.1 |
|
|
| container | Name of the container running the Forgejo instance | `false` | forgejo |
|
|
| lxc-ip-prefix | Class C IP prefix used by LXC | `false` | 10.0.23 |
|
|
<!-- action-docs-inputs -->
|
|
|
|
|
|
<!-- action-docs-outputs -->
|
|
## Outputs
|
|
|
|
| parameter | description |
|
|
| --- | --- |
|
|
| url | URL of the Forgejo instance |
|
|
| host-port | Host and port of the Forgejo instance, e.g 172.0.17.2:3000 |
|
|
| token | Administrator application token with all,sudo scopes |
|
|
| runner-logs | Filename of the Forgejo runner logs |
|
|
| runner-file | Path to the runner file |
|
|
<!-- action-docs-outputs -->
|
|
|
|
## Example
|
|
|
|
```
|
|
name: Setup Forgejo
|
|
on: [push]
|
|
jobs:
|
|
setup-forgejo:
|
|
runs-on: self-hosted
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- id: forgejo
|
|
uses: actions/setup-forgejo@v1
|
|
with:
|
|
image-version: 1.20
|
|
- run: |
|
|
curl ${{ steps.forgejo.outputs.url }}/api/forgejo/v1/version | grep 1.20
|
|
|
|
```
|
|
|
|
## Hacking
|
|
|
|
### Documentation
|
|
|
|
Update the README from the action file with https://github.com/npalm/action-docs `action-docs --update-readme`
|
|
|
|
### Local testing
|
|
|
|
To run and debug workflows from `testdata/example-*`, from
|
|
the root of the source directory, with docker and forgejo-curl.sh
|
|
installed, mimic what `.forgejo/workflows/integration.yml` does. There
|
|
may be some manual tweaking (such as creating temporary directories)
|
|
because the tests run as root, but they do not need to run as root.
|
|
|
|
* `forgejo-curl.sh logout`
|
|
* `forgejo.sh setup root admin1234 codeberg.org/forgejo/forgejo 1.21`
|
|
* `firefox http://$(cat forgejo-ip):3000`
|
|
* `forgejo-runner.sh setup`
|
|
* `export example=pull-request`
|
|
* `export EXAMPLE_DIR=$(pwd)/testdata/example-$example`
|
|
* `$EXAMPLE_DIR/setup.sh` # if it exists
|
|
* `$EXAMPLE_DIR/run.sh` or
|
|
* `forgejo-test-helper.sh run_workflow testdata/example-$example http://root:admin1234@$(cat forgejo-ip):3000 root example-$example setup-forgejo $(cat forgejo-token)`
|
|
* `forgejo-runner.sh teardown`
|
|
* `forgejo.sh teardown`
|
|
|
|
### Remote testing
|
|
|
|
To reduce the runtime the following variables can be set to control
|
|
the number of cases run by the
|
|
[integration](.forgejo/workflows/integration.yml) tests. If set to
|
|
**none** they are not run at all for that version of Forgejo. If
|
|
it does not exist, all tests are run.
|
|
|
|
* `V1_21_TESTS`
|
|
* `V1_20_TESTS`
|