You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/learning-paths/servers-and-cloud-computing/circleci-gcp/_index.md
+2-6Lines changed: 2 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,13 +1,9 @@
1
1
---
2
-
title: CircleCI Arm Native Workflows on SUSE Arm (GCP VM)
3
-
4
-
draft: true
5
-
cascade:
6
-
draft: true
2
+
title: Run CircleCI Arm Native Workflows on a SUSE Arm GCP VM
7
3
8
4
minutes_to_complete: 45
9
5
10
-
who_is_this_for: This is an introductory topic for software developers and DevOps engineers looking to set up and run CircleCI Arm native workflows on SUSE Linux Arm64 VMs, specifically on Google Cloud C4A with Axion processors, using self-hosted runners.
6
+
who_is_this_for: This is an introductory topic for developers and DevOps engineers looking to set up and run CircleCI Arm native workflows on SUSE Linux Arm64 virtual machines (VMs), specifically on Google Cloud C4A with Axion processors, using self-hosted runners.
11
7
12
8
learning_objectives:
13
9
- Provision a SUSE Arm64 virtual machine on Google Cloud (C4A with Axion processors)
Copy file name to clipboardExpand all lines: content/learning-paths/servers-and-cloud-computing/circleci-gcp/background.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,20 +1,20 @@
1
1
---
2
-
title: Getting started with CircleCI on Google Axion C4A (Arm Neoverse-V2)
2
+
title: Get started with CircleCI on Google Axion C4A
3
3
4
4
weight: 2
5
5
6
6
layout: "learningpathall"
7
7
---
8
8
9
-
## Google Axion C4A Arm instances in Google Cloud
9
+
## Explore Google Axion C4A
10
10
11
11
Google Axion C4A is a family of Arm-based virtual machines built on Google’s custom Axion CPU, which is based on Arm Neoverse-V2 cores. Designed for high-performance and energy-efficient computing, these virtual machines offer strong performance for modern cloud workloads such as CI/CD pipelines, microservices, media processing, and general-purpose applications.
12
12
13
13
The C4A series provides a cost-effective alternative to x86 virtual machines while leveraging the scalability and performance benefits of the Arm architecture in Google Cloud.
14
14
15
-
To learn more about Google Axion, refer to the [Introducing Google Axion Processors, our new Arm-based CPUs](https://cloud.google.com/blog/products/compute/introducing-googles-new-arm-based-cpu) blog.
15
+
To learn more about Google Axion, see the Google blog [Introducing Google Axion Processors, our new Arm-based CPUs](https://cloud.google.com/blog/products/compute/introducing-googles-new-arm-based-cpu).
16
16
17
-
## CircleCI
17
+
## Learn about CircleCI for Arm-based CI/CD workflows
18
18
19
19
CircleCI is a cloud-based Continuous Integration and Continuous Delivery (CI/CD) platform that automates the process of building, testing, and deploying software.
Copy file name to clipboardExpand all lines: content/learning-paths/servers-and-cloud-computing/circleci-gcp/circleci-arm64-cloud-demo.md
+47-41Lines changed: 47 additions & 41 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,41 +1,36 @@
1
1
---
2
-
title: CircleCI Arm64 Cloud-Native Demo
2
+
title: Build and test an Arm64 Node.js app using CircleCI
3
3
weight: 8
4
4
5
5
### FIXED, DO NOT MODIFY
6
6
layout: learningpathall
7
7
---
8
8
9
-
## Deploying a Cloud-Native Arm64 Node.js App Using a Self-Hosted CircleCI Runner on GCP
9
+
## Overview
10
10
11
-
This section demonstrates how to build and test a simple Node.js web application using a self-hosted CircleCI runner running on a Google Cloud C4A (Axion Arm64) SUSE Linux virtual machine.
11
+
This final section demonstrates how to build and test a simple Node.js web application using a self-hosted CircleCI runner running on a Google Cloud C4A (Axion Arm64) SUSE Linux virtual machine. You’ll configure Docker on the VM so that CircleCI jobs can build, test, and run containerized applications directly in your Arm64 environment, ideal for cloud-native development and CI/CD workflows targeting Arm architecture.
12
12
13
-
You’ll configure Docker on the VM so that CircleCI jobs can build, test, and run containerized applications directly in your Arm64 environment, ideal for cloud-native development and CI/CD workflows targeting Arm architecture.
14
13
15
-
16
-
### Install and Configure Docker
14
+
## Install and configure Docker
17
15
Ensure Docker is installed, enabled, and accessible by both your local user and the CircleCI runner service.
18
16
19
-
1. Install Docker
20
-
Refresh your package manager and install Docker on your system:
17
+
Start by refreshing your package manager and then install Docker on your system:
18
+
21
19
```bash
22
20
sudo zypper refresh
23
21
sudo zypper install docker
24
22
```
25
-
2. Enable and start Docker service
26
-
Set Docker to start automatically at boot and verify it’s running:
23
+
To enable and start the Docker service, set Docker to start automatically at boot and verify it is running:
27
24
```bash
28
25
sudo systemctl enable docker
29
26
sudo systemctl start docker
30
27
sudo systemctl status docker
31
28
```
32
-
3. Grant Docker access to users
33
-
Add both your current user and the circleci system user to the Docker group so they can run Docker commands without sudo:
29
+
Now grant Docker access to users by adding both your current user and the circleci system user to the Docker group so they can run Docker commands without sudo:
34
30
```bash
35
31
sudo usermod -aG docker $USER
36
32
sudo usermod -aG docker circleci
37
33
```
38
-
### Validate Docker access
39
34
After installing Docker and adding the circleci user to the Docker group, verify that the CircleCI runner user can access Docker without requiring elevated privileges.
40
35
41
36
Run the following commands:
@@ -45,8 +40,8 @@ docker ps
45
40
exit
46
41
```
47
42
48
-
###Verify Docker Permissions
49
-
Now, confirm that Docker’s socket permissions and the CircleCI runner service are both configured correctly.
43
+
## Verify Docker permissions
44
+
Now, confirm that Docker’s socket permissions and the CircleCI runner service are both configured correctly:
50
45
51
46
```bash
52
47
ls -l /var/run/docker.sock
@@ -56,7 +51,7 @@ These commands ensure that the Docker socket is accessible and the CircleCI runn
56
51
57
52
Once both checks pass, your environment is ready to build and run container-based pipelines with CircleCI on SUSE Arm64.
58
53
59
-
###Install Node.js and npm
54
+
## Install Node.js and npm
60
55
61
56
Before setting up the sample application, ensure that `Node.js` and its package manager `npm` are installed on your SUSE Arm64 VM. Both are required to run, build, and test the `Node.js` web application within your CircleCI pipeline.
62
57
@@ -69,32 +64,32 @@ sudo zypper install npm
69
64
```
70
65
Next, you’ll create the demo project and prepare its CircleCI configuration to run jobs using your self-hosted Arm64 runner.
71
66
72
-
###Create a repository for your example code
73
-
To store and manage your Node.js demo application, you’ll create a new GitHub repository using the GitHub CLI.
67
+
## Create a repository for your example code
68
+
To store and manage your Node.js demo application, you’ll create a new GitHub repository using the GitHub CLI. This approach lets you quickly initialize a remote repository, push your project files, and collaborate with others directly from your terminal. Using the GitHub CLI is especially helpful on Arm64 systems, as it streamlines repository creation and management without needing to use a web browser. You’ll also be able to authenticate securely and automate common GitHub tasks, making your workflow more efficient for cloud-native development on Arm platforms.
74
69
75
-
1. Install the GitHub CLI
70
+
##Install the GitHub CLI
76
71
The GitHub CLI (gh) lets you manage repositories, issues, and pull requests directly from your terminal.
77
72
78
73
```bash
79
74
sudo zypper install -y gh
80
75
```
81
-
2. Authenticate with GitHub
76
+
##Authenticate with GitHub
82
77
Run the following command to connect the CLI to your GitHub account:
83
78
84
79
```bash
85
80
gh auth login
86
81
```
87
82
88
-
3. Create a New Repository
83
+
##Create a new repository
89
84
Create a new public repository for your demo project and clone it locally:
90
85
91
86
```console
92
87
gh repo create arm64-node-demo --public --clone
93
88
cd arm64-node-demo
94
89
```
95
90
96
-
###Create a Dockerfile
97
-
In the root of your project, create a file named `Dockerfile` to define how your `Node.js` application container will be built and executed.
91
+
## Create a Dockerfile
92
+
In the root of your project, create a file named `Dockerfile` to define how your `Node.js` application container will be built and executed:
98
93
99
94
```console
100
95
# Dockerfile
@@ -115,7 +110,7 @@ Breakdown of the Dockerfile:
115
110
116
111
Next, you’ll add the application code and a `.circleci/config.yml` file to automate the build and test pipeline using your self-hosted Arm64 runner.
117
112
118
-
###Add a CircleCI Configuration
113
+
## Add a CircleCI configuration
119
114
Create a configuration file that defines your CircleCI pipeline for building, running, and testing your Node.js app on Arm64 architecture.
120
115
In the root of your project, create a folder named `.circleci` and inside it, add a file called `config.yml` with the contents below:
121
116
@@ -164,7 +159,7 @@ Explanation of the yaml file:
164
159
- resource_class: Specify the resource class for the CircleCI runner (e.g., a custom Arm64 runner if using self-hosted).
165
160
- Test Endpoint: The job sends a request to the app to verify it’s working.
166
161
167
-
### Node.js Application
162
+
## Node.js application
168
163
Create the application files in your repository root directory for the Node.js app.
169
164
170
165
Use a file editor of your choice and copy the contents shown below into a file named `index.js`:
@@ -202,10 +197,9 @@ Now copy the content below into a file named `package.json`:
202
197
- Express Server: The application uses Express.js to handle HTTP requests and respond with a simple message.
203
198
- Package Dependencies: The app requires the `express` package for handling HTTP requests.
204
199
205
-
###Push Code to GitHub
200
+
## Push code to GitHub
206
201
207
-
Now that all project files (Dockerfile, index.js, package.json, and .circleci/config.yml) are ready, push the code to GitHub.
208
-
This allows CircleCI to automatically detect the repository and trigger your Arm64 build pipeline using the self-hosted runner.
202
+
Now that all project files (Dockerfile, index.js, package.json, and .circleci/config.yml) are ready, you can push the code to GitHub. This allows CircleCI to automatically detect the repository and trigger your Arm64 build pipeline using the self-hosted runner.
209
203
210
204
Configure Git username and add and commit project files:
211
205
@@ -217,7 +211,7 @@ git push -u origin main
217
211
```
218
212
You have pushed your code to the GitHub repository so that CircleCI can trigger the build.
219
213
220
-
###Start CircleCI Runner and Execute Job
214
+
## Start CircleCI runner and execute the job
221
215
Before triggering your first workflow, ensure that the CircleCI runner service is enabled and running on your SUSE Arm64 VM. This will allow your self-hosted runner to pick up jobs from CircleCI.
222
216
223
217
```bash
@@ -229,35 +223,47 @@ sudo systemctl status circleci-runner
229
223
- Start and Check Status: Starts the CircleCI runner and verifies it is running.
230
224
231
225
232
-
###Verify Job Execution in CircleCI
226
+
## Verify Job Execution in CircleCI
233
227
234
228
After pushing your code to GitHub, open your CircleCI Dashboard → Projects, and confirm that your Arm64 workflow starts running using your self-hosted runner.
235
229
236
230
If the setup is correct, you’ll see your job running under the resource class you created.
237
231
238
-
###Output
232
+
## Output
239
233
When the CircleCI workflow starts running on your self-hosted Arm64 runner, you’ll see the following stages executed in your CircleCI Dashboard:
240
234
241
235
1. Detect the ARM64 Architecture
242
236
CircleCI confirms the job is executing on your Arm64 self-hosted runner. This validates that the pipeline is correctly targeting your Google Cloud C4A (Axion) VM.
243
237
244
-

238
+

245
239
246
-
2. Build the Docker image
240
+
##Build the Docker image
247
241
The runner builds the `arm64-node-demo` Docker image using the Dockerfile you defined.

250
244
251
-
3. Runs a container from that Image
245
+
## Run a container from the image
252
246
Once the image is built, the job launches a container to host your Node.js web app.

255
249
256
-
4. Test the application by hitting the endpoint.
250
+
##Test the application by hitting the end point
257
251
The workflow tests the running app by sending an HTTP request to http://localhost:3000.
If the app responds successfully, the test confirms that the Node.js web server is running correctly inside the container.
252
+

253
+
254
+
If the app responds with the expected message, you know your Node.js web server is running correctly inside the container.
255
+
256
+
You should now see your CircleCI job running and the app deployed in the CircleCI Dashboard. This confirms your end-to-end CI/CD pipeline is working on SUSE Arm64 using a Google Cloud C4A (Axion) VM as a self-hosted runner.
257
+
258
+
## What you've accomplished and what's next
259
+
260
+
You have built, tested, and deployed a Node.js app using CircleCI on Arm64 in the cloud. This demonstrates a complete CI/CD workflow for cloud-native development on Arm platforms.
261
+
262
+
To investigate this area further, you can now:
260
263
261
-
If successful, you will see your CircleCI job running and the app deployed in the CircleCI Dashboard.
264
+
- Explore more advanced CircleCI features, such as parallel jobs, caching, and deployment workflows, to optimize your pipelines for Arm64
265
+
- Integrate automated testing frameworks to expand your test coverage and improve code quality
266
+
- Try deploying your containerized application to a managed Kubernetes service on Arm, such as Google Kubernetes Engine (GKE) with Arm nodes
267
+
- Review additional Learning Paths on Arm cloud development, containerization, and CI/CD best practices
262
268
263
-
This demonstrates an end-to-end cloud-native CI/CD workflow running natively on SUSE Arm64 with Google Cloud C4A (Axion) as a self-hosted runner on CircleCI.
269
+
You are ready to build scalable, cloud-native applications targeting Arm platforms using modern CI/CD workflows.
0 commit comments