2023-04-01 11:08:06 +02:00
|
|
|
# SPDX-License-Identifier: MIT
|
2023-03-25 14:44:02 +01:00
|
|
|
name: 'Setup Forgejo'
|
2023-03-25 22:53:12 +01:00
|
|
|
author: 'Forgejo authors'
|
2023-03-29 15:23:09 +02:00
|
|
|
description: |
|
|
|
|
Setup Forgejo and a runner.
|
|
|
|
|
2023-12-17 22:22:55 +01:00
|
|
|
If `binary` is specified, Forgejo downloads the binary from the URL and uses
|
|
|
|
it to start an instance.
|
|
|
|
|
|
|
|
Otherwise, `image` and `image-version` must be specified and Forgejo
|
|
|
|
runs from the corresponding container image using docker.
|
|
|
|
|
2023-03-29 15:23:09 +02:00
|
|
|
The forgejo-test-helper.sh script is available to help test and debug actions.
|
|
|
|
|
2023-03-29 16:50:46 +02:00
|
|
|
`forgejo=http://root:admin1234@${{ steps.forgejo.outputs.host-port }}`
|
2023-03-29 15:23:09 +02:00
|
|
|
|
2023-03-29 16:50:46 +02:00
|
|
|
* `forgejo-test-helper.sh push_self_action $forgejo root myaction vTest`
|
2023-09-24 16:54:52 +02:00
|
|
|
Creates the repository `$forgejo/root/myaction` and populates it with the
|
2023-03-29 15:23:09 +02:00
|
|
|
content of the repository under test, except for the `.forgejo` directory
|
2023-09-24 16:54:52 +02:00
|
|
|
(it would otherwise create an infinite loop). The tag `vTest` is
|
2023-03-29 15:23:09 +02:00
|
|
|
set to the SHA under test.
|
2023-03-29 16:50:46 +02:00
|
|
|
* `forgejo-test-helper.sh run_workflow testrepo $forgejo root testrepo myaction`
|
2023-09-24 16:54:52 +02:00
|
|
|
Creates the repository `$forgejo/root/testrepo` and populates it with the
|
2023-03-29 15:23:09 +02:00
|
|
|
content of the `testrepo` directory. All occurrences of `SELF` in
|
|
|
|
`testrepo/.forgejo/workflows/*.yml` are replaced with `$forgejo/root/myaction`.
|
2023-03-29 16:50:46 +02:00
|
|
|
* `forgejo-test-helper.sh push testrepo $forgejo root testrepo`
|
2023-09-24 16:54:52 +02:00
|
|
|
Creates the repository `$forgejo/root/testrepo` and populates it with the
|
2023-10-07 23:27:24 +02:00
|
|
|
content of the `testrepo` directory.
|
2023-03-29 15:23:09 +02:00
|
|
|
|
2023-03-29 16:50:46 +02:00
|
|
|
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.
|
2023-03-29 15:23:09 +02:00
|
|
|
|
2023-09-24 16:54:52 +02:00
|
|
|
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.
|
|
|
|
|
2023-03-24 15:59:04 +01:00
|
|
|
inputs:
|
2023-03-25 22:53:12 +01:00
|
|
|
image:
|
|
|
|
description: 'Container image'
|
|
|
|
default: 'codeberg.org/forgejo/forgejo'
|
|
|
|
image-version:
|
|
|
|
description: 'Container image version'
|
2023-07-27 20:45:06 +02:00
|
|
|
default: '1.20'
|
2023-12-17 22:22:55 +01:00
|
|
|
binary:
|
|
|
|
description: 'URL to a Forgejo binary'
|
2023-03-25 23:15:29 +01:00
|
|
|
user:
|
|
|
|
description: 'Administrator user name'
|
|
|
|
default: 'root'
|
|
|
|
password:
|
|
|
|
description: 'Administrator password'
|
|
|
|
default: 'admin1234'
|
2023-03-25 22:53:12 +01:00
|
|
|
runner:
|
2023-10-14 21:59:11 +02:00
|
|
|
description: 'Runner repository'
|
2023-03-27 19:39:19 +02:00
|
|
|
default: 'https://code.forgejo.org/forgejo/runner'
|
2023-03-25 22:53:12 +01:00
|
|
|
runner-version:
|
2023-10-14 21:59:11 +02:00
|
|
|
description: 'Runner version. If it starts with @ (for instance @featurebranch), the runner will be built from source using the specified branch.'
|
2025-01-22 23:11:43 +01:00
|
|
|
default: 'v6.2.0'
|
2023-04-01 14:51:42 +02:00
|
|
|
container:
|
|
|
|
description: 'Name of the container running the Forgejo instance'
|
|
|
|
default: 'forgejo'
|
2023-03-30 00:27:54 +02:00
|
|
|
lxc-ip-prefix:
|
|
|
|
description: 'Class C IP prefix used by LXC'
|
|
|
|
default: '10.0.23'
|
2023-10-28 23:47:47 +02:00
|
|
|
install-only:
|
|
|
|
description: 'Only install Forgejo and the Forgejo runner, do not launch them'
|
|
|
|
default: 'false'
|
2023-03-24 15:59:04 +01:00
|
|
|
outputs:
|
2023-03-25 22:53:12 +01:00
|
|
|
url:
|
2023-03-27 17:36:59 +02:00
|
|
|
description: "URL of the Forgejo instance"
|
2023-03-27 16:43:26 +02:00
|
|
|
value: "${{ steps.forgejo.outputs.url }}"
|
|
|
|
host-port:
|
2023-03-27 17:36:59 +02:00
|
|
|
description: "Host and port of the Forgejo instance, e.g 172.0.17.2:3000"
|
2023-03-27 16:43:26 +02:00
|
|
|
value: "${{ steps.forgejo.outputs.host-port }}"
|
2023-03-25 23:15:29 +01:00
|
|
|
token:
|
2023-11-08 17:26:50 +01:00
|
|
|
description: "Administrator application token with all scopes"
|
2023-03-27 16:43:26 +02:00
|
|
|
value: "${{ steps.forgejo.outputs.token }}"
|
2023-03-27 17:36:59 +02:00
|
|
|
runner-logs:
|
|
|
|
description: "Filename of the Forgejo runner logs"
|
|
|
|
value: "${{ steps.forgejo.outputs.runner-logs }}"
|
2023-07-02 00:37:53 +02:00
|
|
|
runner-file:
|
|
|
|
description: "Path to the runner file"
|
|
|
|
value: "${{ steps.forgejo.outputs.runner-file }}"
|
2023-03-27 17:36:59 +02:00
|
|
|
|
2023-03-24 15:59:04 +01:00
|
|
|
runs:
|
|
|
|
using: "composite"
|
|
|
|
steps:
|
2023-03-25 19:07:46 +01:00
|
|
|
- run: echo "${{ github.action_path }}" >> $GITHUB_PATH
|
|
|
|
shell: bash
|
2024-12-07 14:01:14 +00:00
|
|
|
- uses: actions/checkout@v4
|
2023-03-25 22:53:12 +01:00
|
|
|
- id: forgejo
|
|
|
|
run: |
|
2023-03-25 23:24:07 +01:00
|
|
|
cd $(mktemp -d)
|
2023-05-23 01:29:17 +02:00
|
|
|
cp ${{ github.action_path }}/runner-config.yaml .
|
2023-04-01 18:22:40 +02:00
|
|
|
LXC_IP_PREFIX=${{ inputs.lxc-ip-prefix }} forgejo-dependencies.sh
|
2023-10-28 23:47:47 +02:00
|
|
|
if ${{ inputs.install-only }} ; then
|
|
|
|
echo "install-only is true, do not run Forgejo"
|
|
|
|
exit 0
|
|
|
|
fi
|
2023-12-17 22:22:55 +01:00
|
|
|
if test "${{ inputs.binary }}"; then
|
|
|
|
forgejo-binary.sh ensure_user forgejo
|
2023-12-20 22:22:14 +01:00
|
|
|
chown forgejo $(pwd)
|
2023-12-17 22:22:55 +01:00
|
|
|
su -c "DIR=$(pwd) forgejo-binary.sh setup ${{ inputs.user }} ${{ inputs.password }} ${{ inputs.binary }}" forgejo
|
|
|
|
su -c "DIR=$(pwd) forgejo-runner.sh setup ${{ inputs.runner }} ${{ inputs.runner-version }} $(cat forgejo-url)" forgejo
|
|
|
|
else
|
|
|
|
export CONTAINER=${{ inputs.container }}
|
|
|
|
forgejo.sh setup ${{ inputs.user }} "${{ inputs.password }}" ${{ inputs.image }} ${{ inputs.image-version }}
|
|
|
|
forgejo-runner.sh setup ${{ inputs.runner }} ${{ inputs.runner-version }} $(cat forgejo-url)
|
|
|
|
fi
|
|
|
|
echo url="$(cat forgejo-url)" >> $GITHUB_OUTPUT
|
2023-03-27 16:43:26 +02:00
|
|
|
echo host-port="$(cat forgejo-ip):3000" >> $GITHUB_OUTPUT
|
2023-03-25 23:15:29 +01:00
|
|
|
echo token=$(cat forgejo-token) >> $GITHUB_OUTPUT
|
2023-03-27 17:36:59 +02:00
|
|
|
echo runner-logs="$(pwd)/forgejo-runner.log" >> $GITHUB_OUTPUT
|
2023-05-23 01:29:17 +02:00
|
|
|
echo runner-file="$(pwd)/.runner" >> $GITHUB_OUTPUT
|
2023-03-24 15:59:04 +01:00
|
|
|
shell: bash
|