Рубрики
Uncategorized

Непрерывная интеграция с ветвями и расписаниями

Хотите создать и развернуть несколько ветвей с одним файлом? Вот как. Теги с новичками, DevOps, учебником.

Вы знаете, что делать.

«Используйте филиалы», они сказали. «Это будет весело», — сказали они.

Ага. Но как насчет здания и развертывания этих ветвей к тестовым серверу без Сначала сливая ветку на постановку или даже мастер-ветвь только для развертывания этой сказочной и 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 .

Но подожди, есть больше!

Оригинал: «https://dev.to/_patrickgod/continuous-integration-with-branches-schedules-472d»