Skip to content

Commit dbed39d

Browse files
authored
Add migrations and doctor fixes (#33556)
Fix #33535
1 parent 02657e8 commit dbed39d

File tree

6 files changed

+81
-0
lines changed

6 files changed

+81
-0
lines changed

models/actions/runner.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,3 +337,17 @@ func FixRunnersWithoutBelongingRepo(ctx context.Context) (int64, error) {
337337
}
338338
return res.RowsAffected()
339339
}
340+
341+
func CountWrongRepoLevelRunners(ctx context.Context) (int64, error) {
342+
var result int64
343+
_, err := db.GetEngine(ctx).SQL("SELECT count(`id`) FROM `action_runner` WHERE `repo_id` > 0 AND `owner_id` > 0").Get(&result)
344+
return result, err
345+
}
346+
347+
func UpdateWrongRepoLevelRunners(ctx context.Context) (int64, error) {
348+
result, err := db.GetEngine(ctx).Exec("UPDATE `action_runner` SET `owner_id` = 0 WHERE `repo_id` > 0 AND `owner_id` > 0")
349+
if err != nil {
350+
return 0, err
351+
}
352+
return result.RowsAffected()
353+
}

models/actions/variable.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,3 +147,17 @@ func GetVariablesOfRun(ctx context.Context, run *ActionRun) (map[string]string,
147147

148148
return variables, nil
149149
}
150+
151+
func CountWrongRepoLevelVariables(ctx context.Context) (int64, error) {
152+
var result int64
153+
_, err := db.GetEngine(ctx).SQL("SELECT count(`id`) FROM `action_variable` WHERE `repo_id` > 0 AND `owner_id` > 0").Get(&result)
154+
return result, err
155+
}
156+
157+
func UpdateWrongRepoLevelVariables(ctx context.Context) (int64, error) {
158+
result, err := db.GetEngine(ctx).Exec("UPDATE `action_variable` SET `owner_id` = 0 WHERE `repo_id` > 0 AND `owner_id` > 0")
159+
if err != nil {
160+
return 0, err
161+
}
162+
return result.RowsAffected()
163+
}

models/migrations/migrations.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,7 @@ func prepareMigrationTasks() []*migration {
374374
// Gitea 1.23.0-rc0 ends at migration ID number 311 (database version 312)
375375
newMigration(312, "Add DeleteBranchAfterMerge to AutoMerge", v1_24.AddDeleteBranchAfterMergeForAutoMerge),
376376
newMigration(313, "Move PinOrder from issue table to a new table issue_pin", v1_24.MovePinOrderToTableIssuePin),
377+
newMigration(314, "Update OwnerID as zero for repository level action tables", v1_24.UpdateOwnerIDOfRepoLevelActionsTables),
377378
}
378379
return preparedMigrations
379380
}

models/migrations/v1_24/v314.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// Copyright 2025 The Gitea Authors. All rights reserved.
2+
// SPDX-License-Identifier: MIT
3+
4+
package v1_24 //nolint
5+
6+
import (
7+
"xorm.io/xorm"
8+
)
9+
10+
func UpdateOwnerIDOfRepoLevelActionsTables(x *xorm.Engine) error {
11+
if _, err := x.Exec("UPDATE `action_runner` SET `owner_id` = 0 WHERE `repo_id` > 0 AND `owner_id` > 0"); err != nil {
12+
return err
13+
}
14+
if _, err := x.Exec("UPDATE `action_variable` SET `owner_id` = 0 WHERE `repo_id` > 0 AND `owner_id` > 0"); err != nil {
15+
return err
16+
}
17+
_, err := x.Exec("UPDATE `secret` SET `owner_id` = 0 WHERE `repo_id` > 0 AND `owner_id` > 0")
18+
return err
19+
}

models/secret/secret.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,3 +165,17 @@ func GetSecretsOfTask(ctx context.Context, task *actions_model.ActionTask) (map[
165165

166166
return secrets, nil
167167
}
168+
169+
func CountWrongRepoLevelSecrets(ctx context.Context) (int64, error) {
170+
var result int64
171+
_, err := db.GetEngine(ctx).SQL("SELECT count(`id`) FROM `secret` WHERE `repo_id` > 0 AND `owner_id` > 0").Get(&result)
172+
return result, err
173+
}
174+
175+
func UpdateWrongRepoLevelSecrets(ctx context.Context) (int64, error) {
176+
result, err := db.GetEngine(ctx).Exec("UPDATE `secret` SET `owner_id` = 0 WHERE `repo_id` > 0 AND `owner_id` > 0")
177+
if err != nil {
178+
return 0, err
179+
}
180+
return result.RowsAffected()
181+
}

services/doctor/dbconsistency.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
issues_model "code.gitea.io/gitea/models/issues"
1313
"code.gitea.io/gitea/models/migrations"
1414
repo_model "code.gitea.io/gitea/models/repo"
15+
secret_model "code.gitea.io/gitea/models/secret"
1516
"code.gitea.io/gitea/modules/log"
1617
"code.gitea.io/gitea/modules/setting"
1718
)
@@ -164,6 +165,24 @@ func prepareDBConsistencyChecks() []consistencyCheck {
164165
Fixer: repo_model.DeleteOrphanedTopics,
165166
FixedMessage: "Removed",
166167
},
168+
{
169+
Name: "Repository level Runners with non-zero owner_id",
170+
Counter: actions_model.CountWrongRepoLevelRunners,
171+
Fixer: actions_model.UpdateWrongRepoLevelRunners,
172+
FixedMessage: "Corrected",
173+
},
174+
{
175+
Name: "Repository level Variables with non-zero owner_id",
176+
Counter: actions_model.CountWrongRepoLevelVariables,
177+
Fixer: actions_model.UpdateWrongRepoLevelVariables,
178+
FixedMessage: "Corrected",
179+
},
180+
{
181+
Name: "Repository level Secrets with non-zero owner_id",
182+
Counter: secret_model.CountWrongRepoLevelSecrets,
183+
Fixer: secret_model.UpdateWrongRepoLevelSecrets,
184+
FixedMessage: "Corrected",
185+
},
167186
}
168187

169188
// TODO: function to recalc all counters

0 commit comments

Comments
 (0)