# Using ARM runner to automatically build releases for Raspberry Pi using GitHub Actions

**URL:** <https://forum.castle-engine.io/t/using-arm-runner-to-automatically-build-releases-for-raspberry-pi-using-github-actions/1435>\
**Category:** News\
**Created:** [November 16, 2024, 6:06am UTC](https://forum.castle-engine.io/t/using-arm-runner-to-automatically-build-releases-for-raspberry-pi-using-github-actions/1435 "2024-11-16T06:06:28Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![michalis](https://forum.castle-engine.io/user_avatar/forum.castle-engine.io/michalis/32/3_2.png) [@michalis](https://forum.castle-engine.io/u/michalis)\
**Post date:** [November 16, 2024, 6:06am UTC](https://forum.castle-engine.io/t/using-arm-runner-to-automatically-build-releases-for-raspberry-pi-using-github-actions/1435/1 "2024-11-16T06:06:28Z")

</div>

| [![Castle Game Engine editor on Raspberry Pi](https://forum.castle-engine.io/uploads/default/original/2X/4/4796a5d1a83f90a699c19c7aa8898fb957b01e82.png)](https://castle-engine.io/wp/wp-content/uploads/2024/11/Zrzut-ekranu-z-2024-11-16-07-00-00.png "Castle Game Engine editor on Raspberry Pi") |
| [![Castle Game Engine editor on Raspberry Pi](https://forum.castle-engine.io/uploads/default/original/2X/c/c52e33c36da30132ce8d8c6b2c28039aef7271b5.png)](https://castle-engine.io/wp/wp-content/uploads/2024/11/Zrzut-ekranu-z-2024-11-16-06-54-30.png "Castle Game Engine editor on Raspberry Pi") |

This is a small infrastructure change for us, but you can also follow this for your own projects, if you already use [GitHub Actions](https://castle-engine.io/github_actions) to build your applications.

For some time, we have been using self-hosted real _Raspberry Pi_ machines to build our releases (of [Castle Game Engine](https://castle-engine.io/), [Castle Model Viewer](https://castle-engine.io/castle-model-viewer) and [PasDoc](https://pasdoc.github.io/)) for _Raspberry Pi_. This includes _32-bit Raspberry Pi_ (with support also for older OS version, based on Debian _bullseye_) and _64-bit Raspberry Pi_ (with support for OS versions \>= based on Debian _bookworm_).

However I was doing tests to see can we use GitHub-hosted Linux runners (thus, available for free, and maintained for us) to build our releases for _Raspberry Pi_. The idea is to run _Raspberry Pi_ in a virtual machine (not only do cross-compilation to it) to be able to also run tests on it.

Turns out there’s a ready [ARM runner GitHub Action](https://github.com/marketplace/actions/arm-runner) that does exactly this. Examples of using this for Pascal applications:

- I’ve done testing can we use it reliably to build FPC + Castle Game Engine applications, which you can see in the repository [michaliskambi/test-arm-runner-for-cge](https://github.com/michaliskambi/test-arm-runner-for-cge/). The [workflow file inside](https://github.com/michaliskambi/test-arm-runner-for-cge/blob/master/.github/workflows/build.yml) shows how to build CGE application for _Raspberry Pi_ using this runner.

- I adjusted [PasDoc snapshots building](https://pasdoc.github.io/DevelopmentSnapshots) to use it. See [PasDoc workflow here](https://github.com/pasdoc/pasdoc/blob/master/.github/workflows/build.yml#L108).

- See also [Castle Game Engine workflow](https://github.com/castle-engine/castle-engine/blob/master/.github/workflows/test-and-pack-arm-runner.yml).

- See also [Castle Model Viewer workflow](https://github.com/castle-engine/castle-model-viewer/blob/master/.github/workflows/build.yml#L146).

We have switched all our projects to building _Raspberry Pi_ releases using this approach now.

---

<div class="post-metadata">

**Author:** ![michalis](https://forum.castle-engine.io/user_avatar/forum.castle-engine.io/michalis/32/3_2.png) [@michalis](https://forum.castle-engine.io/u/michalis)\
**Post date:** [December 28, 2024, 1:37pm UTC](https://forum.castle-engine.io/t/using-arm-runner-to-automatically-build-releases-for-raspberry-pi-using-github-actions/1435/2 "2024-12-28T13:37:44Z")

</div>


