This content originally appeared on DEV Community and was authored by ohalay
Коли реліз все ближче і потрібно підтримувати кілька середовищ а потім кілька версій, постає питання: "Як можна додати версійність до програмного продукту?".
Semantic Versioning
Semantic Versioning (SemVer) - стандарт схеми версіювання, який не прив'язаний до додної з мов програмування. Він описується наступною моделлю major.minor.patch-pre-release.build, до прикладу 0.1.0-rc.44. Коли ми робимо зміни в нашій аплікації/бібліотеці нам необхідно збільшувати цифровий ідентифікатор. Наступні правила описуть зміну цифрового ідентифікатора:
- major - архітектурні зміни, несумісний API
- minor - новий функціонал, додали зворотню сумісність до API
- patch - виправлення помилок чи проблем безпеки
- pre-release - опційний аргумент, щоб ідентифікувати версію яка ще не готова до production - alfa, beta, rc(release candidate)
- build - опційний аргументщо визначає версію збірки продукту.
Add version to solution
Ми вже знаємо як створювати семантичну версію продукту. Щоб додати її до нашого рішення необхідно обрати *.csproj або Directory.build.props до якого ми будемо додавати версійність і додати атрибут VersionPrefix
. Відповідно цей атрибут буде доданий до нашої збірки.
<PropertyGroup>
<VersionPrefix>0.1.0</VersionPrefix>
</PropertyGroup>
Тут важливо використовувати атрибут
VersionPrefix
а неVersion
, бо ми ще хочемо доавати pre-release оційний атрибут до нашої кінцевої версії.
Add API for versions
Для того щоб створити API, який буде повертати версію продукту необхідно стоврити контроллер якй буде з атрибутів assembly отримувати версію. Код нижче описує як це можна зробити
[HttpGet]
public string GetVersion()
=> Assembly
.GetExecutingAssembly()
.GetCustomAttribute<AssemblyInformationalVersionAttribute>()
.InformationalVersion;
Add build version
Для завершення рішення залишилось додти білд версію. Для цього нам необхідно знати дві речі:
- Команда
dotnet build
підтримує параметер--version-suffix
який додає суфікс до версії під час збору аплікації. - GitHub Actions надає набір визначених змінних про контекст виконання одиниці автоматизаці. Для нас є цікавим змінна github.run_number - унікальний ідентифікатор запуску одниці автоматизації, який збільшуєтсья на одиницю під час кожного запуску і починається також з одиниці.
Зібравши попередні два пункти, ми можемо описати команду збору проекту наступним чином:
dotnet build -c Release --version-suffix rc+${{github.run_number}}
Додаємо цю команду в крок одиниці автоматизації і все готово.
Summary
SemVer є стандартизованим підходом до версіювання, який спрощує інтеграцію аплікації з іншими системами; також з допомогою версіювання можна легко відслідквувати помилки в аплікації (ми розуміємо в якій версії помилка зявилась і в якій її виправили).
Описаний вище підхід дозволяє досить швидко додавати версійність до аплікації, також його можна використовувати з іншими CI платформами. І ще одне, коли продукт/бібліотека використовує стандарт SemVer, то легко налаштувати dependabot, про який я описував тут, що буде автоматично апдейтити patch версії. Приклад GitHub проекту можна глянути нижче
This content originally appeared on DEV Community and was authored by ohalay
ohalay | Sciencx (2021-07-04T15:01:20+00:00) Add build version using GitHub Actions. Retrieved from https://www.scien.cx/2021/07/04/add-build-version-using-github-actions/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.