diff --git a/lib/lib.sh b/lib/lib.sh index 7567a08..96bbb25 100644 --- a/lib/lib.sh +++ b/lib/lib.sh @@ -113,7 +113,7 @@ function full_version() { fi } -function download() { +function download_forgejo() { local version=$1 if ! test -f $DIR_BINARIES/forgejo-$version ; then @@ -129,7 +129,7 @@ function download() { done if test -s $DIR_BINARIES/forgejo-$version ; then if test "$version" != "$full_version" ; then - log_info "downloaded $full_version for $version" + log_info "downloaded Forgejo $full_version for $version" fi else echo unable to download Forgejo $version @@ -139,6 +139,31 @@ function download() { fi } +function download_gitea() { + local version=$1 + + if ! test -f $DIR_BINARIES/gitea-$version ; then + mkdir -p $DIR_BINARIES + if [[ $version =~ ^[0-9]+\.[0-9]+$ ]] ; then + full_version=$(curl -sS "https://api.github.com/repos/go-gitea/gitea/releases?per_page=100" | jq -r '.[] | .tag_name | select(startswith("v'$version'"))' | grep -v -e '-rc' | sort --reverse --version-sort | head -1) + full_version=${full_version#v} + else + full_version=$version + fi + wget -O $DIR_BINARIES/gitea-$version --quiet https://dl.gitea.com/gitea/$full_version/gitea-$full_version-linux-amd64 + + if test -s $DIR_BINARIES/gitea-$version ; then + if test "$version" != "$full_version" ; then + log_info "downloaded Gitea $full_version for $version" + fi + else + echo unable to download Gitea $version + return 1 + fi + chmod +x $DIR_BINARIES/gitea-$version + fi +} + function cleanup_logs() { local config=$1 @@ -159,11 +184,19 @@ function stop_forgejo() { stop_daemon $(work_path_base $config) } +function start_gitea() { + local version=$1 + local config=$2 + + download_gitea $version + start_forgejo_daemon $version $DIR_BINARIES/gitea-$version $config +} + function start_forgejo() { local version=$1 local config=$2 - download $version + download_forgejo $version start_forgejo_daemon $version $DIR_BINARIES/forgejo-$version $config } diff --git a/upgrade/upgrade.sh b/upgrade/upgrade.sh index 8d9ccb4..5b66d8c 100755 --- a/upgrade/upgrade.sh +++ b/upgrade/upgrade.sh @@ -30,65 +30,50 @@ function test_successful_upgrades() { log_info "using $config" upgrade_reset $config - version=1.21 + version=1.21 log_info "run $version" cleanup_storage - start $version - fixture_create - fixture_assert - doctor_run $config + start $version + fixture_create + fixture_assert + doctor_run $config for version in $RELEASE_NUMBERS_AND_DEV ; do stop log_info "run $version" start $version verify_storage - fixture_assert - doctor_run $config + fixture_assert + doctor_run $config done done } -function download_gitea() { - local version=$1 - - if ! test -f $DIR_BINARIES/gitea-$version ; then - mkdir -p $DIR_BINARIES - wget -O $DIR_BINARIES/gitea-$version --quiet https://dl.gitea.com/gitea/$version/gitea-$version-linux-amd64 - chmod +x $DIR_BINARIES/gitea-$version - fi -} - -function start_gitea() { - local version=$1 - - download_gitea $version - start_forgejo_daemon $version $DIR_BINARIES/gitea-$version -} - function test_gitea_upgrades() { - stop - for config in $UPGRADE_DIR/default-app.ini ; do - log_info "using $config" + local config=$UPGRADE_DIR/default-app.ini + ( + echo gitea 1.21 forgejo 7.0-test + echo gitea 1.21 forgejo 8.0-test + echo gitea 1.22 forgejo 8.0-test + ) | while read gitea gitea_version forgejo forgejo_version ; do + log_info "upgrading from Gitea $gitea_version to Forgejo $forgejo_version" + stop upgrade_reset $config - version=1.21.10 - log_info "run gitea $version" + log_info "run Gitea $gitea_version" cleanup_storage - start_s3 minio - start_gitea $version - fixture_create - fixture_assert - doctor_run $config + start_s3 minio + start_gitea $gitea_version $config + fixture_create + fixture_assert + doctor_run $config - for version in 7.0-test ; do - stop - log_info "run forgejo $version" - start $version - verify_storage - fixture_assert - doctor_run $config - done + stop + log_info "run Forgejo $forgejo_version" + start $forgejo_version + verify_storage + fixture_assert + doctor_run $config done }