federation: stub that checks the nodeinfo of the two instances
This commit is contained in:
parent
19ce0fe6b1
commit
9b6442bfcf
8 changed files with 165 additions and 0 deletions
|
@ -76,6 +76,17 @@ jobs:
|
|||
if: always()
|
||||
run: su forgejo -c "./end-to-end.sh show_logs"
|
||||
|
||||
federation:
|
||||
needs: [build]
|
||||
runs-on: lxc-bookworm
|
||||
steps:
|
||||
- uses: https://code.forgejo.org/actions/checkout@v4
|
||||
- uses: ./.forgejo/prepare-end-to-end
|
||||
- run: su forgejo -c "./end-to-end.sh test_federation"
|
||||
- name: full logs
|
||||
if: always()
|
||||
run: su forgejo -c "./end-to-end.sh show_logs"
|
||||
|
||||
actions-docs:
|
||||
needs: [build]
|
||||
runs-on: lxc-bookworm
|
||||
|
|
|
@ -15,6 +15,7 @@ SELF_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|||
SELF="${BASH_SOURCE[0]}"
|
||||
source $SELF_DIR/lib/lib.sh
|
||||
|
||||
source $SELF_DIR/federation/federation.sh
|
||||
source $SELF_DIR/actions/actions.sh
|
||||
source $SELF_DIR/forgejo/fixtures.sh
|
||||
source $SELF_DIR/storage/storage.sh
|
||||
|
|
33
federation/ONE-app.ini
Normal file
33
federation/ONE-app.ini
Normal file
|
@ -0,0 +1,33 @@
|
|||
RUN_MODE = prod
|
||||
WORK_PATH = forgejo-ONE
|
||||
|
||||
[server]
|
||||
APP_DATA_PATH = ${WORK_PATH}/data
|
||||
DOMAIN = ${IP}
|
||||
HTTP_PORT = 3001
|
||||
SSH_LISTEN_PORT = 2201
|
||||
|
||||
[queue]
|
||||
TYPE = immediate
|
||||
|
||||
[database]
|
||||
DB_TYPE = sqlite3
|
||||
PATH = ${WORK_PATH}/forgejo.db
|
||||
|
||||
[log]
|
||||
MODE = file
|
||||
LEVEL = trace
|
||||
ROUTER = file
|
||||
|
||||
[log.file]
|
||||
FILE_NAME = forgejo.log
|
||||
|
||||
[security]
|
||||
INSTALL_LOCK = true
|
||||
|
||||
[repository]
|
||||
ENABLE_PUSH_CREATE_USER = true
|
||||
DEFAULT_PUSH_CREATE_PRIVATE = false
|
||||
|
||||
[federation]
|
||||
ENABLED = true
|
33
federation/TWO-app.ini
Normal file
33
federation/TWO-app.ini
Normal file
|
@ -0,0 +1,33 @@
|
|||
RUN_MODE = prod
|
||||
WORK_PATH = forgejo-TWO
|
||||
|
||||
[server]
|
||||
APP_DATA_PATH = ${WORK_PATH}/data
|
||||
DOMAIN = ${IP}
|
||||
HTTP_PORT = 3002
|
||||
SSH_LISTEN_PORT = 2202
|
||||
|
||||
[queue]
|
||||
TYPE = immediate
|
||||
|
||||
[database]
|
||||
DB_TYPE = sqlite3
|
||||
PATH = ${WORK_PATH}/forgejo.db
|
||||
|
||||
[log]
|
||||
MODE = file
|
||||
LEVEL = trace
|
||||
ROUTER = file
|
||||
|
||||
[log.file]
|
||||
FILE_NAME = forgejo.log
|
||||
|
||||
[security]
|
||||
INSTALL_LOCK = true
|
||||
|
||||
[repository]
|
||||
ENABLE_PUSH_CREATE_USER = true
|
||||
DEFAULT_PUSH_CREATE_PRIVATE = false
|
||||
|
||||
[federation]
|
||||
ENABLED = true
|
85
federation/federation.sh
Executable file
85
federation/federation.sh
Executable file
|
@ -0,0 +1,85 @@
|
|||
# Copyright 2024 The Forgejo Authors
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
FEDERATION_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
export FEDERATION_INSTANCES="ONE TWO"
|
||||
export FEDERATION_CONFIGS
|
||||
|
||||
function federation_setup_variables() {
|
||||
if test "$FEDERATION_CONFIGS" ; then
|
||||
return
|
||||
fi
|
||||
for instance in $FEDERATION_INSTANCES ; do
|
||||
local config=$FEDERATION_DIR/$instance-app.ini
|
||||
FEDERATION_CONFIGS="$FEDERATION_CONFIGS $config"
|
||||
local base=$(work_path_base $config)
|
||||
local work_path=$DIR/$base
|
||||
local host_port=$(get_host_port $config)
|
||||
|
||||
eval export ${instance}_CONFIG=$config
|
||||
eval export ${instance}_CURL=$work_path/forgejo-curl.sh
|
||||
eval export ${instance}_HOST_PORT=$host_port
|
||||
done
|
||||
}
|
||||
|
||||
function federation_verify_scenario() {
|
||||
local scenario=$1
|
||||
|
||||
export scenario
|
||||
export SCENARIO_DIR=$FEDERATION_DIR/scenario-$scenario
|
||||
|
||||
if test -f $SCENARIO_DIR/setup.sh ; then
|
||||
echo "============================ SETUP scenario-$scenario ==================="
|
||||
bash -ex $SCENARIO_DIR/setup.sh || return 1
|
||||
fi
|
||||
|
||||
echo "============================ RUN scenario-$scenario ==================="
|
||||
bash -ex $SCENARIO_DIR/run.sh || return 1
|
||||
|
||||
if test -f $SCENARIO_DIR/teardown.sh ; then
|
||||
echo "============================ TEARDOWN scenario-$scenario ==================="
|
||||
bash -ex $SCENARIO_DIR/teardown.sh || return 1
|
||||
fi
|
||||
}
|
||||
|
||||
function federation_setup() {
|
||||
federation_setup_variables
|
||||
|
||||
local version=$1
|
||||
federation_teardown
|
||||
|
||||
local config
|
||||
for config in $FEDERATION_CONFIGS ; do
|
||||
reset_forgejo $config
|
||||
start_forgejo $version $config
|
||||
done
|
||||
}
|
||||
|
||||
function federation_teardown() {
|
||||
federation_setup_variables
|
||||
|
||||
local config
|
||||
for config in $FEDERATION_CONFIGS ; do
|
||||
stop_forgejo $config
|
||||
done
|
||||
}
|
||||
|
||||
function test_federation() {
|
||||
federation_setup_variables
|
||||
|
||||
local versions="${1:-$RELEASE_NUMBERS_AND_DEV}"
|
||||
|
||||
for version in $versions ; do
|
||||
|
||||
if dpkg --compare-versions $version lt 7.1 ; then
|
||||
continue
|
||||
fi
|
||||
|
||||
federation_setup $version
|
||||
|
||||
for scenario in star ; do
|
||||
run federation_verify_scenario $scenario
|
||||
done
|
||||
done
|
||||
}
|
2
federation/scenario-star/run.sh
Normal file
2
federation/scenario-star/run.sh
Normal file
|
@ -0,0 +1,2 @@
|
|||
test forgejo = $($ONE_CURL api_json $ONE_HOST_PORT/api/v1/nodeinfo | jq -r .software.name)
|
||||
test forgejo = $($TWO_CURL api_json $TWO_HOST_PORT/api/v1/nodeinfo | jq -r .software.name)
|
0
federation/scenario-star/setup.sh
Normal file
0
federation/scenario-star/setup.sh
Normal file
0
federation/scenario-star/teardown.sh
Normal file
0
federation/scenario-star/teardown.sh
Normal file
Loading…
Add table
Reference in a new issue