forked from NYANDEV/forgejo
[UPGRADE] run sanity checks before the database is upgraded
(cherry picked from commit 69741e4e66932a9ac092089e7ba27399c55dcd1a) (cherry picked from commit 2a3c7b09cbdfd62cca2619aaf37b6913a373d142) (cherry picked from commit a1554c1168d897e8db4024d716a837c012bf74e9) (cherry picked from commit edae2c6d2dda7f44e40ae88fba60a15f61b72232) (cherry picked from commit 49737cf009a6a0fc119cf8a1a1593493c77c841a) (cherry picked from commit ec53704c34a3e9491b4f210250d5e053f4b221e5) (cherry picked from commit 7a1c5c0f323cb5e9235d8fa6e59a0a1b172d3abb) (cherry picked from commit e658c20c0f21b42f741c0149e0e79ea0bb3b949c) (cherry picked from commit baf575468f39c5dd0c2ff3498ef9f706d12d114e) (cherry picked from commit 40cb14eff427c801243e374f7c60fef994bcb792) (cherry picked from commit 25ab4d07136d023236de00e9143957c856b4d196) (cherry picked from commit 5a29005215a5e9419ed3096c1bc0aae172f45089) (cherry picked from commit fef1260e990719af49644970aaa2a7219438b681)
This commit is contained in:
parent
11717b864b
commit
eadbbb1afe
4 changed files with 84 additions and 0 deletions
|
@ -29,6 +29,7 @@ import (
|
||||||
"code.gitea.io/gitea/modules/git"
|
"code.gitea.io/gitea/modules/git"
|
||||||
"code.gitea.io/gitea/modules/log"
|
"code.gitea.io/gitea/modules/log"
|
||||||
"code.gitea.io/gitea/modules/setting"
|
"code.gitea.io/gitea/modules/setting"
|
||||||
|
forgejo_services "code.gitea.io/gitea/services/forgejo"
|
||||||
|
|
||||||
"xorm.io/xorm"
|
"xorm.io/xorm"
|
||||||
"xorm.io/xorm/names"
|
"xorm.io/xorm/names"
|
||||||
|
@ -607,6 +608,7 @@ func Migrate(x *xorm.Engine) error {
|
||||||
return fmt.Errorf("sync: %w", err)
|
return fmt.Errorf("sync: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var previousVersion int64
|
||||||
currentVersion := &Version{ID: 1}
|
currentVersion := &Version{ID: 1}
|
||||||
has, err := x.Get(currentVersion)
|
has, err := x.Get(currentVersion)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -620,6 +622,8 @@ func Migrate(x *xorm.Engine) error {
|
||||||
if _, err = x.InsertOne(currentVersion); err != nil {
|
if _, err = x.InsertOne(currentVersion); err != nil {
|
||||||
return fmt.Errorf("insert: %w", err)
|
return fmt.Errorf("insert: %w", err)
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
previousVersion = currentVersion.Version
|
||||||
}
|
}
|
||||||
|
|
||||||
v := currentVersion.Version
|
v := currentVersion.Version
|
||||||
|
@ -647,6 +651,10 @@ Please try upgrading to a lower version first (suggested v1.6.4), then upgrade t
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := forgejo_services.PreMigrationSanityChecks(x, previousVersion, setting.CfgProvider); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
// Migrate
|
// Migrate
|
||||||
for i, m := range migrations[v-minDBVersion:] {
|
for i, m := range migrations[v-minDBVersion:] {
|
||||||
log.Info("Migration[%d]: %s", v+int64(i), m.Description())
|
log.Info("Migration[%d]: %s", v+int64(i), m.Description())
|
||||||
|
|
20
services/forgejo/main_test.go
Normal file
20
services/forgejo/main_test.go
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
package forgejo
|
||||||
|
|
||||||
|
import (
|
||||||
|
"path/filepath"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/models/unittest"
|
||||||
|
|
||||||
|
_ "code.gitea.io/gitea/models"
|
||||||
|
_ "code.gitea.io/gitea/models/actions"
|
||||||
|
_ "code.gitea.io/gitea/models/activities"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestMain(m *testing.M) {
|
||||||
|
unittest.MainTest(m, &unittest.TestOptions{
|
||||||
|
GiteaRootPath: filepath.Join("..", ".."),
|
||||||
|
})
|
||||||
|
}
|
25
services/forgejo/sanity.go
Normal file
25
services/forgejo/sanity.go
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
package forgejo
|
||||||
|
|
||||||
|
import (
|
||||||
|
"code.gitea.io/gitea/models/db"
|
||||||
|
"code.gitea.io/gitea/modules/log"
|
||||||
|
"code.gitea.io/gitea/modules/setting"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
ForgejoV5DatabaseVersion = int64(260)
|
||||||
|
ForgejoV4DatabaseVersion = int64(244)
|
||||||
|
)
|
||||||
|
|
||||||
|
var logFatal = log.Fatal
|
||||||
|
|
||||||
|
func fatal(err error) error {
|
||||||
|
logFatal("%v", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func PreMigrationSanityChecks(e db.Engine, dbVersion int64, cfg setting.ConfigProvider) error {
|
||||||
|
return nil
|
||||||
|
}
|
31
services/forgejo/sanity_test.go
Normal file
31
services/forgejo/sanity_test.go
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
package forgejo
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/models/db"
|
||||||
|
"code.gitea.io/gitea/models/unittest"
|
||||||
|
"code.gitea.io/gitea/modules/setting"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestForgejo_PreMigrationSanityChecks(t *testing.T) {
|
||||||
|
assert.NoError(t, unittest.PrepareTestDatabase())
|
||||||
|
ctx := db.DefaultContext
|
||||||
|
e := db.GetEngine(ctx)
|
||||||
|
|
||||||
|
assert.NoError(t, PreMigrationSanityChecks(e, ForgejoV4DatabaseVersion, configFixture(t, "")))
|
||||||
|
}
|
||||||
|
|
||||||
|
func configFixture(t *testing.T, content string) setting.ConfigProvider {
|
||||||
|
config := filepath.Join(t.TempDir(), "app.ini")
|
||||||
|
assert.NoError(t, os.WriteFile(config, []byte(content), 0o777))
|
||||||
|
cfg, err := setting.NewConfigProviderFromFile(config)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
return cfg
|
||||||
|
}
|
Loading…
Reference in a new issue