def convert()

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,
        )