This guide outlines what you should consider when planning a migration to GitHub Actions. You'll learn how to identify technical requirements, determine which projects or repositories you will be migrating, integrate best practices, and consider the organizational culture of your engineering team. Along the way we will hear from Salesforce to learn how they achieved a successful migration on a short timeline.
In this guide, you will learn:
How to identify the technical and product requirements crucial for your migration
The importance of understanding what projects or repositories you’re migrating
Strategies for integrating best practices during migration, including the optimization of tests and the creation of reusable workflows
The role of your engineering team’s organizational and cultural structure in a successful migration
Gather your requirements
Start at the beginning: Gain clarity on your specific technical requirements. Whether you need Mac and M1 runners in your next CI/CD tool, or your focus is on ensuring reusable resources and easy-to-use templating, these needs should be articulated up front. Additionally, if governance and enterprise control are on your checklist, make that clear from the get-go. Being able to explicitly state these priorities will not only guide your migration assessment but also ensure that the new tools align with your organizational goals. The right planning mindset—knowing precisely what you need—serves as your roadmap for a successful migration.
What are you migrating?
Before you begin the migration process, pinpoint exactly which projects are on the move. Are you focusing solely on greenfield projects? Or are you also migrating an existing monolithic system? Perhaps your internal tools need a new home? Knowing the specific area of your migration sets the stage for the trajectory you'll follow. You might begin with one group of repositories and later expand to others. Having this predefined sequence not only simplifies your migration efforts but also makes the overall process more manageable.
At Salesforce, we had a tight 60-day deadline to migrate our entire CI/CD pipeline to a new system. The GitHub Actions Importer tool was crucial for this transition, making it easier to move configurations and settings. The self-serve functionality was particularly beneficial because it allowed more team members to get involved, giving everyone a solid starting point. IssueOps was another game-changer for us; it streamlined how we handled incidents and made coordination seamless. All these elements together ensured that we met our deadline while maintaining the integrity and performance of our pipeline.
Identify areas for improvement
Migration offers a unique moment to instill best practices in your organization. As you transition from old YAML or Groovy files to new actions, updating them along the way, it’s a great time to rethink your strategy. For example, if you have a test that has consistently taken over an hour, aim for it to take no more than 30 minutes in your new environment. Look for redundant practices that can be streamlined into reusable workflows. This mindset is crucial as you prepare for migration; it’s not just about lifting and shifting but also optimizing and improving.
Your engineering team's organizational and cultural structure also plays a critical role in migration. If you're aiming to instill a "paved path" culture where best practices are easy to adopt, then how you set up your CI/CD tools will look quite different than a free-for-all development environment. Some customers choose to use migration as an opportunity to introduce entirely new cultures and mentalities into their engineering teams. For example, they establish reusable workflows and centralize CI/CD management to make it easier for developers to focus on what they do best: developing.
Now that you have an understanding of how to prepare for a successful migration, let's take a look at how to manage sensitive information at the organizational level, understand the role of variables in your workflows, and implement OpenID Connect (OIDC) for robust cloud authentication.