+
Вход

Въведи своя e-mail и парола за вход, ако вече имаш създаден профил в DEV.BG/Jobs

Забравена парола?
+
Създай своя профил в DEV.BG/Jobs

За да потвърдите, че не сте робот, моля отговорете на въпроса, като попълните празното поле:

79+8 =
+
Забравена парола

Въведи своя e-mail и ще ти изпратим твоята парола

Безплатна DevOps автоматизация от край до край

*Текстът е предоставен от VSG Bulgaria

Добре дошли в нашата статия за безплатна DevOps автоматизация от край до край за .NET проекти. Днес ще ви покажем как да изградите автоматизиран процес за разработка, тестване, публикуване и сканиране на сигурността на вашия проект, като използвате безплатни технологии като GitHub Actions, Azure Static App и GitHub Pages. Следвайки стъпките в тази статия, вие ще можете да постигнете много по-бързо и ефективно изграждане и доставка на вашия .NET проект.

Без да губим време, да започнем!

Светлин Кръстанов – DevOps Team Lead и Старши .NET Разработчик

В тази статия ще ви покажем как да използвате безплатните инструменти .NET и GitHub Actions за създаване на един цялостен DevOps процес. Ще се фокусираме върху петте основни стъпки:

• Създаване на проект и подготовка за релийз (GitFlow)
• Компилиране на проекта и създаване на артефакти – Continuous Integration (CI)
• Автоматично тестване (Unit, Selenium) – Continuous Testing (CT)
• Публикуване на проекта в уеб сървър – Continuous Delivery (CD)
• Автоматично сканиране за уязвимости – Continuous Security (CS)

Всички описани стъпки са разработени на примерен проект в GitHub на този линк 🔗 и са абсолютно безплатни. Проектът ще се развива с публикуването на следващите 2 статии, които ще включват:

• Статия 2:
o Управление на версиите в проектите
o Docker images
o Nuget и NPM регистрита за пакети
o + бонус теми

• Статия 3:
o Kubernetes
o Чат ботове за автоматизиране и интеграции (Skype, Microsoft Teams and etc.)
o Релийзи и автоматично публикуване на changelog
o + бонус теми естествено

Виж readme.md тук, което ще се развива с всяка статия!

Стъпка 1: Създаване на проект и подготовка за релийз

1.1 Създаване на GitHub репозитори: Отворете GitHub, създайте нов акаунт (ако е необходимо) и създайте репозитори за проекта си, като зададете име и настройки за видимост. За .gitignore темплейт може да използвате вече готовия за Visual Studio.

1.2 Създаване на Blazor проект с Visual Studio: Инсталирайте и отворете Visual Studio, създайте нов проект, изберете шаблона „Blazor WebAssembly Application“, задайте име и място за съхранение на проекта.

1.3 Качване на проекта в GitHub: Отворете проекта във Visual Studio, проверете кода и архитектурата, използвайте интегрирания Git клиент, за да направите commit и съхраните промените в репозиторито в GitHub.

Линк към проектите!

Стъпка 2: Компилиране на проекта и създаване на артефакти (Continuous Integration)

След като сме създали нашия проект и сме готови да го пуснем в продукцията, следващата стъпка е да компилираме нашия код и да създадем артефакти, които ще се използват за разпространение на нашето приложение.

За това ще трябва да създадете workflow файл в хранилището. Файлът трябва да има името „dotnet-core.yml“ и да се намира в папката „.github/workflows“. Вътре във файла ще трябва да се добавят следните стъпки:

  1. Инсталиране на .NET Core SDK
  2. Компилиране на приложението
  3. Създаване на артефакт

Този workflow ще се изпълни всеки път, когато се пусне нов commit в главния ни бранч (main).

Той ще изпълни всички необходими стъпки за компилиране на проекта, включително:

  1. Сheckout на кода от GitHub репозитори
  2. Инсталиране на необходимата версия на .NET
  3. Инсталиране на всички външни пакети (nuget/npm packages)
  4. Компилиране на проекта в Release конфигурация
  5. Качване на създадените артефакти в GitHub

След като този workflow приключи успешно, имаме готови артефакти, които могат да бъдат използвани за разпространение на нашето приложение.

Линк към автоматизирания процес (GitHub action)!

Стъпка 3: Автоматично тестване (Continuous Testing)

В тази стъпка ще използваме GitHub Actions, за да изпълним автоматичните тестове на проекта, когато бъде добавен нов код или правим промени.

