CI/CD конвейер: Учете с пример

Какво е CI/CD тръбопровод?

CI/CD тръбопроводът автоматизира процеса на доставка на софтуер. Той създава код, изпълнява тестове и ви помага безопасно да внедрите нова версия на софтуера. CI/CD тръбопроводът намалява ръчните грешки, предоставя обратна връзка на разработчиците и позволява бързи итерации на продукта.

CI/CD тръбопроводът въвежда автоматизация и непрекъснат мониторинг през целия жизнен цикъл на софтуерния продукт. Това включва от фазата на интегриране и тестване до доставката и внедряването. Тези свързани практики се наричат ​​CI/CD тръбопровод.

Какво е непрекъсната интеграция, непрекъсната доставка и непрекъснато внедряване?

  • Непрекъсната интеграция е метод за разработка на софтуер, при който членовете на екипа могат да интегрират работата си поне веднъж на ден. При този метод всяка интеграция се проверява от автоматизирана компилация за търсене на грешката.
  • Непрекъсната доставка е метод на софтуерно инженерство, при който екип разработва софтуерни продукти в кратък цикъл. Той гарантира, че софтуерът може лесно да бъде пуснат по всяко време.
  • Непрекъснато внедряване е процес на софтуерно инженерство, при който функционалностите на продукта се доставят чрез автоматично внедряване. Помага на тестерите да потвърдят дали промените в кодовата база са правилни и дали тя е стабилна или не.

Етапи на CI/CD конвейер

CI/CD тръбопроводът е изпълняваема спецификация на стъпките, които всеки разработчик трябва да изпълни, за да достави нова версия на всеки софтуер. Неуспехът на всеки един етап задейства известие по имейл, Slack, или други комуникационни платформи. Това позволява на отговорните разработчици да знаят за важните проблеми.

Ето важните етапи на CI/CD тръбопровода:

Етапи на CI/CD конвейер
Етапи на CI/CD конвейер

Етап на източника

В етапа на източника CI/CD тръбопроводът се задейства от хранилище на код. Всяка промяна в програмата задейства известие към инструмента CI/CD, който изпълнява еквивалентен конвейер. Други често срещани тригери включват инициирани от потребителя работни потоци, автоматизирани графици и резултатите от други конвейери.

Етап на изграждане

Това е вторият етап от CI/CD Pipeline, в който обединявате изходния код и неговите зависимости. Това се прави главно за изграждане на работещ екземпляр на софтуер, който потенциално можете да изпратите до крайния потребител.

Програми, които са написани на езици като C++, Java, C или езикът Go трябва да бъде компилиран. от друга страна, JavaСценарий, Python, и Ruby програмите могат да работят без етап на изграждане.

Неуспешното преминаване на етапа на изграждане означава, че има фундаментална неправилна конфигурация на проекта, така че е по-добре незабавно да адресирате този проблем.

Етап на тестване

Тестовият етап включва изпълнението на автоматизирани тестове за потвърждаване на коректността на кода и поведението на софтуера. Този етап предотвратява достигането на лесно възпроизводими грешки до клиентите. Отговорност на разработчиците е да пишат автоматизирани тестове.

Етап на разгръщане

Това е последният етап, на който вашият продукт излиза на живо. След като компилацията успешно премине през всички необходими тестови сценарии, тя е готова за внедряване на жив сървър.

Пример за CI/CD тръбопровод

Ето пример за CI/CD тръбопровод:

  • Контрол на изходния код: Код на хост в GitHub като частно хранилище. Това ще ви помогне да интегрирате вашето приложение с основни услуги и софтуер.
  • Непрекъсната интеграция: Използвайте непрекъсната платформа за интеграция и доставка CircleCI и ангажирайте всеки код. Когато промените бъдат уведомени, този инструмент ще изтегли наличния код в GitHub и ще обработи, за да създаде и изпълни теста.
  • Разположете код в UAT: Определен CircleCI за внедряване на вашия код на AWS UAT сървър.
  • Внедряване в производство: Трябва да използвате повторно непрекъснати стъпки за интегриране за внедряване на код в UAT.

