Jenkins №6. Запуск сборки по комиту

แชร์
ฝัง
  • เผยแพร่เมื่อ 16 พ.ย. 2024

ความคิดเห็น • 37

  • @coolinark
    @coolinark 5 ปีที่แล้ว +34

    Кирилл, нижайший Вам поклон! Если бы все так учили, наш мир бы расцвел!

  • @ruslankosukha8984
    @ruslankosukha8984 5 ปีที่แล้ว +12

    Круто, спасибо, жду с нетерпением следующих роликов!

  • @AndersonSilva-dg4mg
    @AndersonSilva-dg4mg 5 ปีที่แล้ว +10

    Благодарю, продолжайте в том же духе !

  • @artkit8bit
    @artkit8bit 5 ปีที่แล้ว +3

    Спасибо Кирилл! Как всегда годный материал, без воды и очень доступно.

  • @ДмитрийСедякин-н1л
    @ДмитрийСедякин-н1л 5 ปีที่แล้ว +3

    Кирилл, спасибо Вам за эти семь минут, что Вы "наболтали", сейчас хотя бы появилось понимание, что это, для чего это и как это должно работать. Это очень ценная информация, если Вам не сложно, прошу придерживаться такого стиля :)
    p.s. удачи в ГАИ!

  • @seredayan
    @seredayan 5 ปีที่แล้ว +1

    Кирилл есть замечание по поводу cron синтаксиса. Вы говорите, что он рандомно может выбирать интервал. На самом деле он не рандом. Он берет хеш пайплайна и на основании хеша выбирает четко зафиксированный для конкретного правила и конкретного пайплайна интервал. Опция "H" по сути и является первой буквой в слове "Hash".
    Поэтому можно утверждать, что каждый пайплайн будет запускаться в свой промежуток времени и вероятность выполнения двух пайпов в одно время мала.

  • @bbonelove
    @bbonelove 5 ปีที่แล้ว +5

    ооо, видосики раз в неделю, отлично, жду следующий.

  • @atexnik
    @atexnik 5 ปีที่แล้ว +4

    В принципе, как мне кажется, достучаться до локального Дженкинса вполне реально, единственное, требуется соответствующая конфигурация сети.

  • @komilguliev251
    @komilguliev251 5 ปีที่แล้ว +1

    Очень хорошо объяснил. Большое спасибо за это) Надеюсь и дальше будешь создавать такие уроки))))))

  • @sergst52
    @sergst52 3 ปีที่แล้ว +1

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

    • @George-mk7lp
      @George-mk7lp 3 ปีที่แล้ว

      а что с ним??

    • @sergst52
      @sergst52 3 ปีที่แล้ว +1

      @@George-mk7lp в описании канала написано, также информация есть в гугле

  • @andrewlugano
    @andrewlugano 5 ปีที่แล้ว +1

    Отличное видео! СПАСИБО БОЛЬШОЕ!!!

  • @Логовотестировщика
    @Логовотестировщика 2 ปีที่แล้ว

    Полезно! Спасибо!

  • @truenamelessone6294
    @truenamelessone6294 5 ปีที่แล้ว +2

    Отлично, новое видео, спасибо !

  • @МаксимМаксимов-и9ч8т
    @МаксимМаксимов-и9ч8т 3 ปีที่แล้ว

    спасииибо!

  • @Thx-u8v
    @Thx-u8v 5 ปีที่แล้ว +1

    Большое спасибо!!

  • @vladimirlitvinenko1221
    @vladimirlitvinenko1221 5 ปีที่แล้ว +1

    Очень интересный (и неприятный) эффект появляется когда необходимо настроить CI для большого проекта, например если репозиторий имеет размер 1-5 Гигабайт или более. Сталкивался с этим на 1С:ERP (конфигурации 1С можно выгружать в XML и использовать репозиторий на CI). Сборка может, а в некоторых случаях всегда происходит, дважды на один и тот же коммит. Причины следующие:
    1) По расписанию Jenkins обнаруживает новый коммит и запускает сборку. И начинает выкачивать изменения из репозитория. Для большого репозитория время выкачки изменений может оказаться большим (например 3-5 минут, но зависит от размера репозитория и скорости сети). Также ситуация усугубляется если в задаче стоит настройка "Clean before checkout" (это увеличивает время операции если удаляемых файлов много) или репозиторий в рабочей директории задачи вычищается вручную.
    2) Факт того, что этот коммит уже обработан самим Jenkins при запуске fetch/pull не фиксируется. Для задачи по прежнему последним обработанным считается предыдущий коммит (это ключевой момент). Коммит будет зафиксирован как обработанный только после завершения операции fetch/pull, но она ещё идет и будет идти несколько минут.
    3) Проходит время заданное в расписании опроса SCM (git). Чтобы интервал между коммитом от разработчика и запуском сборки был минимальным обычно это время (как и в данном видео) устанавливается в 1-2 минуты. Jenkins сверяет последний обработанный по его данным коммит (он всё ещё предыдущий по отношению к уже обрабатываемому) видит что они отличаются и пытается запустить задачу. Благодаря опции "disable concurrent builds" она не запускается. НО......
    4) Запрет параллельных сборок (disable concurrent builds) приводит к тому, что сборка не запускается, но и не отменяется. Она становится в очередь. И ждет окончания уже запущенной. При этом ждет с теми параметрами, которые получила при старте. Одним из параметров является хеш коммита!
    5) Как только первая сборка заканчивается сразу передается на выполнения стоявшая в очереди. И она начинает делать fetch/pull того же коммита. В итоге получаем две подряд идущие сборки на один и тот же коммит.
    Выходом является либо увеличение интервала опроса SCM, либо отсутствие "ощчищающих" операций с рабочим каталогом задачи.

    • @ScorpioT1000
      @ScorpioT1000 5 ปีที่แล้ว

      А поменять на push политика безопасности не позволяет?

  • @gor_7799
    @gor_7799 5 ปีที่แล้ว

    Спасибо за урок!

  • @nikitaantonenko3287
    @nikitaantonenko3287 5 ปีที่แล้ว

    Спасибо большое!))

  • @hello_world671
    @hello_world671 2 ปีที่แล้ว

    😎

  • @ВладимирМардеев
    @ВладимирМардеев 4 ปีที่แล้ว

    Касательно виртуалок. Кирилл расскажи о своем HW окружении и на чем виртуалки поднимаешь. Мне очень нравится интерфейс макоси и я тут копил на жирный imac или макбук однако накопив у них цены поднялись и плюс мне некоторые продавцы стали говорить что мак это не совсем для виртуализации. Вот я щас с air'a коннекчусь к своему компу дома и там уже виртуалки поднимаю. Расскажи как у тебя пожалуйста. И огромное спасибо за видео!!!

  • @KotangensSO
    @KotangensSO 5 ปีที่แล้ว +3

    "Магия девопса")))

  • @TheAlexvolk
    @TheAlexvolk 5 ปีที่แล้ว

    Кирилл, добрый день.Огромное спасибо за продолжение. Кирилл, у меня к вам вопрос. Как лучше и правильней организовать процесс разработки и непрерывной интеграции. Ситуация по сути тривиальна наверное...Есть один разработчик. Пишет в C#. В основном это Unity разработка и серверная часть dotnet core. Я отвечаю как раз таки за часть devops. Есть ежемесячный лимит средств на Azure. Как лучше всего организовать все сущности и поставку в продакшен?

    • @KirillSemaev
      @KirillSemaev  5 ปีที่แล้ว

      Ну это очень широкий вопрос с кучей нюансов) Я не знаю как на него коротко ответить. Организовать так, чтоб все по максимуму было автоматизировано, надежно и дешево

    • @TheAlexvolk
      @TheAlexvolk 5 ปีที่แล้ว

      @@KirillSemaev А можно и не коротко)) Я буду только рад развернотому ответу.

  • @NordieWolf14
    @NordieWolf14 4 ปีที่แล้ว

    Так в итоге, прав лишили или нет? )

  • @cenubit
    @cenubit 5 ปีที่แล้ว

    How do with Jenkins for one job execute more near Jenkins Job?

    • @KirillSemaev
      @KirillSemaev  5 ปีที่แล้ว

      not sure what you mean by "more near", but I will get to one job triggering another soon

    • @cenubit
      @cenubit 5 ปีที่แล้ว

      @@KirillSemaev Ok, more near = jenkins jobs on same thing Jenkins server.

  • @Magnus_The_Red
    @Magnus_The_Red 5 ปีที่แล้ว

    Кирилл, извиняюсь за бестактность. Складывается впечатление, что вы работает 24/7 и ничего кроме работы. Помнится были проекты у вас. Также вроде вы обещали делать видео по Centos.

    • @KirillSemaev
      @KirillSemaev  5 ปีที่แล้ว +5

      не, я как раз стараюсь больше 8 часов не работать теперь, у меня перебор. В остальное время стараюсь не подходить к компу. Попробую раз в неделю видео, не реже теперь, пока снова не перекроет

  • @dmitriimrcat
    @dmitriimrcat 4 ปีที่แล้ว +1

    А какой смысл усложнять себе жизнь и писать лишний код пайплайна, если можно тупо в дженкинс установить плагин, который будет делать все нужное? Метод "KISS - keep it stupid simle" никто не отменял!

  • @АйдарХабиров-т3к
    @АйдарХабиров-т3к 5 ปีที่แล้ว

    над гайцам систему пересобрать чтоб вас игнорила.

    • @KirillSemaev
      @KirillSemaev  5 ปีที่แล้ว

      я за равенство всех перед законом) Для меня это значит суд в данной ситуации. И всего лишь потому что я медленно объехал на аварийке трамвай который минуты три стоял, высадив всех пассажиров на тротуар и явно никуда не собирался ехать