Creating an Azure DevOps Pipeline to Clone a GitHub Repository to an Azure DevOps Repository
If you’re looking to clone a GitHub repository into an Azure DevOps repository and keep the two in sync, an Azure DevOps pipeline can handle this for you automatically. This pipeline will clone the code from a GitHub repository, set up the Azure DevOps repository as a remote, and push the code there. Here’s how to set up the pipeline.
Prerequisites
Azure DevOps Organization: You’ll need an active Azure DevOps organization.
GitHub Repository: The source repository you want to clone.
Azure DevOps Repository: The destination repository where the code will be cloned.
Permissions: Ensure you have push permissions on the Azure DevOps repository.
Step 1: Create and Configure the Pipeline YAML File
To set up the pipeline, add a new YAML file named azure-pipelines.yml
in your Azure DevOps repository with the following content:
trigger:
branches:
include:
- main
jobs:
- job: CloneAndPush
pool:
vmImage: 'ubuntu-latest'
steps:
- checkout: none # Skip the default checkout
- script: |
echo "Cloning the GitHub repository..."
git clone https://github.com/microsoft/coe-starter-kit.git # Replace with your GitHub repo URL
cd coe-starter-kit
echo "Setting up remote for Azure DevOps repository..."
git remote add devops https://$(System.AccessToken)@dev.azure.com/YourOrg/_git/YourRepo # Replace with your DevOps repo URL
echo "Configuring Git user..."
git config user.email "your-email@example.com" # Replace with your email
git config user.name "Your Name" # Replace with your name
echo "Pushing to Azure DevOps repository..."
git push devops main
displayName: 'Clone and Push'
env:
GIT_ASKPASS: /bin/echo
GIT_USERNAME: $(System.AccessToken) # Use the system access token for authentication
Pipeline Breakdown
trigger
: Runs the pipeline on changes to themain
branch.pool
: Sets up the pipeline to run on an Ubuntu virtual machine.checkout: none
: Skips the default repository checkout, since we’ll be cloning the GitHub repo manually.git clone
: Clones the GitHub repository into the pipeline workspace.git remote add
: Adds the Azure DevOps repository as a remote nameddevops
.git config
: Configures the Git user for committing to the Azure DevOps repository.git push
: Pushes the cloned GitHub code to the Azure DevOps repository.
Step 2: Add the Pipeline File to Your Repository
Save the above YAML as
azure-pipelines.yml
in the root of your Azure DevOps repository.Commit and push the YAML file to your Azure DevOps repository.
Step 3: Set Up the Pipeline in Azure DevOps
In Azure DevOps, go to Pipelines > New Pipeline.
Select Azure Repos Git as your source and choose the repository where you committed
azure-pipelines.yml
.Azure DevOps will automatically detect the YAML file and prompt you to create the pipeline. Click Save and Run to start the process.
Step 4: Run and Monitor the Pipeline
Once the pipeline runs, it will clone the GitHub repository and push it to the Azure DevOps repository.
Check the Pipelines section in Azure DevOps for logs and status updates to ensure everything completed successfully.
This pipeline provides a simple way to clone a GitHub repository to Azure DevOps, making it easy to migrate or mirror repositories.
Subscribe to my newsletter
Read articles from Shaheer Ahmad directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Shaheer Ahmad
Shaheer Ahmad
Microsoft MVP | Solution Architect Expert | Techno-Functional Consultant | MLSA Gold | Power Platform & Dynamics 365 Enthusiast