in backend/python/plugins/azuredevops/azuredevops/streams/builds.py [0:0]
def convert(self, b: Build, ctx: Context):
if not b.start_time:
return
result = None
if b.result == Build.BuildResult.Canceled:
result = devops.CICDResult.ABORT
elif b.result == Build.BuildResult.Failed:
result = devops.CICDResult.FAILURE
elif b.result == Build.BuildResult.PartiallySucceeded:
result = devops.CICDResult.SUCCESS
elif b.result == Build.BuildResult.Succeeded:
result = devops.CICDResult.SUCCESS
status = None
if b.status == Build.BuildStatus.Cancelling:
status = devops.CICDStatus.DONE
elif b.status == Build.BuildStatus.Completed:
status = devops.CICDStatus.DONE
elif b.status == Build.BuildStatus.InProgress:
status = devops.CICDStatus.IN_PROGRESS
elif b.status == Build.BuildStatus.NotStarted:
status = devops.CICDStatus.IN_PROGRESS
elif b.status == Build.BuildStatus.Postponed:
status = devops.CICDStatus.IN_PROGRESS
type = devops.CICDType.BUILD
if ctx.scope_config.deployment_pattern and ctx.scope_config.deployment_pattern.search(b.name):
type = devops.CICDType.DEPLOYMENT
environment = devops.CICDEnvironment.TESTING
if ctx.scope_config.production_pattern and ctx.scope_config.production_pattern.search(b.name):
environment = devops.CICDEnvironment.PRODUCTION
if b.finish_time:
duration_sec = abs(b.finish_time.second - b.start_time.second)
else:
duration_sec = 0
yield devops.CICDPipeline(
name=b.name,
status=status,
created_date=b.start_time,
finished_date=b.finish_time,
result=result,
duration_sec=duration_sec,
environment=environment,
type=type,
cicd_scope_id=ctx.scope.domain_id(),
)
yield devops.CiCDPipelineCommit(
pipeline_id=b.domain_id(),
commit_sha=b.source_version,
branch=b.source_branch,
repo_id=ctx.scope.domain_id(),
repo_url=ctx.scope.url,
)