Rebuilding Software Delivery on GitLab Under a Fixed Government Deadline
Migrated roughly ten interconnected services from Jenkins to GitLab CI/CD ahead of a fixed Department of Labor cutover deadline, coordinating a cross-functional team to reach full delivery capability in about a week.
Background
In mid-2023, the Department of Labor required the project to move onto its internally controlled environment. The change affected the cloud environment as well as the development toolchain, including a move away from the existing Jenkins- and Bitbucket-based delivery workflow.
For roughly six months, the development manager and another DevOps engineer focused on the new AWS environment and the GitLab migration. During that period, my responsibility was keeping the existing CI/CD platform running so developers and QA could keep delivering software.
Challenge
Late in the year, the deadline became immediate: developers needed to be working through the DOL environment by year end. I was tasked with getting approximately ten interconnected services building and deploying through GitLab.
I had never used GitLab before. Several target environments were still incomplete, and the services had dependencies that meant they couldn't simply be migrated in any order — the sequence itself was part of the problem to solve.
Approach
I opened a shared working session and brought together a cross-functional group of roughly eight developers and QA team members. Rather than trying to become the expert on every application, we worked through the services in dependency order.
As each service hit a build or deployment problem, I brought in whoever knew that service best. Their application knowledge guided the diagnosis while I focused on translating the existing delivery behavior into GitLab pipelines. When the group hit something nobody in the room could solve immediately, we identified who could and pulled them into the session.
Result
Within about a week, we had end-to-end GitLab build and deployment capability working across the roughly ten-service platform — full continuity of software delivery through the cutover, not a pause and restart. That let the project complete the migration and retire the legacy AWS environment and the tooling that had gone with it.
Lessons
This reinforced something I've seen repeatedly in platform engineering: successful tooling migrations aren't primarily tooling projects. They're coordination and delivery projects. The fastest path wasn't for one person to learn every service; it was sequencing the work correctly and making sure the right expertise was in the room when each problem showed up.
It also reinforced the value of adaptability. I went into this without prior GitLab experience, but years of operating the existing delivery platform gave me the context to learn the new tool quickly and stay focused on preserving the behavior the engineering team depended on.
Related work
- Multi-Environment CI/CD Pipeline Automation
Designed automated build and test pipelines and stood up dev, QA, integration, and UAT cloud environments using GitLab, Jenkins, Git, and Terraform.
- Deployment Automation & Security Scanning Scripts
Built Python, Groovy, and Jenkins declarative pipeline automation integrated with Jira to streamline build and deployment workflows, including automated tests and security scans.
- Jira-Driven Release Orchestration
Integrated CI/CD pipelines with Jira for sprint planning, issue tracking, and release coordination, enabling automated deployments driven by ticket and workflow status.