 Hello, my name is Fernando, and I'm a Technical Marketing Manager here at GitLab, and today we're going to go over how easy it is to migrate from GitHub to GitLab. Migrating from GitHub to GitLab is very simple using the built-in importer. We can import things such as code, issues, pull requests, comments, reviews, our project members, and much more. In this video, we're going to cover how to easily migrate GitHub actions to GitLab pipelines, and migration is available on both SaaS and on-prem GitLab offerings, and can be done from GitHub.com as well as GitHub Enterprise. In this video, we're going to cover migration from GitHub.com to GitLab SaaS. There are some prerequisites for a full migration. These prerequisites are that the user performing the import must have the maintainer role on the GitLab import destination group. Each GitHub account on the project we are importing must have a public-facing email address. The email address in GitHub must also exist in GitLab, and if you are on the GitLab on-prem offering, you're required to enable the GitHub import source. Now I'm going to demonstrate how the import works. First, I'll go over the GitHub project we are going to import. It is in the GitHub org fishtode soft, and its name is the Reddit Sentiment Analyzer. We can see that it has one issue present, which is to verify and enhance the Reddit authentication process. And here we can see a comment on the issue. There's also a pull request to replace the Clif CLI with Typer, a different Python library. And we can see a conversation, a commit. We can also see that there are some checks run from GitHub actions, such as CodeQL security scanning, linting, smoke tests, and unit tests. We can click on the files change tab to see what exactly was changed in this pull request. Now let's go ahead and import the project. After logging into GitLab, we can see all the projects we are part of. When we click on the new project button, we are taken to the create a new project screen. This is the UI for creating a new project, which has several different options. I'm going to select the import project option. Here we can see that there are different sources to import a project from. I'm going to click on GitHub. In this section, I must authenticate with GitHub. I can either provide a personal access token with the repo scope, or I can click the authenticate with GitHub button. Since I was already logged into GitHub, in this session, I have been redirected to the authorization page. Here, I can grant access to different organizations within my GitHub space. I'm going to go ahead and grant access to fish toad soft, which contains the project that I wish to migrate. We are then prompted for GitHub password for security reasons. After adding our organization, we must authorize the GitLab HQ app to perform the import. Now we are taken to the GitHub import screen. This screen allows us to select what we wish to import from GitHub and provides a list of the projects we have access to. Here we can see that besides the project source code, we have other options for what to import. I'm going to go ahead and select import issue and pull request events in order to import the different issues and pull requests within my GitHub project. In order to find our project, we are allowed to filter by name as well as sort by owned, collaborated, and organization. I'm going to go ahead and select organization. And here I can see the project I want to import, the fish toad soft, Reddit sentiment analyzer. In the to GitLab section, I can select what group I want this project to be imported to as well as what name I want it to have. From there, all I have to do is just press the import button. And voila, the import has started. I can go ahead and click on the details button to see where I'm at in the import progress. The duration of the import depends on how many things we are importing as well as the size of our project. And after some time, we can see that the import process is complete. Now let's go ahead and review the imported project. I can see that the Reddit sentiment analyzer is now available in my personal space. We can see that the application source code is all there. Now let's take a look at our issues. We see that there's one issue available, which is to verify and enhance the Reddit authentication process. And here we see the issues description imported just as is from GitHub. We also go to our merge requests and can see the replace cliff CLI with type or merge request. The imported merge request shows that we are requesting to merge the branch use type or into the master branch, which are the same branches that were available in our GitHub project. We also see the overview of the merge request which contains its description as well as the commits which are available for that merge request and the changes that are being requested. In the pipeline section, we see that there are none present at the moment. However, don't worry, they're very easy to migrate. Now let's go ahead and convert GitHub actions into GitLab pipelines. I'm going to go ahead and open my code with the web IDE that is included with GitLab. You can do this with any IDE you would like to use. Now let's go ahead and create a new file. This file must be named .gitlab-ci.yaml. This is the file which will define the GitLab CICD pipelines. I'm going to go ahead and paste some code I already had pre-written and we can go over it. First, we notice the stages with the test stage present. Here, we define what stages will run within the pipeline. As there was only one stage within the GitHub actions, we're leaving it with just one. Then we notice that we are including a template for jobs with SAST. Now this is our static application security testing scanner, which finds known vulnerabilities within our source code. SAST scanning was seen as a GitHub action with code QL. Note that GitLab provides security scanners for the complete application lifecycle and can all be imported via templates. Now the available scanners vary based off the GitLab plan you have. Next, we see the three different jobs which were run in the GitHub project. There's a job for unit tests, there's a job for linting, and there's a job for smoke tests. We can see that there's a before script for each which installs the needed dependencies. Then there's the image we use to run the jobs. I define them as they were in the GitHub project. And then the script runs the actual command where we can see that the unit test script runs PyTest, the lint script runs Flake8, and the smoke script just runs Reddit sentiment with the help command. When going to our .github file, we can see the GitHub actions, and here we see that lint runs the exact same commands to install the dependencies and run Flake8 and has Python version 3.10. Note that this is nearly identical to what we've added to the gitlab.yaml file. The same is true for the other GitHub actions. Now let's go ahead and commit this code. I'm going to click on the commit to master button, and here we can see that we're committing our changes to a default branch. We can either create a new branch and a merge request, or we can commit straight to the default branch. After committing the .github.yaml, let's go back to our project. We can see that a change was authored just now and that there is a pipeline running. When we click on the pipeline icon, we can see our pipeline running the test stage with the four defined jobs, lint, sast, smoke tests, and unit tests. When the job's complete, we can go ahead and click on a job and see the job's output. I'll go ahead and click on our unit job, and here we can see that our job succeeded and the tests ran successfully. Thanks for watching, and I hope you enjoyed. Here at GitLab, we believe in software faster. For more information on the GitHub to GitLab migration process, please see the links in the description. To keep up to date with GitLab and what's new, make sure to hit that subscribe button.