Add build version using GitHub Actions

Коли реліз все ближче і потрібно підтримувати кілька середовищ а потім кілька версій, постає питання: “Як можна додати версійність до програмного продукту?”.

Semantic Versioning

Semantic Versioning (SemVer) – стандарт схеми версіювання, яки…


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

Для завершення рішення залишилось додти білд версію. Для цього нам необхідно знати дві речі:

  1. Команда dotnet build підтримує параметер --version-suffix який додає суфікс до версії під час збору аплікації.
  2. 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


Print Share Comment Cite Upload Translate Updates
APA

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/

MLA
" » Add build version using GitHub Actions." ohalay | Sciencx - Sunday July 4, 2021, https://www.scien.cx/2021/07/04/add-build-version-using-github-actions/
HARVARD
ohalay | Sciencx Sunday July 4, 2021 » Add build version using GitHub Actions., viewed ,<https://www.scien.cx/2021/07/04/add-build-version-using-github-actions/>
VANCOUVER
ohalay | Sciencx - » Add build version using GitHub Actions. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2021/07/04/add-build-version-using-github-actions/
CHICAGO
" » Add build version using GitHub Actions." ohalay | Sciencx - Accessed . https://www.scien.cx/2021/07/04/add-build-version-using-github-actions/
IEEE
" » Add build version using GitHub Actions." ohalay | Sciencx [Online]. Available: https://www.scien.cx/2021/07/04/add-build-version-using-github-actions/. [Accessed: ]
rf:citation
» Add build version using GitHub Actions | ohalay | Sciencx | 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.

You must be logged in to translate posts. Please log in or register.