Skip to content

Commit 1f04511

Browse files
Content dev
1 parent 3ba1bd3 commit 1f04511

File tree

4 files changed

+153
-65
lines changed

4 files changed

+153
-65
lines changed

content/learning-paths/servers-and-cloud-computing/github-on-arm/_index.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ minutes_to_complete: 15
66
who_is_this_for: This is an introductory topic for developers who want to deploy a GitHub Actions self-hosted runner on an Arm-based Google Axion C4A instance.
77

88
learning_objectives:
9-
- Provision an Arm virtual machine on the Google Cloud Platform using the C4A Google Axion instance family.
10-
- Set up and validate a GitHub Actions self-hosted runner on the Arm virtual machine.
11-
- Deploy a basic CI workflow with NGINX and verify execution on Arm infrastructure.
9+
- Provision an Arm virtual machine on the Google Cloud Platform using the C4A Google Axion instance family
10+
- Set up and validate a GitHub Actions self-hosted runner on the Arm virtual machine
11+
- Deploy a basic CI workflow with NGINX and verify execution on Arm infrastructure
1212

1313
prerequisites:
1414
- A [Google Cloud Platform (GCP)](https://cloud.google.com/free?utm_source=google&hl=en) account with billing enabled
15-
- A GitHub account (you can sign up [here](https://github.com/signup))
15+
- A GitHub account; you can sign up [here](https://github.com/signup)
1616

1717
author: Annie Tallund
1818

content/learning-paths/servers-and-cloud-computing/github-on-arm/background.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ Learn more in Google’s announcement: [Introducing Google Axion processors, our
1616

1717
## GitHub Actions and CI/CD
1818

19-
GitHub Actions is a powerful CI/CD (Continuous Integration and Continuous Delivery) platform built into GitHub. It allows developers to automate tasks such as building, testing, and deploying code in response to events like code pushes, pull requests, or scheduled jobsdirectly from their GitHub repositories. This helps improve development speed, reliability, and collaboration.
19+
GitHub Actions is a powerful CI/CD (Continuous Integration and Continuous Delivery) platform built into GitHub. It allows developers to automate tasks such as building, testing, and deploying code in response to events like code pushes, pull requests, or scheduled jobs - directly from their GitHub repositories. This helps improve development speed, reliability, and collaboration.
2020

2121
A key feature of GitHub Actions is [self-hosted runners](https://docs.github.com/en/actions/concepts/runners/about-self-hosted-runners), which let you run workflows on your own infrastructure instead of GitHub’s hosted servers. This is especially useful for:
2222

23-
- Running on custom hardware, including Arm64-based systems (e.g., Google Axion virtual machine), to optimize performance and ensure architecture-specific compatibility.
24-
- Private network access, allowing secure interaction with internal services or databases.
25-
- Faster execution, especially for resource-intensive workflows, by using dedicated or high-performance machines.
23+
- Running on custom hardware, including Arm64-based systems (for example, Google Axion virtual machine), to optimize performance and ensure architecture-specific compatibility
24+
- Private network access, allowing secure interaction with internal services or databases
25+
- Faster execution, especially for resource-intensive workflows, by using dedicated or high-performance machines
2626

2727
Self-hosted runners give you more control, flexibility, and cost efficiency - ideal for advanced CI/CD pipelines and platform-specific testing.

content/learning-paths/servers-and-cloud-computing/github-on-arm/deploy.md

Lines changed: 141 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@ weight: 4
66
layout: learningpathall
77
---
88

9+
## Overview
910

10-
This section shows how to deploy a self-hosted GitHub Actions runner on your instance. It covers installing Git and GitHub CLI, authenticating with GitHub and configuring the runner on an Arm64 environment for optimized CI/CD workflows.
11+
This section showsyou how to deploy a GitHub Actions self-hosted runner on your Arm64 Google Axion C4A instance. You will install Git and GitHub CLI, authenticate with GitHub, and register the runner so CI/CD workflows run on Arm infrastructure.
1112

12-
### Set up development environment
13+
## Set up your development environment
1314

1415
Start by installing the required dependencies using the `apt` package manager:
1516

@@ -18,7 +19,7 @@ sudo apt update
1819
sudo apt install -y git gh vim
1920
```
2021

21-
Next step is to configure your git credentials. Update the command with your name and email.
22+
Configure your Git identity:
2223

2324
```bash
2425
git config --global user.email "[email protected]"
@@ -27,14 +28,101 @@ git config --global user.name "Your Name"
2728

2829
Now you are ready to connect the machine to GitHub. The command below is used to authenticate the GitHub CLI with your GitHub account. It allows you to securely log in using a web browser or token, enabling the CLI to interact with repositories, actions, and other GitHub features on your behalf.
2930

31+
Authenticate with GitHub:
3032

3133
```console
3234
gh auth login
3335
```
3436

35-
The command will prompt you to make a few choices. For this use-case, you can use the default ones as shown in the image below.
37+
Follow the prompts and accept the defaults.
3638

37-
![Login to GitHub](./images/gh-auth.png)
39+
![Login to GitHub alt-text#center](./images/gh-auth.png "Screenshot of GitHub authentication prompt")
40+
41+
{{% notice %}}
42+
If you get an error opening the browser on your virtual machine, you can navigate to the following URL on the host machine and enter the device code displayed in the CLI of the virtual machine:
43+
```
44+
https://github.com/login/device
45+
```
46+
{{% /notice %}}
47+
48+
When authentication succeeds, you will see a confirmation screen in your browser:
49+
50+
![GitHub UIalt-text#center](./images/login-page.png "Screenshot of successful GitHub login confirmation")
51+
52+
## Test GitHub CLI and Git
53+
54+
The command below creates a new public GitHub repository named **test-repo** using the GitHub CLI. It sets the repository visibility to public, meaning that anyone can view it:
55+
56+
```console
57+
gh repo create test-repo --public
58+
```
59+
You should see an output similar to:
60+
```output
61+
✓ Created repository <your-github-account>/test-repo on GitHub
62+
https://github.com/<your-github-account>/test-repo
63+
```
64+
65+
66+
## Configure the self-hosted runner
67+
68+
In your repository, go to **Settings****Actions****Runners** and select **Add runner**, or view existing self-hosted runners.
69+
70+
{{% notice Note %}}
71+
If the **Actions** tab is not visible, enable Actions under **Settings****Actions****General** by selecting **Allow all actions and reusable workflows**.
72+
{{% /notice %}}
73+
74+
![runner](./images/newsh-runner.png)
75+
76+
Then, click on the **New self-hosted runner** button. In the **Add new self-hosted runner** section. Select Linux for the operating system, and choose ARM64 for the architecture. This will generate commands to set up the runner. Copy and run them on your Google Axion C4A virtual machine.
77+
78+
![new-runner](./images/new-runner.png)
79+
80+
The final command links the runner to your GitHub repo using a one-time registration token.
81+
82+
During the command’s execution, you will be prompted to provide the runner group, the name of the runner, and the work folder name. You can accept the defaults by pressing **Enter** at each step. The output will resemble as below:
83+
84+
```output
85+
--------------------------------------------------------------------------------
86+
| ____ _ _ _ _ _ _ _ _ |
87+
| / ___(_) |_| | | |_ _| |__ / \ ___| |_(_) ___ _ __ ___ |
88+
| | | _| | __| |_| | | | | '_ \ / _ \ / __| __| |/ _ \| '_ \/ __| |
89+
| | |_| | | |_| _ | |_| | |_) | / ___ \ (__| |_| | (_) | | | \__ \ |
90+
| \____|_|\__|_| |_|\__,_|_.__/ /_/ \_\___|\__|_|\___/|_| |_|___/ |
91+
| |
92+
| Self-hosted runner registration |
93+
| |
94+
--------------------------------------------------------------------------------
95+
96+
# Authentication
97+
98+
√ Connected to GitHub
99+
# Runner Registration
100+
Enter the name of the runner group to add this runner to: [press Enter for Default]
101+
Enter the name of runner: [press Enter for lpprojectubuntuarm64]
102+
This runner will have the following labels: 'self-hosted', 'Linux', 'ARM64'
103+
Enter any additional labels (ex. label-1,label-2): [press Enter to skip]
104+
√ Runner successfully added
105+
√ Runner connection is good
106+
```
107+
108+
Finally, start the runner by executing:
109+
```console
110+
./run.sh
111+
```
112+
You should see an output similar to:
113+
114+
```output
115+
√ Connected to GitHub
116+
117+
Current runner version: '2.326.0'
118+
2025-07-15 05:51:13Z: Listening for Jobs
119+
```
120+
The runner will now be visible in the GitHub actions:
121+
122+
![final-runner](./images/final-runner.png)
123+
124+
For now, you can terminate the `./run.sh` command with `Ctrl+C`. Move on to the next section to set up a simple web server using the runner.
125+
](./images/gh-auth.png)
38126

39127
{{% notice %}}
40128
If you get an error opening the browser on your virtual machine, you can navigate to the following URL on the host machine.
@@ -59,66 +147,66 @@ You should see an output similar to:
59147
```output
60148
✓ Created repository <your-github-account>/test-repo on GitHub
61149
https://github.com/<your-github-account>/test-repo
62-
```
150+
```
63151

64152

65-
### Configure the Self-Hosted Runner
153+
### Configure the Self-Hosted Runner
66154

67-
* Go to your repository's **Settings > Actions**, and under the **Runners** section
68-
* Click on **Add Runner** or view existing self-hosted runners.
155+
* Go to your repository's **Settings > Actions**, and under the **Runners** section
156+
* Click on **Add Runner** or view existing self-hosted runners.
69157

70-
{{% notice Note %}}
71-
If the **Actions** tab is not visible, ensure Actions are enabled by navigating to **Settings > Actions > General**, and select **Allow all actions and reusable workflows**.
72-
{{% /notice %}}
158+
{{% notice Note %}}
159+
If the **Actions** tab is not visible, ensure Actions are enabled by navigating to **Settings > Actions > General**, and select **Allow all actions and reusable workflows**.
160+
{{% /notice %}}
73161

74-
![runner](./images/newsh-runner.png)
162+
![runner](./images/newsh-runner.png)
75163

76-
Then, click on the **New self-hosted runner** button. In the **Add new self-hosted runner** section. Select Linux for the operating system, and choose ARM64 for the architecture. This will generate commands to set up the runner. Copy and run them on your Google Axion C4A virtual machine.
164+
Then, click on the **New self-hosted runner** button. In the **Add new self-hosted runner** section. Select Linux for the operating system, and choose ARM64 for the architecture. This will generate commands to set up the runner. Copy and run them on your Google Axion C4A virtual machine.
77165

78-
![new-runner](./images/new-runner.png)
166+
![new-runner](./images/new-runner.png)
79167

80-
The final command links the runner to your GitHub repo using a one-time registration token.
168+
The final command links the runner to your GitHub repo using a one-time registration token.
81169

82-
During the command’s execution, you will be prompted to provide the runner group, the name of the runner, and the work folder name. You can accept the defaults by pressing **Enter** at each step. The output will resemble as below:
170+
During the command’s execution, you will be prompted to provide the runner group, the name of the runner, and the work folder name. You can accept the defaults by pressing **Enter** at each step. The output will resemble as below:
83171

84-
```output
85-
--------------------------------------------------------------------------------
86-
| ____ _ _ _ _ _ _ _ _ |
87-
| / ___(_) |_| | | |_ _| |__ / \ ___| |_(_) ___ _ __ ___ |
88-
| | | _| | __| |_| | | | | '_ \ / _ \ / __| __| |/ _ \| '_ \/ __| |
89-
| | |_| | | |_| _ | |_| | |_) | / ___ \ (__| |_| | (_) | | | \__ \ |
90-
| \____|_|\__|_| |_|\__,_|_.__/ /_/ \_\___|\__|_|\___/|_| |_|___/ |
91-
| |
92-
| Self-hosted runner registration |
93-
| |
94-
--------------------------------------------------------------------------------
95-
96-
# Authentication
97-
98-
√ Connected to GitHub
99-
# Runner Registration
100-
Enter the name of the runner group to add this runner to: [press Enter for Default]
101-
Enter the name of runner: [press Enter for lpprojectubuntuarm64]
102-
This runner will have the following labels: 'self-hosted', 'Linux', 'ARM64'
103-
Enter any additional labels (ex. label-1,label-2): [press Enter to skip]
104-
√ Runner successfully added
105-
√ Runner connection is good
106-
```
172+
```output
173+
--------------------------------------------------------------------------------
174+
| ____ _ _ _ _ _ _ _ _ |
175+
| / ___(_) |_| | | |_ _| |__ / \ ___| |_(_) ___ _ __ ___ |
176+
| | | _| | __| |_| | | | | '_ \ / _ \ / __| __| |/ _ \| '_ \/ __| |
177+
| | |_| | | |_| _ | |_| | |_) | / ___ \ (__| |_| | (_) | | | \__ \ |
178+
| \____|_|\__|_| |_|\__,_|_.__/ /_/ \_\___|\__|_|\___/|_| |_|___/ |
179+
| |
180+
| Self-hosted runner registration |
181+
| |
182+
--------------------------------------------------------------------------------
107183
108-
Finally, start the runner by executing:
109-
```console
110-
./run.sh
111-
```
112-
You should see an output similar to:
184+
# Authentication
113185
114-
```output
115-
√ Connected to GitHub
186+
√ Connected to GitHub
187+
# Runner Registration
188+
Enter the name of the runner group to add this runner to: [press Enter for Default]
189+
Enter the name of runner: [press Enter for lpprojectubuntuarm64]
190+
This runner will have the following labels: 'self-hosted', 'Linux', 'ARM64'
191+
Enter any additional labels (ex. label-1,label-2): [press Enter to skip]
192+
√ Runner successfully added
193+
√ Runner connection is good
194+
```
116195

117-
Current runner version: '2.326.0'
118-
2025-07-15 05:51:13Z: Listening for Jobs
119-
```
120-
The runner will now be visible in the GitHub actions:
196+
Finally, start the runner by executing:
197+
```console
198+
./run.sh
199+
```
200+
You should see an output similar to:
201+
202+
```output
203+
√ Connected to GitHub
204+
205+
Current runner version: '2.326.0'
206+
2025-07-15 05:51:13Z: Listening for Jobs
207+
```
208+
The runner will now be visible in the GitHub actions:
121209

122-
![final-runner](./images/final-runner.png)
210+
![final-runner](./images/final-runner.png)
123211

124-
For now, you can terminate the `./run.sh` command with `Ctrl+C`. Move on to the next section to set up a simple web server using the runner.
212+
For now, you can terminate the `./run.sh` command with `Ctrl+C`. Move on to the next section to set up a simple web server using the runner.

content/learning-paths/servers-and-cloud-computing/github-on-arm/instance.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ weight: 3
66
layout: learningpathall
77
---
88

9-
## Introduction
9+
## Overview
1010

11-
This section walks you through creating a **Google Axion C4A Arm virtual machine** on Google Cloud with the **c4a-standard-4 (4 vCPUs, 16 GB memory)** machine type using the **Google Cloud Console**. You will use this VM later as the host for a GitHub Actions self-hosted runner.
11+
This section walks you through creating a Google Axion C4A Arm virtual machine on Google Cloud with the `c4a-standard-4` (4 vCPUs, 16 GB memory) machine type using the Google Cloud Console. You will use this VM later as the host for a GitHub Actions self-hosted runner.
1212

1313
If you don't have a Google Cloud account, see the Learning Path [Getting started with Google Cloud Platform](https://learn.arm.com/learning-paths/servers-and-cloud-computing/csp/google/).
1414

15-
### Create an Arm-based virtual machine (C4A)
15+
## Create an Arm-based virtual machine (C4A)
1616

1717
Follow these steps in the Google Cloud Console:
1818

@@ -26,7 +26,7 @@ Follow these steps in the Google Cloud Console:
2626
- Under **Networking**, enable **Allow HTTP traffic** so you can test workloads like NGINX later.
2727
- Select **Create** to launch the instance.
2828

29-
![Google Cloud Console page showing C4A VM creation with c4a-standard-4 selected](./images/select-instance.png "Create a C4A VM in the Google Cloud Console")
29+
![Google Cloud Console page showing C4A VM creation with c4a-standard-4 selectedalt-text#center](./images/select-instance.png "Create a C4A VM in the Google Cloud Console")
3030

3131
{{% notice Important %}}
3232
Do not leave **Allow HTTP traffic** enabled permanently. For long-term use, allow traffic only from the IP addresses you use to connect to the instance.

0 commit comments

Comments
 (0)