Skip to content

Move all CI files under `Ci::` namespace

Spelunking the code base I've found a lot of classes that are related to CI domain which are not nested inside Ci:: namespace. I think we should start migrating all these classes under the namespace and start enforcing it in reviews.

Having all the CI related classes under the namespace

  • makes it clear who is the responsible team
  • when touching a non namespaced class will be clear to us that we are reaching outside the domain, hence take the necessary considerations
  • lowers the barrier for a new team member or community contributor to understand the boundaries

Here are the classes I found so far (probably missing some). We could move them slowly bit by bit in several cohesive MRs. Moving workers is a lot more delicate, and we have many of them.

  • concern HasRef is used only for CI models !27056 (merged)
  • concern HasStatus !34577 (merged)
  • concerns HasVariable and NewHasVariable !27306 (merged)
  • concern Maskable !27305 (merged)
  • CommitWithPipeline could remain outside CI but CommitWithPipeline#pipelines should not know about Ci::Pipeline details.
  • JobsFinder !27190 (merged)
  • PipelineSchedulesFinder !27190 (merged)
  • PipelinesFinder !27190 (merged)
  • RunnerJobsFinder !27190 (merged)
  • ArtifactsFinder !28233 (merged)
  • CommitStatusEnums
  • EE::ProcessGithubPullRequestEventService !28517 (merged)
  • ExternalPullRequest
  • ExternalPullRequests::CreatePipelineService !28517 (merged)
  • BuildsHelper !35079 (merged)
  • CiStatusHelper !35073 (merged)
  • CiVariablesHelper!35199 (merged)
  • JobsHelper !35389 (merged)
  • PipelineSchedulesHelper !36130 (merged)
  • RunnersHelper !36144 (merged)
  • TriggersHelper
  • ArchiveTraceWorker
  • BuildCoverageWorker
  • BuildFinishedWorker
  • BuildHooksWorker
  • BuildQueueWorker
  • BuildsSuccessWorker
  • BuildTraceSectionsWorker
  • CreatePipelineWorker
  • ExpireBuildArtifactsWorker
  • ExpireBuildInstanceArtifactsWorker
  • ExpireJobCacheWorker
  • ExpirePipelineCacheWorker
  • ExpirePipelineHooksWorker
  • PipelineMetricsWorker
  • PipelineNotificationWorker
  • PipelineProcessWorker
  • PipelineScheduleWorker
  • PipelineSuccessWorker
  • PipelineUpdateWorker
  • RunPipelineScheduleWorker
  • StageUpdateWorker
  • StuckCiJobsWorker
  • UpdateExternalPullRequestsWorker
  • EE::JobsHelper !35389 (merged)
  • EE::RunnersHelper !36144 (merged)
  • Entities::JobRequest::* from lib/api/entities/job_request -> lib/api/entities/ci/job_request
  • Entities::JobArtifactFile, Entities::JobArtifact !37981 (diffs)
  • Entities::JobBasicWithProject, Entities::JobBasic, Entities::Job !37981 (diffs)
  • Entities::PipelineBasic, Entities::PipelineScheduleDetails, Entities::PipelineSchedule, Entities::Pipeline !37981 (diffs)
  • Entities::Runner, Entities::RunnerDetails, Entities::RunnerRegistrationDetails
  • Entities::Variable !37981 (diffs)
  • API::Helpers::Runner
  • API::JobArtifacts
  • API::Jobs
  • API::PipelineSchedules !36381 (merged)
  • API::Pipelines !36381 (merged)
  • API::Runner !35191 (merged)
  • API::Runners !35191 (merged)
  • API::Triggers
  • API::Variables
  • Gitlab::Artifacts::MigrationHelper
  • Gitlab::Badge::*
  • EE::API::Helpers::Runner
  • EE::API::JobArtifacts
  • VariableSerializer !36636 (merged)
  • VariableEntity !36636 (merged)
  • GroupVariableSerializer !36636 (merged)
  • GroupVariableEntity !36636 (merged)

Move related specs by consequence.

Can't be easily moved - needs more thoughts

  • CommitStatus + GenericCommitStatus because we would need to migrate the type column in ci_builds. We could move it under Ci:: and leave CommitStatus as inheritance only class from Ci::CommitStatus that would allow us to read old records until the next major release.
  • Entities::CommitStatus
  • API::CommitStatuses
Edited by Allison Browne