Add sync_nuget.sh

This commit is contained in:
pashko 2024-10-31 12:16:19 +08:00
commit e1ae3c8d21

61
sync_nuget.sh Normal file
View File

@ -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 "Синхронизация завершена."