Automate your Jetson Nano workflows using GitHub self-hosted runners

Hello community,

We wanted to share some of our hard-earned experience in automating Jetson Nano workflows using GitHub self-hosted runners. If you want to run smoke tests, packaging or build Docker images natively on the Jetson Nano you might find the article interesting.

Hope this help.

1 Like

Thanks for posting @sdobrev, that’s quite useful!

If I wanted to use this for CI/CD and automatically trigger self-hosted container builds/tests when commits are made to a repo, would I just install the actions-runner-linux-arm64 package directly on my Jetson(s) (outside of container) so that it could launch docker build/run/push operations?

Or is your runner container image capable of executing arbitrary actions from GitHub, including docker-in-docker?

(moving this to the Jetson Projects forum for longer-term visibility)

1 Like

Hey Dusty,

If you want to run the runner natively (not in a Docker) you have to download the actions-runner-linux-arm64-* archive, extract it and run the ./ script. In the blog post those are the last two lines of the example Dockerfile.

More information can be found on the GitHub’s docs about self-hosted runners.

Hey @sdobrev

Really cool article! I was wondering about how would be your approach to test the whole stack. I totally get how to enroll a Jetson as a Github actions runner, and use it as a host to run or build containers and leveraging the GPUs. However, how can I test a specific Kernel version? That would be inherited from the host, and If I need a specific kernel version (newer or older), I won’t be able to reflash the entire thing coz runner would be totally lost. Am I missing something?


To test on specific kernel versions you need to have different Jetson boards each with its own kernel version. Each of those will have the GitHub actions runner configured. Then you can use a matrix strategy to run a job on all runners at once.

This also looks interesting:

1 Like