Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
a733946
wip: added code for audit logs of git repositories.
iamayushm Nov 3, 2022
7eb0089
wip: added code for audit logs of git repositories.
iamayushm Nov 3, 2022
041c5d8
wip: added code for audit logs of git repositories.
iamayushm Nov 3, 2022
6d28ebc
wip: added code for audit logs of git repositories.
iamayushm Nov 3, 2022
1b47ea4
wip: added code for audit logs of ci template
iamayushm Nov 4, 2022
6ed619d
audit logs ci template
iamayushm Nov 5, 2022
b676b53
audit logs ci template
iamayushm Nov 5, 2022
7eb627b
Merge branch 'main' into audit_logs_docker_git_repositories
iamayushm Nov 7, 2022
1847ea8
wip: ci template audit logs
iamayushm Nov 7, 2022
0978e7b
wip: audit logs ci template and ci build config
iamayushm Nov 7, 2022
f24de5e
wip: audit logs ci pipeline
iamayushm Nov 7, 2022
9206aba
wip: audit logs for ci pipeline material
iamayushm Nov 8, 2022
5dfe57a
wip: removing unnecessary columns
iamayushm Nov 8, 2022
a4a3b83
sql: audit logs ci pipeline repository
iamayushm Nov 9, 2022
f3f876f
sql: adding trigger in audit logs of ci template repository
iamayushm Nov 9, 2022
257e291
adding AppId in CiTempalte object
iamayushm Nov 9, 2022
bc8ae91
wip: correcting update time of history
iamayushm Nov 9, 2022
428194e
modifying sql scripts
iamayushm Nov 10, 2022
7519e00
modifying sql scripts
iamayushm Nov 10, 2022
75e2d7d
modifying sql script of git and docker audit logs
iamayushm Nov 10, 2022
9e88506
Merge branch 'main' into audit_logs_docker_git_repositories
iamayushm Nov 15, 2022
81703a0
fixing import
iamayushm Nov 15, 2022
85d2e0e
fixing import
iamayushm Nov 15, 2022
79e69c0
removing returned error
iamayushm Nov 16, 2022
0d721e7
removing returned error
iamayushm Nov 16, 2022
3b624c9
adding scan enabled and pipeline trigger type
iamayushm Nov 17, 2022
3212fd8
adding scan enabled and pipeline trigger type
iamayushm Nov 17, 2022
5fde996
adding scan enabled and pipeline trigger type
iamayushm Nov 17, 2022
e5667b1
adding created on time in ci pipeline history
iamayushm Nov 17, 2022
75be72a
Merge branch 'main' into audit_logs_docker_git_repositories
iamayushm Nov 17, 2022
48bf4d8
modifying sql scripts
iamayushm Nov 17, 2022
ffc6bf1
Merge branch 'main' into audit_logs_docker_git_repositories
iamayushm Nov 17, 2022
20b7fcf
test case files
iamayushm Nov 21, 2022
0e7d7a0
Merge branch 'main' into audit_logs_docker_git_repositories
iamayushm Nov 21, 2022
ebbb00a
test files: ci pipeline history and ci template
iamayushm Nov 21, 2022
1026dc9
Merge branch 'main' into audit_logs_docker_git_repositories
iamayushm Nov 21, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions Wire.go
Original file line number Diff line number Diff line change
Expand Up @@ -686,6 +686,20 @@ func InitializeApp() (*App, error) {
wire.Bind(new(repository3.PrePostCdScriptHistoryRepository), new(*repository3.PrePostCdScriptHistoryRepositoryImpl)),
repository3.NewPipelineStrategyHistoryRepositoryImpl,
wire.Bind(new(repository3.PipelineStrategyHistoryRepository), new(*repository3.PipelineStrategyHistoryRepositoryImpl)),
repository3.NewGitMaterialHistoryRepositoyImpl,
wire.Bind(new(repository3.GitMaterialHistoryRepository), new(*repository3.GitMaterialHistoryRepositoryImpl)),

history3.NewCiTemplateHistoryServiceImpl,
wire.Bind(new(history3.CiTemplateHistoryService), new(*history3.CiTemplateHistoryServiceImpl)),

repository3.NewCiTemplateHistoryRepositoryImpl,
wire.Bind(new(repository3.CiTemplateHistoryRepository), new(*repository3.CiTemplateHistoryRepositoryImpl)),

history3.NewCiPipelineHistoryServiceImpl,
wire.Bind(new(history3.CiPipelineHistoryService), new(*history3.CiPipelineHistoryServiceImpl)),

repository3.NewCiPipelineHistoryRepositoryImpl,
wire.Bind(new(repository3.CiPipelineHistoryRepository), new(*repository3.CiPipelineHistoryRepositoryImpl)),

history3.NewPrePostCdScriptHistoryServiceImpl,
wire.Bind(new(history3.PrePostCdScriptHistoryService), new(*history3.PrePostCdScriptHistoryServiceImpl)),
Expand All @@ -697,6 +711,8 @@ func InitializeApp() (*App, error) {
wire.Bind(new(history3.ConfigMapHistoryService), new(*history3.ConfigMapHistoryServiceImpl)),
history3.NewPipelineStrategyHistoryServiceImpl,
wire.Bind(new(history3.PipelineStrategyHistoryService), new(*history3.PipelineStrategyHistoryServiceImpl)),
history3.NewGitMaterialHistoryServiceImpl,
wire.Bind(new(history3.GitMaterialHistoryService), new(*history3.GitMaterialHistoryServiceImpl)),

history3.NewDeployedConfigurationHistoryServiceImpl,
wire.Bind(new(history3.DeployedConfigurationHistoryService), new(*history3.DeployedConfigurationHistoryServiceImpl)),
Expand Down
4 changes: 4 additions & 0 deletions pkg/bean/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,10 @@ type CiConfigRequest struct {
BeforeDockerBuild []*Task `json:"beforeDockerBuild,omitempty" validate:"dive"`
AfterDockerBuild []*Task `json:"afterDockerBuild,omitempty" validate:"dive"`
ScanEnabled bool `json:"scanEnabled,notnull"`
CreatedOn time.Time `sql:"created_on,type:timestamptz"`
CreatedBy int32 `sql:"created_by,type:integer"`
UpdatedOn time.Time `sql:"updated_on,type:timestamptz"`
UpdatedBy int32 `sql:"updated_by,type:integer"`
}

type TestExecutorImageProperties struct {
Expand Down
153 changes: 142 additions & 11 deletions pkg/pipeline/DbPipelineOrchestrator.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,9 @@ type DbPipelineOrchestrator interface {
CreateCiConf(createRequest *bean.CiConfigRequest, templateId int) (*bean.CiConfigRequest, error)
CreateCDPipelines(pipelineRequest *bean.CDPipelineConfigObject, appId int, userId int32, tx *pg.Tx) (pipelineId int, err error)
UpdateCDPipeline(pipelineRequest *bean.CDPipelineConfigObject, userId int32, tx *pg.Tx) (err error)
DeleteCiPipeline(pipeline *pipelineConfig.CiPipeline, userId int32, tx *pg.Tx) error
DeleteCiPipeline(pipeline *pipelineConfig.CiPipeline, request *bean.CiPatchRequest, tx *pg.Tx) error
DeleteCdPipeline(pipelineId int, tx *pg.Tx) error
PatchMaterialValue(createRequest *bean.CiPipeline, userId int32) (*bean.CiPipeline, error)
PatchMaterialValue(createRequest *bean.CiPipeline, userId int32, oldPipeline *pipelineConfig.CiPipeline) (*bean.CiPipeline, error)
PipelineExists(name string) (bool, error)
GetCdPipelinesForApp(appId int) (cdPipelines *bean.CdPipelines, err error)
GetCdPipelinesForAppAndEnv(appId int, envId int) (cdPipelines *bean.CdPipelines, err error)
Expand Down Expand Up @@ -92,7 +92,10 @@ type DbPipelineOrchestratorImpl struct {
prePostCiScriptHistoryService history3.PrePostCiScriptHistoryService
pipelineStageService PipelineStageService
//ciTemplateOverrideRepository pipelineConfig.CiTemplateOverrideRepository
ciTemplateService CiTemplateService
ciTemplateService CiTemplateService
ciTemplateOverrideRepository pipelineConfig.CiTemplateOverrideRepository
gitMaterialHistoryService history3.GitMaterialHistoryService
ciPipelineHistoryService history3.CiPipelineHistoryService
}

func NewDbPipelineOrchestrator(
Expand All @@ -112,7 +115,9 @@ func NewDbPipelineOrchestrator(
prePostCdScriptHistoryService history3.PrePostCdScriptHistoryService,
prePostCiScriptHistoryService history3.PrePostCiScriptHistoryService,
pipelineStageService PipelineStageService,
ciTemplateOverrideRepository pipelineConfig.CiTemplateOverrideRepository, ciTemplateService CiTemplateService) *DbPipelineOrchestratorImpl {
ciTemplateOverrideRepository pipelineConfig.CiTemplateOverrideRepository,
gitMaterialHistoryService history3.GitMaterialHistoryService,
ciPipelineHistoryService history3.CiPipelineHistoryService, ciTemplateService CiTemplateService) *DbPipelineOrchestratorImpl {
return &DbPipelineOrchestratorImpl{
appRepository: pipelineGroupRepository,
logger: logger,
Expand All @@ -131,20 +136,23 @@ func NewDbPipelineOrchestrator(
prePostCdScriptHistoryService: prePostCdScriptHistoryService,
prePostCiScriptHistoryService: prePostCiScriptHistoryService,
pipelineStageService: pipelineStageService,
//ciTemplateOverrideRepository: ciTemplateOverrideRepository,
ciTemplateService: ciTemplateService,
ciTemplateOverrideRepository: ciTemplateOverrideRepository,
gitMaterialHistoryService: gitMaterialHistoryService,
ciPipelineHistoryService: ciPipelineHistoryService,
ciTemplateService: ciTemplateService,
}
}

const BEFORE_DOCKER_BUILD string = "BEFORE_DOCKER_BUILD"
const AFTER_DOCKER_BUILD string = "AFTER_DOCKER_BUILD"

func (impl DbPipelineOrchestratorImpl) PatchMaterialValue(createRequest *bean.CiPipeline, userId int32) (*bean.CiPipeline, error) {
func (impl DbPipelineOrchestratorImpl) PatchMaterialValue(createRequest *bean.CiPipeline, userId int32, oldPipeline *pipelineConfig.CiPipeline) (*bean.CiPipeline, error) {
argByte, err := json.Marshal(createRequest.DockerArgs)
if err != nil {
impl.logger.Error(err)
return nil, err
}

dbConnection := impl.pipelineRepository.GetConnection()
tx, err := dbConnection.Begin()
if err != nil {
Expand All @@ -166,6 +174,15 @@ func (impl DbPipelineOrchestratorImpl) PatchMaterialValue(createRequest *bean.Ci
IsDockerConfigOverridden: createRequest.IsDockerConfigOverridden,
AuditLog: sql.AuditLog{UpdatedBy: userId, UpdatedOn: time.Now()},
}

createOnTimeMap := make(map[int]time.Time)
createByMap := make(map[int]int32)

for _, oldMaterial := range oldPipeline.CiPipelineMaterials {
createOnTimeMap[oldMaterial.GitMaterialId] = oldMaterial.CreatedOn
createByMap[oldMaterial.GitMaterialId] = oldMaterial.CreatedBy
}

err = impl.ciPipelineRepository.Update(ciPipelineObject, tx)
if err != nil {
return nil, err
Expand Down Expand Up @@ -217,6 +234,8 @@ func (impl DbPipelineOrchestratorImpl) PatchMaterialValue(createRequest *bean.Ci
materialsAdd = append(materialsAdd, pipelineMaterial)
} else {
materialsUpdate = append(materialsUpdate, pipelineMaterial)
pipelineMaterial.CreatedOn = createOnTimeMap[material.GitMaterialId]
pipelineMaterial.CreatedBy = createByMap[material.GitMaterialId]
}
}
regexMaterial, err := impl.ciPipelineMaterialRepository.GetRegexByPipelineId(createRequest.Id)
Expand Down Expand Up @@ -313,6 +332,7 @@ func (impl DbPipelineOrchestratorImpl) PatchMaterialValue(createRequest *bean.Ci
UpdatedBy: userId,
},
}

savedTemplateOverride := savedTemplateOverrideBean.CiTemplateOverride
if savedTemplateOverride != nil && savedTemplateOverride.Id > 0 {
ciBuildConfigBean.Id = savedTemplateOverride.CiBuildConfigId
Expand All @@ -328,6 +348,13 @@ func (impl DbPipelineOrchestratorImpl) PatchMaterialValue(createRequest *bean.Ci
if err != nil {
return nil, err
}

err = impl.ciPipelineHistoryService.SaveHistory(ciPipelineObject, materials, ciTemplateBean, repository4.TRIGGER_UPDATE)

if err != nil {
impl.logger.Errorw("error in saving history of ci pipeline material")
}

} else {
ciTemplateBean := &bean2.CiTemplateBean{
CiTemplateOverride: templateOverrideReq,
Expand All @@ -338,8 +365,28 @@ func (impl DbPipelineOrchestratorImpl) PatchMaterialValue(createRequest *bean.Ci
if err != nil {
return nil, err
}

err = impl.ciPipelineHistoryService.SaveHistory(ciPipelineObject, materials, ciTemplateBean, repository4.TRIGGER_UPDATE)

if err != nil {
impl.logger.Errorw("error in saving history of ci pipeline material")
}

}
} else {

ciTemplateBean := &bean2.CiTemplateBean{
CiTemplateOverride: &pipelineConfig.CiTemplateOverride{},
CiBuildConfig: nil,
UserId: userId,
}
err = impl.ciPipelineHistoryService.SaveHistory(ciPipelineObject, materials, ciTemplateBean, repository4.TRIGGER_UPDATE)

if err != nil {
impl.logger.Errorw("error in saving history of ci pipeline material")
}
}

if len(childrenCiPipelineIds) > 0 {

ciPipelineMaterials, err := impl.ciPipelineMaterialRepository.FindByCiPipelineIdsIn(childrenCiPipelineIds)
Expand Down Expand Up @@ -380,11 +427,17 @@ func (impl DbPipelineOrchestratorImpl) PatchMaterialValue(createRequest *bean.Ci
return createRequest, nil
}

func (impl DbPipelineOrchestratorImpl) DeleteCiPipeline(pipeline *pipelineConfig.CiPipeline, userId int32, tx *pg.Tx) error {
func (impl DbPipelineOrchestratorImpl) DeleteCiPipeline(pipeline *pipelineConfig.CiPipeline, request *bean.CiPatchRequest, tx *pg.Tx) error {

userId := request.UserId

p := &pipelineConfig.CiPipeline{
Id: pipeline.Id,
Deleted: true,
AuditLog: sql.AuditLog{UpdatedBy: userId, UpdatedOn: time.Now()},
Id: pipeline.Id,
Deleted: true,
ScanEnabled: pipeline.ScanEnabled,
IsManual: pipeline.IsManual,
IsDockerConfigOverridden: pipeline.IsDockerConfigOverridden,
AuditLog: sql.AuditLog{UpdatedBy: userId, UpdatedOn: time.Now()},
}
err := impl.ciPipelineRepository.Update(p, tx)
if err != nil {
Expand Down Expand Up @@ -419,6 +472,51 @@ func (impl DbPipelineOrchestratorImpl) DeleteCiPipeline(pipeline *pipelineConfig
}
}
err = impl.ciPipelineMaterialRepository.Update(tx, materials...)

if !request.CiPipeline.IsDockerConfigOverridden {

CiTemplateBean := bean2.CiTemplateBean{
CiTemplate: nil,
CiTemplateOverride: &pipelineConfig.CiTemplateOverride{},
CiBuildConfig: request.CiPipeline.DockerConfigOverride.CiBuildConfig,
UserId: userId,
}

err := impl.ciPipelineHistoryService.SaveHistory(p, materials, &CiTemplateBean, repository4.TRIGGER_DELETE)

if err != nil {
impl.logger.Errorw("error in saving delete history for ci pipeline material and ci template overridden")
}

} else {
CiTemplateBean := bean2.CiTemplateBean{
CiTemplate: nil,
CiTemplateOverride: &pipelineConfig.CiTemplateOverride{
CiPipelineId: request.CiPipeline.Id,
DockerRegistryId: request.CiPipeline.DockerConfigOverride.DockerRegistry,
DockerRepository: request.CiPipeline.DockerConfigOverride.DockerRepository,
//DockerfilePath: ciPipeline.DockerConfigOverride.DockerBuildConfig.DockerfilePath,
GitMaterialId: request.CiPipeline.DockerConfigOverride.CiBuildConfig.GitMaterialId,
Active: false,
AuditLog: sql.AuditLog{
CreatedBy: userId,
CreatedOn: time.Now(),
UpdatedBy: userId,
UpdatedOn: time.Now(),
},
},
CiBuildConfig: request.CiPipeline.DockerConfigOverride.CiBuildConfig,
UserId: userId,
}

err := impl.ciPipelineHistoryService.SaveHistory(p, materials, &CiTemplateBean, repository4.TRIGGER_DELETE)

if err != nil {
impl.logger.Errorw("error in saving delete history for ci pipeline material and ci template overridden")
}

}

return err
}

Expand Down Expand Up @@ -560,7 +658,29 @@ func (impl DbPipelineOrchestratorImpl) CreateCiConf(createRequest *bean.CiConfig
if err != nil {
return nil, err
}

err = impl.ciPipelineHistoryService.SaveHistory(ciPipelineObject, pipelineMaterials, ciTemplateBean, repository4.TRIGGER_ADD)

if err != nil {
impl.logger.Errorw("error in saving history for ci pipeline")
}

} else {

ciTemplateBean := &bean2.CiTemplateBean{
CiTemplateOverride: &pipelineConfig.CiTemplateOverride{},
CiBuildConfig: nil,
UserId: createRequest.UserId,
}

err = impl.ciPipelineHistoryService.SaveHistory(ciPipelineObject, pipelineMaterials, ciTemplateBean, repository4.TRIGGER_ADD)

if err != nil {
impl.logger.Errorw("error in saving history for ci pipeline")
}

}

//creating ci stages after tx commit due to FK constraints
if ciPipeline.PreBuildStage != nil && len(ciPipeline.PreBuildStage.Steps) > 0 {
//creating pre stage
Expand Down Expand Up @@ -781,11 +901,14 @@ func (impl DbPipelineOrchestratorImpl) DeleteApp(appId int, userId int32) error
materials[i].UpdatedBy = userId
}
err = impl.materialRepository.Update(materials)

if err != nil {
impl.logger.Errorw("could not delete materials ", "err", err)
return err
}

err = impl.gitMaterialHistoryService.CreateDeleteMaterialHistory(materials)

impl.logger.Debug("deleting materials in git_sensor")
for _, m := range materials {
err = impl.updateRepositoryToGitSensor(m)
Expand Down Expand Up @@ -1029,10 +1152,14 @@ func (impl DbPipelineOrchestratorImpl) updateMaterial(updateMaterialDTO *bean.Up
currentMaterial.AuditLog = sql.AuditLog{UpdatedBy: updateMaterialDTO.UserId, CreatedBy: currentMaterial.CreatedBy, UpdatedOn: time.Now(), CreatedOn: currentMaterial.CreatedOn}

err = impl.materialRepository.UpdateMaterial(currentMaterial)

if err != nil {
impl.logger.Errorw("error in updating material", "material", currentMaterial, "err", err)
return nil, err
}

err = impl.gitMaterialHistoryService.CreateMaterialHistory(currentMaterial)

return currentMaterial, nil
}

Expand All @@ -1050,10 +1177,14 @@ func (impl DbPipelineOrchestratorImpl) createMaterial(inputMaterial *bean.GitMat
AuditLog: sql.AuditLog{UpdatedBy: userId, CreatedBy: userId, UpdatedOn: time.Now(), CreatedOn: time.Now()},
}
err := impl.materialRepository.SaveMaterial(material)

if err != nil {
impl.logger.Errorw("error in saving material", "material", material, "err", err)
return nil, err
}

err = impl.gitMaterialHistoryService.CreateMaterialHistory(material)

return material, err
}

Expand Down
Loading