CI/CD тръбопровод Най-добри практики

Ето най-добрите практики за CI/CD тръбопровод:

  • Запишете текущия процес на разработка, така че можете да знаете процедурите, които изискват промяна, и такива, които могат лесно да бъдат автоматизирани.
  • Започнете с малко доказателство за проект, преди да продължите напред и да завършите целия процес на разработка наведнъж.
  • Настройте конвейер с повече от един етап, в който първо се изпълняват бързи фундаментални тестове.
  • Стартирайте всеки работен процес от една и съща, чиста и изолирана среда.
  • Изпълнявайте инструменти с отворен код, които покриват всичко - от стил на код до сканиране за сигурност.
  • Настройте по-добър кодов център, за да проверявате непрекъснато качеството на вашия код, като изпълнявате стандартния набор от тестове срещу всеки клон.
  • Партньорският код преглежда всяка заявка за изтегляне, за да разреши проблем по съвместен начин.
  • Трябва да дефинирате показатели за успех, преди да започнете прехода към автоматизация на CD. Това ще ви помогне да анализирате последователно софтуера си, развивайки напредък, помагайки за усъвършенстване, където е необходимо.

Предимства на CI/CD тръбопроводи

Ето предимствата/предимствата на CI/CD Pipeline:

  • Изграждането и тестването могат лесно да се извършват ръчно.
  • Може да подобри последователността и качеството на кода.
  • Подобрява гъвкавостта и има способността да доставя нови функционалности.
  • CI/CD тръбопроводът може да рационализира комуникацията.
  • Може да автоматизира процеса на доставка на софтуер.
  • Помага ви да постигнете по-бърза обратна връзка с клиентите.
  • CI/CD тръбопроводът ви помага да увеличите видимостта на вашия продукт.
  • Позволява ви да премахнете ръчни грешки.
  • Намалява разходите и труда.
  • CI/CD тръбопроводите могат да направят жизнения цикъл на разработка на софтуер по-бърз.
  • Има автоматизирано разгръщане на тръбопровода.
  • CD тръбопроводът дава бърза обратна връзка, започвайки от разработчика до клиента.
  • Подобрява комуникацията между служителите на организацията.
  • Това позволява на разработчиците да знаят кои промени в компилацията могат да се обърнат към посредника и да ги избягват в бъдеще.
  • Автоматизираните тестове, заедно с няколко ръчни тестови изпълнения, помагат да се коригират всички проблеми, които могат да възникнат.

Важни CI/CD инструменти

Ето важните CI/CD инструменти:

1) Дженкинс

Jenkins е сървър за непрекъсната интеграция с отворен код, който помага за постигането на процеса на непрекъсната интеграция (и не само) по автоматизиран начин. Jenkins е безплатен и е изцяло написан Java. Jenkins е широко използвано приложение по целия свят, което има около 300 XNUMX инсталации и расте с всеки изминал ден.

Дженкинс

Характеристики:

  • Дженкин ще създава и тества код много пъти през деня.
  • Автоматизиран процес на изграждане и тестване, спестяване на време и намаляване на дефектите.
  • Кодът се внедрява след всяко успешно изграждане и тестване.
  • Цикълът на развитие е бърз.

Връзка: https://www.jenkins.io/download/


2) Bamboo

Bamboo е сървър за изграждане на непрекъсната интеграция, който изпълнява – автоматично изграждане, тестване и издания на едно място. Работи безпроблемно със софтуера JIRA и Bitbucket.

Bamboo

Характеристики:

  • Изпълнявайте паралелни партидни тестове
  • Настройвам Bamboo е доста просто
  • Функцията за разрешения за среда позволява на разработчиците и QA да внедряват в своите среди
  • Вградено Git разклоняване и работни процеси. Той автоматично обединява клоновете.

Връзка: https://www.atlassian.com/software/bamboo


3) CircleCi

CircleCi е гъвкав CI инструмент, който работи във всякаква среда, като междуплатформено мобилно приложение, Python API сървър или Docker клъстер. Този инструмент намалява грешките и подобрява качеството на приложението.

CircleCi

