From 371520d7ab5c018c380f8f7981a8be7d40a01f72 Mon Sep 17 00:00:00 2001 From: sillyguodong <33891828+sillyguodong@users.noreply.github.com> Date: Mon, 20 Mar 2023 10:19:40 +0800 Subject: 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) --- routers/api/actions/runner/interceptor.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'routers/api') 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() -- cgit v1.2.3