Я обнаружил, что всякий раз, когда я хочу запустить предыдущий проект, потребуется много времени, прежде чем я смогу его найти и прежде чем я снова настрою все, чтобы он мог работать.
Например, у меня есть проекты на Python, которые я создал в Linux, и это зависит от программных пакетов, которые легко устанавливаются в Linux, но у меня больше нет виртуальной машины Linux, которую я использовал. А некоторые другие мои проекты зависят от других переменных, таких как конфигурация веб-сервера, переменные PATH, SDK, IDE, версия ОС, устройство и т. Д.
Есть ли у кого-нибудь эффективный способ решения этой проблемы? На данный момент я заботился только о резервном копировании исходного кода, но трудно восстановить работающую среду разработки и также сложно поддерживать рабочую среду разработки .
источник
Ответы:
В прошлом я либо преобразовывал физическую машину разработки в виртуальную машину, либо, если она уже является виртуальной машиной, сохраняйте ее для будущего использования. Это не так эффективно, как хотелось бы для использования дискового пространства, но место дешево. Кроме того, этот процесс намного менее затратен по времени, чем попытка переконфигурировать среду в будущем, если возникнет такая необходимость.
источник
Моя любимая методология - поддерживать скрипт, который устанавливает ВСЕ необходимые зависимости для проекта, загружает исходный код и подключает все. Некоторые сценарии имеют два режима - один для производства, который обычно является подмножеством другого режима: разработки.
В некоторых средах установка скрипта занимает около 5 минут - в этом случае я сохраняю локальную виртуальную машину со свежей установкой целевой ОС, на которой я развертываю скрипт проекта, когда я прихожу на работу утром, - а затем выполняю все кодирование связанная работа на том экземпляре VM. Прежде чем уйти, я отправляю все изменения через git на свою физическую машину или в наш центральный репозиторий и завершаю работу виртуальной машины.
Если для настройки среды требуется больше времени (длительные установки, загрузка больших файлов и т. П.), Я делаю описанную выше процедуру один раз в неделю.
Преимущество заключается в том, что его очень легко развернуть на новом компьютере и / или на производственном сервере, все это задокументировано в сценарии, и сценарий проверяется очень часто.
источник
Концепция, которую вы описываете, - это управление конфигурацией. Это, как это звучит, способ идентифицировать, записывать, версию / отслеживать и сообщать о среде. Часто это задача, которая тесно связана с управлением версиями и сборкой, но она достаточно четкая, для которой часто требуется отдельная стратегия, даже если в ней используются одни и те же понятия и одни и те же механизмы обработки и хранения.
Управление конфигурацией, помимо того, что помогает контролировать рабочую среду, также помогает вести учет различных рабочих сред, в которых используется программное обеспечение (разработка, как уже упоминалось, плюс тестирование / контроль качества, развертывание для обычных клиентов, развертывание для клиентов, которые требуют особого рассмотрения или особой конфигурации). или строить свойства и тд).
Как я уже сказал, часто это задача, которая совпадает с управлением версиями исходного кода, и часто данные управления конфигурацией находятся рядом с источником как в документации, так и в хранилище исходного кода. Это не должно быть, но часто для удобства.
В последние годы автоматизация некоторых аспектов управления конфигурациями значительно улучшилась. В некоторых ответах и комментариях сценарии предложены как способ продвижения управления конфигурацией, и сценарии являются хорошим ответом для достижения воспроизводимых результатов, но зачастую сценарии, созданные вручную, сами по себе являются непоследовательными и неполными. Одним из таких способов является автоматическое обеспечение. Системы, такие как кукольный или шеф-поварпомогите определить программные компоненты и системы для конкретного пользователя или машины или для конкретного профиля задачи и предоставить «рецепты», которые позволяют без усилий подойти к настройке полной машины или среды. Он в основном берет концепцию репозитория распространения программного обеспечения и расширяет и обобщает его, предоставляя не только пакеты программного обеспечения, необходимые для системы, но и профили конфигурации, характерные для каждого пакета, чтобы он был готов к использованию в соответствии с вашими требованиями. ситуация.
Vagrant принимает это в несколько ином направлении и предоставляет способ быстрого раскрутки определений виртуальных машин, так что виртуальная машина может автоматически подготовить свое виртуальное программное и аппаратное обеспечение, и может оказаться удобным способом воспроизведения конкретного представления аппаратного обеспечения. среда, используемая пользователем вашего программного обеспечения.
Каждая система (и варианты) требует немного времени для настройки, но имеет определенную ценность, если вы считаете, что задача перезагрузки и перенастройки является обычной задачей.
источник
Докер был бы хорошим вариантом. Вы можете использовать dockerfile, чтобы действовать как манифест для виртуальной машины, которую вы хотите. Вам не нужно хранить какое-либо изображение, оно загрузит необходимое. Кроме того, он может использовать ваши собственные изображения, так что вы можете создать свой собственный базовый образ, а затем добавить компоненты, необходимые для среды.
Используя Docker, это также может улучшить другие части вашего рабочего процесса:
Таким образом, идеи об использовании виртуальной машины верны лишь отчасти, я знаю, что жесткие диски становятся все больше и больше, но это не причина использовать все пространство, которое у вас есть. Кроме того, когда среде виртуальной машины требуется больше внутреннего пространства на жестком диске, это может быть немного сложнее, и есть вероятность, что вам потребуется ее перестроить. Хотя размер файла может и не быть проблемой, скорость интернета все еще становится узким местом, когда вам нужно отправить более 5Go по обычному соединению DSL.
источник
Большинство систем (языки, среды выполнения или операционные системы) имеют какой-то стандартизированный способ установки программного обеспечения и конфигураций, поэтому попробуйте их использовать. Такие как:
Затем сделайте инструкции по установке, поясняющие, что именно нужно установить / какие шаги необходимы:
Тогда вы сможете воссоздать окружение, и другие тоже должны это сделать (что может быть важно, если это не сольный проект).
Возможно, вам потребуется где-то хранить необходимые установочные пакеты, или вы можете просто включить инструкции по загрузке (если система не отслеживает их, такие как apt-get или Maven). Это зависит от того, насколько вы доверяете поставщикам пакетов - вероятно, нет необходимости хранить основные пакеты Debian, но с небольшим проектом свободного программного обеспечения это может быть хорошей идеей.
Решение VM также будет работать, и, вероятно, будет меньше работать в краткосрочной перспективе (просто оставьте VM). Тем не менее, я чувствую, что это решение предлагает большую гибкость, например, при изменении среды.
источник