Характеристики:

  • Позволява да изберете среда за изграждане
  • Поддържа много езици, включително C++, JavaСкрипт, NET, PHP, Pythonи Руби
  • Поддръжката за Docker ви позволява да конфигурирате персонализирана среда.
  • Автоматично отменя всички компилации на опашка или работещи, когато се задейства по-нова компилация.

Връзка: https://circleci.com/

Защо CI/CD Pipeline има значение за ИТ лидерите?

  • CI/CD тръбопроводът може да подобри надеждността.
  • Това прави ИТ екипа по-привлекателен за разработчиците.
  • CI/CD тръбопроводът помага на ИТ лидерите да изтеглят код от контрола на версиите и да изпълняват компилация на софтуер.
  • Помага за преместване на код в целевата компютърна среда.
  • Позволява на ръководителите на проекти лесно да управляват променливите на средата и да конфигурират за целевата среда.
  • Мениджърите на проекти могат да публикуват компоненти на push приложения в услуги като уеб услуги, услуги за база данни, API услуги и др.
  • Предоставяне на регистрационни данни и предупреждения за състоянието на доставка.
  • Той позволява на програмистите да проверяват промените в кода, преди да продължат напред, намалявайки шансовете дефектите да се озоват в производството.

KPI за Ci/CD тръбопровод

  • Цикъл или време за внедряване: Времето на цикъла е времето, необходимо за преминаване от етапа на изграждане до производството. Можете да получите средно време на жизнения цикъл чрез измерване на фазите на процеса на разработка. Този показател ще даде представа за тесните места във вашия процес и общата скорост на времето за разработка.
  • Честота на развитие: Честотата на разработка ви позволява да анализирате тесните места, които откривате по време на автоматизацията. По-честите по-малки издания намаляват риска от дефекти и ги коригират, когато бъдат открити. Такъв показател е обща мярка за ефективността на вашия екип.
  • Промяна на времето за изпълнение: Той измерва началното време на фазата на разработка до внедряването. Този показател е индикатор за целия процес на разработка и колко добре екипът работи заедно.
  • Промяна на процента на отказ: Той се фокусира върху броя на успехите на разработката спрямо броя на неуспехите.
  • MTTR срещу MTTF: MTTR (средно време за възстановяване) е времето, необходимо на вашия екип за възстановяване от повреда. MTTF (средно време до повреда) измерва времето между поправките и прекъсванията. Тези показатели са отражение на способността на екипа да реагира и коригира проблемите.

Oбобщение

  • CI/CD тръбопроводът автоматизира процеса на доставка на софтуер.
  • CI/CD тръбопроводът въвежда автоматизация и непрекъснат мониторинг през целия жизнен цикъл на софтуерния продукт.
  • Непрекъснатата интеграция е метод за разработка на софтуер, при който членовете на екипа могат да интегрират работата си поне веднъж на ден.
  • Непрекъснатата доставка е метод на софтуерно инженерство, при който екип разработва софтуерни продукти в кратък цикъл.
  • Непрекъснатото внедряване е процес на софтуерно инженерство, при който функционалностите на продукта се доставят чрез автоматично внедряване.
  • Има четири етапа на конвейера на CI/CD: 1) Етап на източника, 2) Етап на изграждане, 3) Етап на тестване, 4) Етап на внедряване.
  • важно CI/CD инструменти са Jenkins, Bambo и Circle CI.
  • CI/CD тръбопроводът може да подобри надеждността.
  • CI/CD тръбопроводът прави ИТ екипа по-привлекателен за разработчиците.
  • Времето на цикъла е времето, необходимо за преминаване от етапа на изграждане до производството.
  • Честотата на разработка ви позволява да анализирате тесните места, които откривате по време на автоматизацията.
  • Change Lead Time измерва началния час на фазата на разработка до внедряването.
  • Change Failure Rate се фокусира върху броя на успехите на разработката спрямо броя на неуспехите.
  • MTTR (средно време за възстановяване) е времето, необходимо на вашия екип за възстановяване от повреда.
  • MTTF (средно време до повреда) измерва времето между поправките и прекъсванията.