.forgejo/workflows | ||
testdata | ||
utils | ||
.gitignore | ||
.gitmodules | ||
action.yml | ||
forgejo-curl.sh | ||
forgejo-dependencies.sh | ||
forgejo-runner-lib.sh | ||
forgejo-runner.sh | ||
forgejo-test-helper.sh | ||
forgejo.sh | ||
LICENSE | ||
lxc-helpers-lib.sh | ||
lxc-helpers.sh | ||
README.md | ||
runner-config.yaml | ||
RUNNER_REPOSITORY | ||
RUNNER_VERSION |
setup-forgejo
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 tagvTest
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 thetestrepo
directory. All occurrences ofSELF
intestrepo/.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 thetestrepo
directory.
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 script is logged in the instance and ready to be used with web or api endpoints.
It can only be run on the self-hosted
platform, running on a host with LXC installed.
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 |
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 |
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
orforgejo-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 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