aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsillyguodong <33891828+sillyguodong@users.noreply.github.com>2023-03-20 10:19:40 +0800
committerGitHub <noreply@github.com>2023-03-19 22:19:40 -0400
commit371520d7ab5c018c380f8f7981a8be7d40a01f72 (patch)
tree084dd96049824c148aee3139a48e627d0281f37b
parentaf3711100a7dc73e8c2482667bbccdcd049e25e0 (diff)
downloadgitea-371520d7ab5c018c380f8f7981a8be7d40a01f72.tar.gz
gitea-371520d7ab5c018c380f8f7981a8be7d40a01f72.zip
Display the version of runner in the runner list (#23490)
Close: #23489 ### Change 1. Add version column to action_runner table. 2. Read the runner version from the request header, and update it in DB. 3. Display version in runner list ### Screenshot ![image](https://user-images.githubusercontent.com/33891828/225220990-98bc0158-4403-4e6c-9805-31bbbc65a802.png)
-rw-r--r--models/actions/runner.go1
-rw-r--r--models/migrations/migrations.go2
-rw-r--r--models/migrations/v1_20/v248.go14
-rw-r--r--options/locale/locale_en-US.ini1
-rw-r--r--routers/api/actions/runner/interceptor.go17
-rw-r--r--templates/shared/actions/runner_list.tmpl2
6 files changed, 35 insertions, 2 deletions
diff --git a/models/actions/runner.go b/models/actions/runner.go
index 4efe105b08..cce8b4f443 100644
--- a/models/actions/runner.go
+++ b/models/actions/runner.go
@@ -25,6 +25,7 @@ type ActionRunner struct {
ID int64
UUID string `xorm:"CHAR(36) UNIQUE"`
Name string `xorm:"VARCHAR(255)"`
+ Version string `xorm:"VARCHAR(64)"`
OwnerID int64 `xorm:"index"` // org level runner, 0 means system
Owner *user_model.User `xorm:"-"`
RepoID int64 `xorm:"index"` // repo level runner, if orgid also is zero, then it's a global
diff --git a/models/migrations/migrations.go b/models/migrations/migrations.go
index 5401ae2fa6..6224e1c8d7 100644
--- a/models/migrations/migrations.go
+++ b/models/migrations/migrations.go
@@ -473,6 +473,8 @@ var migrations = []Migration{
NewMigration("Add missed column owner_id for project table", v1_20.AddNewColumnForProject),
// v247 -> v248
NewMigration("Fix incorrect project type", v1_20.FixIncorrectProjectType),
+ // v248 -> v249
+ NewMigration("Add version column to action_runner table", v1_20.AddVersionToActionRunner),
}
// GetCurrentDBVersion returns the current db version
diff --git a/models/migrations/v1_20/v248.go b/models/migrations/v1_20/v248.go
new file mode 100644
index 0000000000..40555210e7
--- /dev/null
+++ b/models/migrations/v1_20/v248.go
@@ -0,0 +1,14 @@
+// Copyright 2023 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package v1_20 //nolint
+
+import "xorm.io/xorm"
+
+func AddVersionToActionRunner(x *xorm.Engine) error {
+ type ActionRunner struct {
+ Version string `xorm:"VARCHAR(64)"` // the version of act_runner
+ }
+
+ return x.Sync(new(ActionRunner))
+}
diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini
index da925a27f5..e519258c6b 100644
--- a/options/locale/locale_en-US.ini
+++ b/options/locale/locale_en-US.ini
@@ -3355,6 +3355,7 @@ runners.status.unspecified = Unknown
runners.status.idle = Idle
runners.status.active = Active
runners.status.offline = Offline
+runners.version = Version
runs.all_workflows = All Workflows
runs.open_tab = %d Open
diff --git a/routers/api/actions/runner/interceptor.go b/routers/api/actions/runner/interceptor.go
index 8c0bd86ecb..d97b78f851 100644
--- a/routers/api/actions/runner/interceptor.go
+++ b/routers/api/actions/runner/interceptor.go
@@ -21,8 +21,11 @@ import (
)
const (
- uuidHeaderKey = "x-runner-uuid"
- tokenHeaderKey = "x-runner-token"
+ uuidHeaderKey = "x-runner-uuid"
+ tokenHeaderKey = "x-runner-token"
+ versionHeaderKey = "x-runner-version"
+
+ versionUnknown = "Unknown"
)
var withRunner = connect.WithInterceptors(connect.UnaryInterceptorFunc(func(unaryFunc connect.UnaryFunc) connect.UnaryFunc {
@@ -33,6 +36,12 @@ var withRunner = connect.WithInterceptors(connect.UnaryInterceptorFunc(func(unar
}
uuid := request.Header().Get(uuidHeaderKey)
token := request.Header().Get(tokenHeaderKey)
+ version := request.Header().Get(versionHeaderKey)
+ if util.IsEmptyString(version) {
+ version = versionUnknown
+ }
+ version, _ = util.SplitStringAtByteN(version, 64)
+
runner, err := actions_model.GetRunnerByUUID(ctx, uuid)
if err != nil {
if errors.Is(err, util.ErrNotExist) {
@@ -45,6 +54,10 @@ var withRunner = connect.WithInterceptors(connect.UnaryInterceptorFunc(func(unar
}
cols := []string{"last_online"}
+ if runner.Version != version {
+ runner.Version = version
+ cols = append(cols, "version")
+ }
runner.LastOnline = timeutil.TimeStampNow()
if methodName == "UpdateTask" || methodName == "UpdateLog" {
runner.LastActive = timeutil.TimeStampNow()
diff --git a/templates/shared/actions/runner_list.tmpl b/templates/shared/actions/runner_list.tmpl
index 30c52c01b4..dd2e43f816 100644
--- a/templates/shared/actions/runner_list.tmpl
+++ b/templates/shared/actions/runner_list.tmpl
@@ -49,6 +49,7 @@
<th data-sortt-asc="online" data-sortt-desc="offline">{{.locale.Tr "actions.runners.status"}}</th>
<th data-sortt-asc="alphabetically">{{.locale.Tr "actions.runners.id"}}</th>
<th>{{.locale.Tr "actions.runners.name"}}</th>
+ <th>{{.locale.Tr "actions.runners.version"}}</th>
<th>{{.locale.Tr "actions.runners.owner_type"}}</th>
<th>{{.locale.Tr "actions.runners.labels"}}</th>
<th>{{.locale.Tr "actions.runners.last_online"}}</th>
@@ -64,6 +65,7 @@
</td>
<td>{{.ID}}</td>
<td><p class="tooltip" data-content="{{.Description}}">{{.Name}}</p></td>
+ <td>{{.Version}}</td>
<td>{{.OwnType}}</td>
<td class="runner-tags">
{{range .AllLabels}}<span class="ui label">{{.}}</span>{{end}}