# [Build multi-architecture container images with GitHub Arm-hosted runners](https://learn.arm.com/learning-paths/cross-platform/github-arm-runners/)

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/cross-platform/github-arm-runners/)
- [Build options for multi-architecture container images](https://learn.arm.com/learning-paths/cross-platform/github-arm-runners/intro/)
- [Arm-hosted runners for public repositories](https://learn.arm.com/learning-paths/cross-platform/github-arm-runners/public-repos/)
- [Create a new Arm-hosted runner for private repositories](https://learn.arm.com/learning-paths/cross-platform/github-arm-runners/runner/)
- [Run GitHub Actions jobs on the Arm-hosted runner](https://learn.arm.com/learning-paths/cross-platform/github-arm-runners/actions/)
- [Next Steps](https://learn.arm.com/learning-paths/cross-platform/github-arm-runners/_next-steps/)

## About this Learning Path

| Skill level:     | Introductory      |
|------------------|------------------|
| Reading time:    | 30 min           |
| Last updated:    | 02 Jul 2026      |

| Author:              | Jason Andrews, Arm [GitHub](https://github.com/jasonrandrews) [LinkedIn](https://linkedin.com/in/jason-andrews-7b05a8) |
|----------------------|-------------------------------------------------------------------------------------------------------------------|
| Arm IP:              | [Neoverse](https://support.arm.com/?tab=compute-ip&Product%20Type=Infrastructure%20Processors)                   |
| Tags:                | [CI-CD](https://learn.arm.com/tag/ci-cd), [Linux](https://learn.arm.com/tag/linux), [GitHub](https://learn.arm.com/tag/github), [Docker](https://learn.arm.com/tag/docker), [Runbook](https://learn.arm.com/tag/runbook)  |

### Who is this for?
This is an introductory topic for software developers who want to learn how to use Arm-hosted runners for GitHub Actions jobs.

### What will you learn?
Upon completion of this Learning Path, you will be able to:

- Build Arm images and multi-architecture images with Arm-hosted runners.
- Use GitHub Actions to automate image builds.

### Prerequisites
Before starting, you will need the following:

- A GitHub account (a Team or Enterprise Cloud plan is required for private repositories).
- A Docker Hub account.

### Summary
You’ll build and publish multi-architecture container images with GitHub Actions using Arm-hosted runners. You’ll compare common build options, including emulation and native builds assembled with a manifest, then run workflows on Arm-managed arm64 runners for public or private repositories. You’ll create a repository, configure secrets for Docker Hub, and define a workflow that builds images for arm64 alongside amd64, then pushes a multi-architecture image. You’ll also review available runner types for private repositories. After triggering a workflow and verifying that Docker Hub lists a manifest with arm64 and amd64 platforms, you’ll confirm that the build and publication steps completed as intended.

### Frequently asked questions

<details>
<summary>How do I know the job ran on an Arm-hosted runner?</summary>
Check the Actions run details for the runner name or labels that indicate an Arm architecture and confirm the workflow selects the Arm-hosted runner. If the run shows a different runner, review the `runs-on` setting in the workflow.
</details>

<details>
<summary>I’m using a private repository and can’t select an Arm-hosted runner—what should I check?</summary>
Confirm the account uses a Team or Enterprise Cloud plan because private repositories require it for Arm-hosted runners. If it still doesn’t appear, review the repository or organization runner settings.
</details>

<details>
<summary>Which build approach does this path use for multiple architectures?</summary>
The path explains emulation and manifest-based builds, then uses Arm-hosted runners to perform native arm64 builds and assemble a multi-architecture image. The workflow relies on native Arm execution rather than instruction emulation for the arm64 build.
</details>

<details>
<summary>Where do I store credentials so the workflow can push images to Docker Hub?</summary>
Add the required registry credentials as repository secrets and reference them in the workflow. Without these secrets, the push step fails to authenticate.
</details>

<details>
<summary>What result should I expect after the workflow completes?</summary>
Expect a successful Actions run and a new image tag on Docker Hub with a multi-architecture manifest listing arm64 and amd64. If the platforms are missing, review the build logs to see which architecture jobs ran and which images were pushed.
</details>
