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)
This commit is contained in:
sillyguodong 2023-03-20 10:19:40 +08:00 committed by GitHub
parent af3711100a
commit 371520d7ab
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 35 additions and 2 deletions

View file

@ -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()