end-to-end/upgrade/upgrade.sh

100 lines
2.3 KiB
Bash
Executable file

# SPDX-License-Identifier: MIT
UPGRADE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
function upgrade_reset() {
local config=$1
reset_forgejo $config
reset_minio
}
function verify_storage() {
local work_path=$DIR/forgejo-work-path
for path in ${STORAGE_PATHS}; do
test -d $work_path/data/$path
done
}
function cleanup_storage() {
local work_path=$DIR/forgejo-work-path
for path in ${STORAGE_PATHS}; do
rm -fr $work_path/data/$path
done
}
function test_successful_upgrades() {
stop
for config in $UPGRADE_DIR/default-app.ini; do
log_info "using $config"
upgrade_reset $config
version=7.0
log_info "run $version"
cleanup_storage
start $version
fixture_create
fixture_assert
doctor_run $config
for version in $RELEASE_NUMBERS; do
stop
log_info "run $version"
start $version
verify_storage
fixture_assert
doctor_run $config
done
done
}
function migration_assert() {
local work_path=$DIR/forgejo-work-path
local logfile=$work_path/log/forgejo.log
grep --quiet 'ORM engine initialization successful' $logfile
if grep --fixed-strings 'serveInstalled() [W] Table' $logfile; then
echo "unexpected warnings in database migration"
return 1
fi
}
function test_gitea_upgrades() {
local config=$UPGRADE_DIR/default-app.ini
(
echo gitea 1.21 forgejo 10.0
echo gitea 1.22 forgejo 10.0
) | while read gitea gitea_version forgejo forgejo_version; do
log_info "upgrading from Gitea $gitea_version to Forgejo $forgejo_version"
stop
upgrade_reset $config
log_info "run Gitea $gitea_version"
cleanup_storage
start_s3 minio
start_gitea $gitea_version $config
fixture_create
fixture_assert
doctor_run $config
stop
log_info "run Forgejo $forgejo_version"
start $forgejo_version
verify_storage
fixture_assert
doctor_run $config
migration_assert
done
}
source $UPGRADE_DIR/test-pprof-upload.sh
function test_upgrades() {
run dependencies
run test_successful_upgrades
run test_forgejo_pprof
run test_gitea_upgrades
}