diff --git a/api/v2.0/swagger.yaml b/api/v2.0/swagger.yaml index 71805a43002..da1e9b25f4b 100644 --- a/api/v2.0/swagger.yaml +++ b/api/v2.0/swagger.yaml @@ -7846,6 +7846,9 @@ definitions: type: array items: $ref: '#/definitions/RobotPermission' + Creator: + type: string + description: The creator of the robot creation_time: type: string format: date-time diff --git a/make/migrations/postgresql/0150_2.12.0_schema.up.sql b/make/migrations/postgresql/0150_2.12.0_schema.up.sql new file mode 100644 index 00000000000..82c36bc9cbc --- /dev/null +++ b/make/migrations/postgresql/0150_2.12.0_schema.up.sql @@ -0,0 +1,5 @@ +/* +Add new column robot for artifact table to add a new column to record the creator of the robot +*/ +ALTER TABLE robot ADD COLUMN IF NOT EXISTS creator varchar(255); +UPDATE robot SET creator = 'unknown' WHERE creator IS NULL; diff --git a/src/controller/robot/controller.go b/src/controller/robot/controller.go index 28eef53e409..b2dc81dbbfa 100644 --- a/src/controller/robot/controller.go +++ b/src/controller/robot/controller.go @@ -130,6 +130,7 @@ func (d *controller) Create(ctx context.Context, r *Robot) (int64, string, error Duration: r.Duration, Salt: salt, Visible: r.Visible, + Creator: r.Creator, }) if err != nil { return 0, "", err diff --git a/src/controller/robot/controller_test.go b/src/controller/robot/controller_test.go index 2a97d059288..529c4b4bb46 100644 --- a/src/controller/robot/controller_test.go +++ b/src/controller/robot/controller_test.go @@ -113,6 +113,7 @@ func (suite *ControllerTestSuite) TestCreate() { Name: "testcreate", Description: "testcreate", Duration: 0, + Creator: "tester", }, ProjectName: "library", Level: LEVELPROJECT, diff --git a/src/pkg/robot/dao/dao_test.go b/src/pkg/robot/dao/dao_test.go index 4723b640190..972c75514d5 100644 --- a/src/pkg/robot/dao/dao_test.go +++ b/src/pkg/robot/dao/dao_test.go @@ -52,6 +52,7 @@ func (suite *DaoTestSuite) robots() { Description: "test3 description", ProjectID: 1, Secret: suite.RandString(10), + Creator: "tester", }) suite.Nil(err) @@ -120,6 +121,7 @@ func (suite *DaoTestSuite) TestGet() { r, err := suite.dao.Get(orm.Context(), suite.robotID3) suite.Nil(err) suite.Equal("test3", r.Name) + suite.Equal("tester", r.Creator) } func (suite *DaoTestSuite) TestCount() { diff --git a/src/pkg/robot/model/model.go b/src/pkg/robot/model/model.go index f35e309c624..a31cb0eeda0 100644 --- a/src/pkg/robot/model/model.go +++ b/src/pkg/robot/model/model.go @@ -39,6 +39,7 @@ type Robot struct { ExpiresAt int64 `orm:"column(expiresat)" json:"expires_at"` Disabled bool `orm:"column(disabled)" json:"disabled"` Visible bool `orm:"column(visible)" json:"-"` + Creator string `orm:"column(creator)" json:"creator"` CreationTime time.Time `orm:"column(creation_time);auto_now_add" json:"creation_time"` UpdateTime time.Time `orm:"column(update_time);auto_now" json:"update_time"` } diff --git a/src/server/v2.0/handler/model/robot.go b/src/server/v2.0/handler/model/robot.go index e1a97d2730d..d107bfc0bc7 100644 --- a/src/server/v2.0/handler/model/robot.go +++ b/src/server/v2.0/handler/model/robot.go @@ -48,6 +48,7 @@ func (r *Robot) ToSwagger() *models.Robot { Level: r.Level, Disable: r.Disabled, Editable: r.Editable, + Creator: r.Creator, CreationTime: strfmt.DateTime(r.CreationTime), UpdateTime: strfmt.DateTime(r.UpdateTime), Permissions: perms, diff --git a/src/server/v2.0/handler/robot.go b/src/server/v2.0/handler/robot.go index fff5f2aac14..6e910cdc1dd 100644 --- a/src/server/v2.0/handler/robot.go +++ b/src/server/v2.0/handler/robot.go @@ -62,12 +62,18 @@ func (rAPI *robotAPI) CreateRobot(ctx context.Context, params operation.CreateRo return rAPI.SendError(ctx, err) } + secCtx, err := rAPI.GetSecurityContext(ctx) + if err != nil { + return rAPI.SendError(ctx, err) + } + r := &robot.Robot{ Robot: pkg.Robot{ Name: params.Robot.Name, Description: params.Robot.Description, Duration: params.Robot.Duration, Visible: true, + Creator: secCtx.GetUsername(), }, Level: params.Robot.Level, }