Link Search Menu Expand Document (external link)

Github Actions

This project utilizes Github Actions to facilitate automatic builds and deployments of the various subprojects. Github Actions is a toolbox service by Github which allows users to trigger actions after certain events happen on a Github Repository. These actions can perform anything from content review of pull requests to performing continuous integration. Github Actions in this project are used to automatically build and deploy the various subprojects, including:

  • Generating and publishing this website,
  • Building and publishing the Robot Operating System Docker Image
  • Building and publishing the REST API Server Docker Image

Github Pages Action

Github Actions is used to automatically run our static site generator Jekyll when a commit is pushed to the red-site Github Repository. After building the website, this action also publishes our website to Github Pages. See the website page for more information about how Jekyll and Github Pages work together.

Robot Operating System Docker Image Action

Github Actions is used to automatically build and publish Docker images to Github Packages Docker Image Repository. This action builds and publishes the Docker image using the buildx Docker buildchain. buildx has built-in support for building containers for multiple platforms. This action uses the latest published ros:humble image on DockerHub. For more information on Docker, see here. For more information on multiplatform support, see here.

REST API Server Docker Image Action

Github Actions is used to automatically build and publish Docker images to Github Packages Docker Image Repository. This action builds and publishes the Docker image using the buildx Docker buildchain. buildx has built-in support for building containers for multiple platforms. This action uses the latest published uxa-90_ros_packages image on this project’s Github Packages Docker Image Repository. For more information on Docker, see here. For more information on multiplatform support, see here.


Multiplatform Support

Leveraging the power of the Docker build tool buildx, this project’s Docker containers are automatically built for multiple platforms.

Why Multiplatform?

Most desktop systems these days run on CPUs using the amd64 architecture. As such, most of this project’s development occur on systems using this architecture. However, our project plans to run our project’s codebase on a Raspberry Pi, which uses the arm64 CPU architecture, complicating our development and our Docker image build chain. By leveraging buildx, Github Actions can build a container for both amd64 and arm64 through architecture translation, making native Docker images for each architecture. These separate Docker images are then published to Github Packages Docker Image Repository, and linked together with a manafest file specifying that these Docker images are platform specfic versions of an image.

For example, when pulling the latest API Server image using docker pull ghcr.io/4850-red/api-ts:main, Docker will choose the latest image marked with the host’s CPU architecture.