commit e1ae3c8d21ea56d3a8875f7d20bc96b0f41d6612 Author: pashko Date: Thu Oct 31 12:16:19 2024 +0800 Add sync_nuget.sh diff --git a/sync_nuget.sh b/sync_nuget.sh new file mode 100644 index 0000000..d1dfd3b --- /dev/null +++ b/sync_nuget.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +# Переменные для Azure DevOps +AZURE_ORG="your_azure_org" +AZURE_FEED="your_feed_name" +AZURE_PROJECT="your_project_name" +AZURE_PAT="your_azure_devops_pat" # Personal Access Token + +# Переменные для GitLab +GITLAB_REGISTRY_URL="https://gitlab.com/api/v4/projects/YOUR_PROJECT_ID/packages/nuget" +GITLAB_PAT="your_gitlab_pat" + +# Путь к временной директории для хранения пакетов +TEMP_DIR="./nuget_temp" +mkdir -p $TEMP_DIR + +# Функция для скачивания пакетов из Azure DevOps +download_packages_from_azure() { + echo "Скачивание пакетов из Azure DevOps..." + + # Запрос списка пакетов + packages=$(curl -s -u ":$AZURE_PAT" \ + "https://dev.azure.com/$AZURE_ORG/$AZURE_PROJECT/_apis/packaging/feeds/$AZURE_FEED/packages?api-version=5.0-preview.1" \ + | jq -r '.value[] | "\(.name) \(.versions[0].version)"') + + # Скачивание каждого пакета + while read -r package; do + name=$(echo $package | awk '{print $1}') + version=$(echo $package | awk '{print $2}') + + echo "Скачивание $name версии $version..." + + curl -s -u ":$AZURE_PAT" \ + -L "https://pkgs.dev.azure.com/$AZURE_ORG/$AZURE_PROJECT/_apis/packaging/feeds/$AZURE_FEED/nuget/packages/$name/versions/$version/content?api-version=5.0-preview.1" \ + -o "$TEMP_DIR/$name.$version.nupkg" + done <<< "$packages" +} + +# Функция для публикации пакетов в GitLab Package Registry +upload_packages_to_gitlab() { + echo "Загрузка пакетов в GitLab Package Registry..." + + for package in $TEMP_DIR/*.nupkg; do + echo "Загрузка $package в GitLab..." + + curl --request PUT \ + --header "PRIVATE-TOKEN: $GITLAB_PAT" \ + --header "Content-Type: application/octet-stream" \ + --data-binary @"$package" \ + "$GITLAB_REGISTRY_URL" + done +} + +# Запуск функций +download_packages_from_azure +upload_packages_to_gitlab + +# Очистка временной директории +rm -rf $TEMP_DIR + +echo "Синхронизация завершена."