1.1 Създаване на тестова среда:
Създаваме тестова среда, която ще използваме за изпълнение на тестовете. Тя може да бъде базирана на Docker или да използва виртуални машини. В нашия случай ще използваме Docker.

1.2 Написване на тестове:
Написваме автоматизирани тестове, които да проверят дали функционалностите на проекта работят правилно. В .NET имаме много различни frameworks за тестване, като например NUnit, MSTest, xUnit и други.

1.3 Конфигуриране на GitHub Actions:
Добавяме конфигурационен файл в GitHub, който да казва на GitHub Actions как да изпълни тестовете. В този файл дефинираме каква тестова среда да се използва, какви тестове да се изпълнят и как да се докладва за резултатите.

Днес те питаме…

Как предпочиташ да комуникираш с колегите си на работа?
Loading ... Loading …

GitHub Actions позволява на всеки commit да се изпълнява цял набор от тестове, за да гарантира, че новият код не разваля вече работеща функционалност. Това ни дава увереност, че кодът е в добро състояние и може да бъде пуснат в продукционна среда без да предизвиква проблеми.

Линк към автоматизирания процес със Selenium тестове (GitHub Action)!

Линк към автоматизирания процес със Unit тестове (GitHub Action)!

Стъпка 4: Публикуване на проекта в уеб сървър (Continuous Delivery)

GitHub предлага много интеграции с различни уеб услуги, които позволяват автоматизирано публикуване на приложението. В случая ще използваме GitHub Actions, за да публикуваме приложението в Azure Static App и Github Pages.

Azure Static App е уеб услуга, която позволява публикуване на статични уеб приложения в облака на Microsoft Azure. Github Pages, от друга страна, е услуга за публикуване на статични уеб сайтове, която предоставя GitHub.

За да публикуваме приложението в Azure Static App, трябва да направим следните стъпки:

  1. Създайте нова Azure Static App инстанция в Azure Portal.
  2. Настройте вашият инстанция, като зададете пътя до папката, която съдържа компилираните файлове на приложението.
  3. Създайте и конфигурирайте .yml файл за GitHub Actions. В този файл ще добавим инструкции за компилиране на приложението, качване на файловете в Azure Static App и публикуване на съобщение за успешно публикуване в Slack канал.

Линк към автоматизирания процес за публикуване в Azure Static Web App (GitHub Action)!
Линк към автоматизирания процес за публикуване в GitHub Pages (GitHub Action)!

Стъпка 5: Автоматично сканиране за уязвимости (Continuous security)

След като проектът е успешно тестван и публикуван, е време да го проверим за потенциални уязвимости в сигурността. За целта, можем да използваме OWASP ZAP и CodeQL инструментите, които са налични в GitHub Actions.

OWASP ZAP е безплатен инструмент за тестване на уеб приложения, който може да изпълнява различни видове сканиране за уязвимости, включително сканиране за Cross-Site Scripting (XSS), SQL injection и други. За да използваме OWASP ZAP в GitHub Actions, можем да използваме официално действие, наречено „ZAP Scan“. То позволява да конфигурираме сканирането и да получим доклад със съответните резултати.

CodeQL е инструмент, който може да помогне при откриването на потенциални проблеми за сигурността в кода. Той може да анализира кода за уязвимости, включително за SQL injection и други. За да използваме CodeQL в GitHub Actions, можем да използваме официалното действие, наречено „CodeQL Analysis“. То позволява да конфигурираме анализа на кода и да получим доклад с резултатите.

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

Линк към автоматизирания процес със OWASP ZAP (GitHub Action)!
Линк към автоматизирания процес със CodeQL (GitHub Action)!

Заключение

В заключение, DevOps практиките и инструментите, които бяха използвани в тази статия, са само малка част от възможностите, които предлага тази методология за софтуерна разработка и доставка. Подходът „от край до край“ на DevOps позволява на екипите да разработват и доставят софтуер по-бързо и по-ефективно, като в същото време осигурява по-високо качество и сигурност на приложенията.

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

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

Последвайте ме в LinkedIn или следете DEV.BG за следващите статии.
Благодаря за четенето и нека силата бъде с вас!

Disclaimer: В статията, проектите и кода са използвани ботове и туулове: chatGPT (writing), GitHub Copilot (code), Resharper (code), Dependabot (dependency updates)