Migracja wielu lokalnych projektów do Azure DevOps

Migracja lokalnego projektu do usługi Azure DevOps poprzez portal Azure DevOps jest wygodna ale wyłącznie w momencie, gdy migrujemy pojedyncze projekty raz na jakiś czas.
Jeżeli tych projektów mamy kilkadziesiąt to ich migracja w ten sposób staje się dużym wyzwaniem.

Jak sobie z tym poradzić ?

Oczywiście poprzez automatyzację tego procesu 😉

Co jest niezbędne do automatycznej migracji wielu projektów do usługi Azure DevOps ?

Po utworzeniu niezbędnych kont oraz zainstalowaniu niezbędnych narzędzi możemy przystąpić do stworzenia skryptu powershell, który wykona za nas czarną robotę 🙂

Pierwszy krok to oczywiście zalogowanie się do portalu Azure DevOps.

az login --allow-no-subscriptions

Następnym krokiem jest zdefiniowanie nazw projektów, które chcemy przenieść do usługi Azure DevOps. W moim przypadku nazwy wszystkich projektów lokalnych są tożsame z nazwami katalogów, w których znajduje się ich kod źródłowy. Ponadto wszystkie projekty lokalne trzymane są w katalogu Projects zatem określenie nazw tworzonych projektów w Azure DevOps to nic innego jak odczytanie nazw wszystkich folderów, które znajdują się w katalogu Projects.

Get-ChildItem -Recurse -Directory | ForEach-Object { ... }

Po odczytaniu nazwy lokalnego projektu ( na podstawie nazwy katalogu, w którym się on znajduje ) ustawiamy kontekst katalogu, w którym będziemy wykonywać dalsze operacje.

cd $_.Name

Następnie możemy wywołać polecenie, które utworzy nam analogiczny projekt w usłudze Azure DevOps.

az devops project create --name $_.Name --source-control git --visibility private --detect true --organization https://dev.azure.com/{organization}/

Po utworzeniu projektu w usłudze Azure DevOps możemy w bieżącym katalogu lokalnego projektu zainicjalizować repozytorium git’a, a następnie zakomitować wszystkie pliki, które się w nim znajdują.

git init
git add .
git commit -a -m "Initial commit"

Po inicjalizacji repozytorium i dodaniu do niego wszystkich plików, jedyne co Nam pozostaje to połączenie lokalnego repozytorium z repozytorium, które utworzyliśmy w usłudze Azure DevOps podczas tworzenia projektu a następnie wypchnięcie do niego zakomitowanych przez Nas plików.

git remote add origin (az repos list --project $_.Name --org https://dev.azure.com/{organization}/ --query [0].webUrl)
git push -u origin master

Na koniec zmiana kontekstu katalogu, w którym jesteśmy tak, aby w następnym kroku iterowania po katalogu Projects móc przeprocesować następny w kolejności lokalny projekt.

cd ..

Pełen skrypt można znaleźć na moim GitHubie.

Uruchamiając ten skrypt w moim katalogu Projects, automatycznie wszystkie lokalne projekty zostały zmigrowane do portalu Azure DevOps.

Create a free website or blog at WordPress.com.

Up ↑