Перейти до основного вмісту

Артефакт Renode

Портативний бінарний дистрибутив Renode — відкритого фреймворку симуляції та віртуальної розробки для embedded-систем від Antmicro — разом із renode-test, його запускачем тестів на базі Robot Framework, що використовується для інтеграційного/імплементаційного тестування симульованого firmware. Цей репозиторій використовується Embedbits Platform Artifact Handler для пошуку, завантаження, перевірки та налаштування Renode у подальших embedded-проєктах.

Цей репозиторій поділено на три гілки/посилання за ролями: гілка main (master), яку ви зараз читаєте, містить лише цю документацію; скрипти handler містяться в гілці Core, а версіоновані бінарні файли публікуються як GitHub Releases, прив'язані до гілки Bin.


Вміст репозиторію​

main / master
└── README.md ← This document — no other content

Core
└── ArtifactConfig.cmake ← Renode integration logic (artifact init, version lookup, test helper)

Bin (anchor branch — no tracked binary files)
└── (empty commits only; each release tag points here)

Роль у платформі​

Цей репозиторій — один із кількох дистрибутивів артефактів у платформі Embedbits. Загальний потік такий:

GitHub (Embedbits)
──────────────────────────────────────────────────────────
Artifact-renode
main / master → README only (this document)
Core → ArtifactConfig.cmake
Bin → Anchor branch (empty commits)
Releases → renode-<version>-<platform>.zip + .hash
tagged Bin/<version>-<platform> (platform: Win / Unix)

Renode_Importer.sh публікує кожну версію Renode як GitHub Release з тегом Bin/<version>-<platform>, а не як файл, закомічений у гілку Bin. Сама гілка Bin містить лише порожні якірні коміти, на які вказують теги релізів.

Platform Artifact Handler у подальших проєктах посилається на гілку Core як на Git submodule. Під час конфігурації CMake він зчитує ArtifactConfig.cmake, щоб визначити, який реліз завантажувати, а потім завантажує та перевіряє відповідний ресурс релізу для поточної платформи.


Структура гілок​

Гілка / посиланняВміст
main / masterЛише цей README — жодного функціонального вмісту
CoreСкрипт handler ArtifactConfig.cmake для використання артефакту
BinЛише якірна гілка — бінарні файли тут не комітяться
Тег релізу Bin/<version>-<platform>GitHub Release із власне бінарним .zip та файлом контрольної суми .hash як ресурсами релізу, для platform ∈ Win, Unix

Примітка: Сам протокол Embedbits Artifact Handler не прив'язаний до GitHub Releases — це лише те, як скрипти-імпортери, розміщені на GitHub, публікують бінарні файли. На Git-хостингу без еквівалентного Releases API handler також підтримує пакетовані бінарні файли, закомічені безпосередньо як відстежувані файли в гілці Bin і позначені тегами за версією/платформою (Bin/<version>-<platform>), а не завантажені як ресурси релізу. Handler для CMake прозоро розпізнає обидві форми.

⚠️ Немає релізів для macOS (DarwinARM): у поточній лінійці релізів Renode оригінальний проєкт публікує збірки для macOS лише як образи дисків .dmg, а не як звичайний архів tar/zip. Тому Renode_Importer.sh не імпортує платформу DarwinARM, доки оригінальний проєкт не почне постачати звичайний архів (або до Common.sh не буде додано підтримку розпакування .dmg).


⚠️ Отримання релізу​

Бінарні файли не зберігаються як відстежувані файли в Bin — клонуйте гілку Core для скриптів handler, а бінарні файли завантажуйте як ресурси релізу для конкретного тега, а не клонуючи гілку Bin.

# Core handler scripts
git clone --branch Core --single-branch --depth=1 <repository_url> renode-core

# Binary + checksum for one specific version/platform (GitHub Release asset)
gh release download Bin/1.16.1-Unix --repo Embedbits/Artifact-renode --pattern "renode-1.16.1-Unix.*"

Складові​

КомпонентОпис
renodeОсновний симулятор/CLI: завантажує та запускає симульовані апаратні платформи, консоль скриптів, сервер GDB
renode-testЗапускач тестів Robot Framework: виконує інтеграційні/імплементаційні набори тестів .robot для симульованої цілі та створює звіти XML/HTML

Використання​

Артефакт встановлюється автоматично на етапі налаштування артефактів за допомогою:

cmake -P Artifacts/Renode/ArtifactConfig.cmake

Скрипт забезпечує наявність бінарних файлів Renode, за потреби розпаковує архів і додає обидва інструменти до системного PATH для наступних кроків збірки/тестування.

Функції handler​

renode_ArtifactInit(ARTIFACT_BIN_PATH)

Ініціалізує артефакт: знаходить бінарні файли renode і renode-test та надає їх через змінні кешу RENODE_EXECUTABLE / RENODE_TEST_EXECUTABLE.

renode_GetArtifactVersion()

Повертає версію поточних визначених бінарних файлів Renode (через renode -v).

Renode_AddTest(TEST_NAME ROBOT_FILE)

Реєструє тест CTest, який запускає заданий набір .robot через renode-test.


Версіонування​

Версії артефакту безпосередньо відповідають офіційним версіям релізів Renode:

1.14.0, 1.15.0, 1.15.3, 1.16.0, 1.16.1, ...

Нові версії публікує Renode_Importer.sh у репозиторії GithubArtifactsHandler, який завантажує офіційні портативні бінарні файли Renode, пакує їх в архіви .zip із перевіркою SHA-256 і публікує як GitHub Release з тегом Bin/<version>-<platform> — сама гілка Bin просувається лише через порожній якірний коміт, на який вказує тег.


Примітки​

  • Встановлення не потрібне — збірки portable-dotnet самодостатні (із вбудованим середовищем виконання .NET), окремо встановлювати .NET/mono на цільовій машині не потрібно.
  • Офлайн-використання підтримується після локального кешування артефакту.
  • У pipelines Azure DevOps для скорочення часу збірки рекомендовано кешувати теку артефакту.
  • macOS (DarwinARM) наразі не підтримується імпортером — див. примітку вище.

Ліцензія​

Renode розповсюджується за ліцензією MIT. Докладніше: https://github.com/renode/renode/blob/master/LICENSE


Автори​

Запрошуємо до співпраці! Будь ласка, відкрийте pull request.