Вы знаете, что делать.
«Используйте филиалы», они сказали. «Это будет весело», — сказали они.
Ага. Но как насчет здания и развертывания этих ветвей к тестовым серверу без Сначала сливая ветку на постановку или даже мастер-ветвь только для развертывания этой сказочной и 100% без ошибок?
Ну, благодаря Gitlab И маленький файл YML, это легко.
Кстати, я уверен, что это работает очень похоже на Github , Bitbucket и так далее. Мы просто используем Gitlab в офисе, поэтому я представляю вас с решением GitLab.
По сути, вы должны выяснить, как вы начинаете постоянную интеграцию трубопровод или работа Внутри вашего решения CI сначала.
В GitLab вы создаете .gitlab-ci.yml Файл и поместите это в корневой каталог вашего репозитория, вероятно, рядом с вашим .gitignore Отказ
Необходимый скрипт выглядит довольно похожим на все, что вы поставили в пакетный файл.
Хотите построить проект JavaScript? Вероятно, беги NPM установить первый.
Строить что-то в .NET Основной? Беги ROTNET RESTORE. а потом dotnet publish -c Debug может быть.
Вот небольшой пример для .NET Основной проект:
stages:
- deploy
deploy:dev:
stage: deploy
script:
- "dotnet restore"
- echo Build Debug
- "dotnet publish -c Debug"
- echo Deploy to your dev-machine
- '"C:/Program Files (x86)/IIS/Microsoft Web Deploy V3/msdeploy.exe" ...
В этом примере Этапы Рассказывает, какие этапы ожидают в этом скрипте. Вы также можете сказать, что каждый Этап это определенный работа Отказ Тогда, Развертывание: Dev является произвольным именем для последующей части.
Там вы установили текущий Этап а потом вы пишете Сценарий Отказ Как видите, скрипт содержит команды, которые вы также запускаете в пакетном файле, либо введите в клемму Visual Studio Code вручную.
Это самая тяжелая часть. Нахождение правильных команд для создания и развертывания приложения с вашим выбором технологии.
Легко Часть состоит в том, чтобы построить сценарий, который ведет себя по-разному в зависимости от текущей отрасли.
Добавим следующую строку.
rules: - if: $CI_COMMIT_REF_NAME == "dev"
Полный скрипт будет выглядеть так.
stages:
- deploy
deploy:dev:
rules:
- if: $CI_COMMIT_REF_NAME == "dev"
stage: deploy
script:
- "dotnet restore"
- echo Build Debug
- "dotnet publish -c Debug"
- echo Deploy to your dev-machine
- '"C:/Program Files (x86)/IIS/Microsoft Web Deploy V3/msdeploy.exe" ...
С правила Вы можете определить Когда Ваш скрипт должен работать. В этом конкретном случае он только запускал, только если вы совершили изменения кода на dev ветка.
Большая проблема сейчас есть, что происходит с другими ветвями?
Вам нужны разные файлы YML для разных ветвей? И вы должны обратить внимание, когда вы хотите объединить эти филиалы?
И как мы все знаем, Оплата внимания заканчивается катастрофически в конце концов.
К счастью, это проблема прошлого.
Просто добавьте скрипт для другой ветви в тот же файл.
stages:
- .pre
- deploy
build:master:
rules:
- if: $CI_COMMIT_REF_NAME == "master"
stage: .pre
script:
- "dotnet restore"
- echo Build Debug
- "dotnet publish -c Debug"
deploy:dev:
rules:
- if: $CI_COMMIT_REF_NAME == "dev"
stage: deploy
script:
- "dotnet restore"
- echo Build Debug
- "dotnet publish -c Debug"
- echo Deploy to your dev-machine
- '"C:/Program Files (x86)/IIS/Microsoft Web Deploy V3/msdeploy.exe" ...
В приведенном выше примере приложение будет только построил Если изменение было привержено главной ветви.
Но, возможно, вы также хотите автоматически развернуть ведущую ветку. Не с каждым коммитным, но, может быть, каждую ночь или каждую неделю?
Что ж, в этом случае вы настроили планировщик, а затем добавить другой скрипт, который следует только вызывать, когда планировщик запустил работу.
Так выглядит график в GitLab:
Обратите внимание, что мы определяем переменную Ci_pipipeline_source и установить значение для Графики Отказ Затем мы можем использовать эту переменную в подходящем скрипте.
stages:
- .pre
- deploy
build:master:
rules:
- if: $CI_COMMIT_REF_NAME == "master" && $CI_PIPELINE_SOURCE != "schedules"
stage: .pre
script:
- "dotnet restore"
- echo Build Debug
- "dotnet publish -c Debug"
deploy:master:
rules:
- if: $CI_COMMIT_REF_NAME == "master" && $CI_PIPELINE_SOURCE == "schedules"
stage: deploy
script:
- "dotnet restore"
- echo Build Debug
- "dotnet publish -c Debug"
- echo Deploy to your production machine
- '"C:/Program Files (x86)/IIS/Microsoft Web Deploy V3/msdeploy.exe" ...
deploy:dev:
rules:
- if: $CI_COMMIT_REF_NAME == "dev"
stage: deploy
script:
- "dotnet restore"
- echo Build Debug
- "dotnet publish -c Debug"
- echo Deploy to your dev-machine
- '"C:/Program Files (x86)/IIS/Microsoft Web Deploy V3/msdeploy.exe" ...
С $ Ci_pipeline_source. Мы знаем, что работа была начата планировщиком. И поскольку этот планировщик, вероятно, будет работать в 3 утра, мы можем спокойно развернуть нашу сборку на производство без прерывания потока наших коллег.
Теперь, прежде чем эксперты кричат на меня. Я знаю, что этот скрипт не идеален. Есть больше деталей, чтобы объяснить, как оздоровительный Этап или почему я не подключаю работу в примерных сценариях. Я знаю, я знаю, я знаю!
Это должно просто дать вам представление о том, как можно настроить все вещи. Подробнее, пожалуйста, посмотрите на Официальная документация вашего Дежол Платформа. Спасибо.
Хорошо. Я надеюсь, что это помогло, и вы, наконец, можете объединить свои ветви без страха.
Счастливое кодирование!
Изображение, созданное Катемангостаром на freepik.com .
Но подожди, есть больше!
- Давайте подключемся к Twitter , YouTube , LinkedIn Или здесь на dev.to. .
- Получить 5 карьеры разработчика программного обеспечения бесплатно.
- Наслаждайтесь более ценными статьями для вашей жизни и карьеры разработчика на patrickgod.com Отказ
Оригинал: «https://dev.to/_patrickgod/continuous-integration-with-branches-schedules-472d»