Skip to content

GitLab Next

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
release-tools
release-tools
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 53
    • Issues 53
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
    • Iterations
  • Merge Requests 8
    • Merge Requests 8
  • Requirements
    • Requirements
    • List
  • Security & Compliance
    • Security & Compliance
    • Dependency List
    • License Compliance
  • Operations
    • Operations
    • Incidents
  • Analytics
    • Analytics
    • Code Review
    • Insights
    • Issue
    • Repository
    • Value Stream
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
  • GitLab.org
  • release-toolsrelease-tools
  • Issues
  • #389

Closed
Open
Opened Feb 18, 2020 by Robert Speicher@rspeicherOwner

Addressing technical debt in the AutoDeploy foundation

We created the current auto-deploy behavior during a one-week onsite in early 2019. The result was rapid iteration on a hard problem in a short time and as a result, we got something working but accumulated some technical debt in the process.

As we begin adding more complexity to the auto-deploy process with CNG images, and auto-deploying other components like Gitaly, this problem will only get worse, so I think it would be prudent to address some of the problems now.

  1. PassingBuild is misnamed. This class, along with the generically-named Commits, handles multiple things:
    1. Find a passing build
    2. Trigger an Omnibus auto-deploy
      1. Create a deployer tag to deploy the Omnibus package after it's built
    3. Trigger a CNG auto-deploy => !841 (merged)
    4. Trigger a generic branch tagging => !859 (merged)
  2. PassingBuild takes a project argument, because at the time we needed to find a passing build (or do one of the other things above) in CE or EE. Now that we only care about EE, this is needless complexity. => #390 (closed)
  3. PassingBuild takes a ref argument. This is never not the current auto-deploy branch, so it's extra complexity.
  4. ComponentVersions does three independent things: => !1059 (merged)
    1. Deal with the component versions defined by the gitlab-rails project (EE)
      1. Fetch the version strings defined by the various *_VERSION files
    2. Deal with the component versions defined by the Omnibus project
      1. Check if the versions defined in Omnibus differ from those we fetched from EE
      2. Commit to Omnibus with the versions fetched from EE
    3. Deal with the component version variables defined by the CNG image
      1. Normalize the version strings used by Omnibus into formats usable by the image
      2. Fetch and parse the Gemfile for EE
      3. Add version strings for specific gems from EE
      4. Check if the versions defined in the image differ from those we fetched from EE
      5. Commit to the image with the versions fetched from EE
  5. ComponentVersions takes a project argument, because at the time we needed to find a versions (or do one of the other things above) in CE or EE. Now that we only care about EE, this is needless complexity. => #394 (closed)

cc @gitlab-org/deliveryf

Edited Dec 02, 2020 by Robert Speicher
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
13.7
Milestone
13.7 (Past due)
Assign milestone
Time tracking
None
Due date
None
Reference: gitlab-org/release-tools#389