A pipeline is the historical execution for a specific commit, each time you push a new commit to trigger an execution produces a new pipeline accordingly.
A pipeline could have multiple workflows, A workflow orchestrates a set of jobs, it is a historical execution record.
A workflow could have multiple jobs, A job could have multiple steps, and it is a historical execution record as well.
Not important at the moment
Based on the above concept, we need to convert the workflow and job to the Domain Layer as cicd_pipeline and cicd_task. As for the CircleCI pipeline, it should be mapped to cicd_pipeline_commit because it contains the commit sha.
It may look weird at first glance, but it is correct since Domain Layer presumes a Pipeline could have multiple repos while CircleCI has only one repo.