Рубрики
Uncategorized

Отсутствующий шаг: резервные репозитории Azure DevOps

Таблица контента для резервного копирования или не для резервного копирования? Метод 1: Использование метода GIT 2: Использование Azure de … Tagged с Azure, DevOps, Backup, Git.

Таблица содержания

  • Резервное копирование или не для резервного копирования?
  • Метод 1: Использование git
  • Метод 2: Использование ASURE DEVOPS API
  • Вывод

Резервное копирование или не для резервного копирования?

Не поймите меня неправильно, мне нравятся Azure DevOps. Есть некоторые разочарования здесь и там, например, в управлении разрешениями и кэшированием ресурсов. И каждый из модулей Azure DevOps (панели панели/вики, доски, репо, трубопроводы, планы испытаний, артефакты) могут быть не лучшими на рынке. Но интеграция и простота использования делают его больше, чем сумма частей, особенно для небольших и средних проектов. Тем не менее, есть одна вещь, которая меня озадачивает. Резервное копирование ваших репозиториев GIT кажется мне как здравый смысл и хорошая практика. Это также может быть политикой в некоторых компаниях. Однако сейчас нет способа сделать это вручную или по графику. Конечно, Microsoft — это Привержен обеспечению обеспечения безопасности данных , включая периодические резервные копии и георепликацию, но мы не имеем никакого контроля над ним. И это не мешает непреднамеренным или злонамеренным действиям, ведущим к потере данных. Ответ Microsoft на такие запросы, и я Цитата : «В текущих Azure DevOps нет никакого решения для решения, вы могли бы резервным образом резервным образом, загрузив их как Zip, чтобы сохранить его на локальном локальном языке, а затем загрузить его, чтобы восстановить их. И вы также можете сделать резервную копию своих рабочих предметов, открыв их с помощью Excel, чтобы сэкономить на местной машине. « Я имею в виду, что, лол. Excel как инструмент резервного копирования, возможно, является новой высокой безопасности данных. В любом случае, есть ли способы скрутить контроль в наши руки? Конечно, есть, и сегодня мы исследуем два из них.

Резервное репозиторий с использованием простых старого сценария Git Bash

Одним из методов является использование сценария Bash, чтобы получить полную копию репозитория. Давайте не будем запускать его с нашего ноутбука, а скорее раскрывать небольшую виртуальную машину в облаке.

План атаки:

  • Создайте дешевую виртуальную машину Linux в Azure
  • Генерировать новую пару клавиш SSH
  • Добавить SSH Public Key к Azure DevOps
  • Создать скрипт Bash для зеркала git Repo
  • Выполнить этот скрипт по расписанию

Не погружаясь в слишком много деталей, но довольно легко создать виртуальную машину Linux в Azure. Это уже поставляется со всем, что нам нужно: сценарии GIT и Shell. Тогда мы можем внести в него SSH и создать сценарий Bash, который я назвал «DevOpsbackup.sh». Сценарий довольно примитивный, но он выполняет работу. По сути, он удаляет предыдущую резервную копию и создает зеркальную копию Git Repo. Не забудьте заменить переменные в угловых кронштейнах своими собственными значениями.

#!/bin/bash
error_exit()
{
        echo "${PROGNAME}: ${1:-"Unknown Error"}" 1>&2
        exit 1
}
#
echo "Executing Azure DevOps Repos backup"
cd /home/devopsadmin
rm -rf repos/
mkdir -p repos
cd repos/
git clone --mirror git@ssh.dev.azure.com:v3/// || error_exit "$LINENO: "

cd ..
exit 0

Разрешить выполнение скрипта:

chmod 0755 Devopsbackup.sh

Нам также необходимо генерировать пару клавиш SSH с помощью команды

ssh -keygen -c «devopsbackup»

По умолчанию ключи будут генерироваться в папке «~/.SSH». Нам нужно скопировать открытый ключ «id_rsa.pub» оттуда и вставить в Azure DevOps. Перейдите в настройки профиля в правом верхнем углу и добавьте новый ключ:

Мы можем легко создать запланированное выполнение для нашего сценария. Идите вперед, введите «crontab -e» в командной строке и добавьте что -то подобное в конфигурацию Cron:

20 1 * * */HOME/DevopsAdmin/bin/devopsbackup.sh>/dev/null 2> & 1

Следующим шагом может быть расширение этого сценария с помощью Azure CLI и загрузить этот архив в хранилище Blob -Blob или озеро данных. В качестве альтернативы, у Azure также есть отличная функция, которая позволяет вам создавать ежедневную/еженедельную резервную копию для вашей виртуальной машины. Таким образом, вы можете просто сохранить снимок всей виртуальной машины и не беспокоиться о хранении Blob, если хотите.

Резервное копирование ветви по умолчанию с помощью Azure DevOps API

Это все хорошо и хорошо, но есть ли более современный способ, который не требует выделенных виртуальных сценариев/сценариев/крона? Azure DevOps Rest API кажется многообещающим и позволяет манипулировать данными Azure DevOps, включая рабочие элементы и репозитории. К сожалению, этот API не имеет паритета с GIT, и история полного кода не может быть сохранена с помощью этого метода. Однако, если все, что вам требуется, это периодический снимок главной ветви, то его можно использовать для создания простого решения для резервного копирования. Одним из преимуществ по сравнению с предыдущим решением является то, что мы можем автоматически извлекать информацию обо всех наших проектах и репо, и им не нужно их жесткой кодировки. Поэтому, если вы добавите новый проект, модификация не требуется.

Подход:

  • Используйте API REST для получения иерархии проектов, репозиториев, предметов и каплей
  • Используйте токен Azure DevOps (PAT) для аутентификации API
  • Используйте функцию Azure с Timer Trigger, чтобы запустить это по расписанию
  • Используйте лазурное хранилище Blob Blob, чтобы сохранить архив.

Без лишних слов, вот суть функции Azure. Требуются следующие параметры, которые вы можете настроить в настройках приложения: «Storageaccountkey», «StorageName», «Token», «Организация»

Вывод

Сравнивая эти два подхода, мы видим, что новее не всегда лучше. С помощью простого сценария оболочки мы можем создать полную копию репозитория, которая может быть легко восстановлена или импортирована в новый проект. С другой стороны, если все, что вам нужно, это периодический снимок репо, Azure DevOps Rest и запланированная функция Azure может сделать эти вещи легкими.

Это все на сегодняшний день, и помните, что вы всегда должны защищать свою работу, как кошка защищает свою добычу от собаки на изображении ниже.

Дирк Вальккенбург, кошка, защищающая добычи от собаки, 1717 Изображение обложки от Хеби Б. от Pixabay

Оригинал: «https://dev.to/ib1/a-missing-step-backup-azure-devops-repositories-16p7»