Skip to content

Commit d545ced

Browse files
Merge pull request #2598 from ArmDeveloperEcosystem/main
Production update
2 parents 3e6c51a + 5d766e5 commit d545ced

File tree

8 files changed

+157
-118
lines changed

8 files changed

+157
-118
lines changed

.wordlist.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5260,4 +5260,5 @@ sSf
52605260
tcmalloc
52615261
tlsv
52625262
vLLM's
5263-
webp
5263+
webp
5264+
HugeTLB

content/learning-paths/servers-and-cloud-computing/circleci-gcp/_index.md

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
---
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
73

84
minutes_to_complete: 45
95

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.
117

128
learning_objectives:
139
- Provision a SUSE Arm64 virtual machine on Google Cloud (C4A with Axion processors)

content/learning-paths/servers-and-cloud-computing/circleci-gcp/background.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
---
2-
title: Getting started with CircleCI on Google Axion C4A (Arm Neoverse-V2)
2+
title: Get started with CircleCI on Google Axion C4A
33

44
weight: 2
55

66
layout: "learningpathall"
77
---
88

9-
## Google Axion C4A Arm instances in Google Cloud
9+
## Explore Google Axion C4A
1010

1111
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.
1212

1313
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.
1414

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).
1616

17-
## CircleCI
17+
## Learn about CircleCI for Arm-based CI/CD workflows
1818

1919
CircleCI is a cloud-based Continuous Integration and Continuous Delivery (CI/CD) platform that automates the process of building, testing, and deploying software.
2020

content/learning-paths/servers-and-cloud-computing/circleci-gcp/circleci-arm64-cloud-demo.md

Lines changed: 47 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,36 @@
11
---
2-
title: CircleCI Arm64 Cloud-Native Demo
2+
title: Build and test an Arm64 Node.js app using CircleCI
33
weight: 8
44

55
### FIXED, DO NOT MODIFY
66
layout: learningpathall
77
---
88

9-
## Deploying a Cloud-Native Arm64 Node.js App Using a Self-Hosted CircleCI Runner on GCP
9+
## Overview
1010

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.
1212

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.
1413

15-
16-
### Install and Configure Docker
14+
## Install and configure Docker
1715
Ensure Docker is installed, enabled, and accessible by both your local user and the CircleCI runner service.
1816

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+
2119
```bash
2220
sudo zypper refresh
2321
sudo zypper install docker
2422
```
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:
2724
```bash
2825
sudo systemctl enable docker
2926
sudo systemctl start docker
3027
sudo systemctl status docker
3128
```
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:
3430
```bash
3531
sudo usermod -aG docker $USER
3632
sudo usermod -aG docker circleci
3733
```
38-
### Validate Docker access
3934
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.
4035

4136
Run the following commands:
@@ -45,8 +40,8 @@ docker ps
4540
exit
4641
```
4742

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:
5045

5146
```bash
5247
ls -l /var/run/docker.sock
@@ -56,7 +51,7 @@ These commands ensure that the Docker socket is accessible and the CircleCI runn
5651

5752
Once both checks pass, your environment is ready to build and run container-based pipelines with CircleCI on SUSE Arm64.
5853

59-
### Install Node.js and npm
54+
## Install Node.js and npm
6055

6156
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.
6257

@@ -69,32 +64,32 @@ sudo zypper install npm
6964
```
7065
Next, you’ll create the demo project and prepare its CircleCI configuration to run jobs using your self-hosted Arm64 runner.
7166

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.
7469

75-
1. Install the GitHub CLI
70+
## Install the GitHub CLI
7671
The GitHub CLI (gh) lets you manage repositories, issues, and pull requests directly from your terminal.
7772

7873
```bash
7974
sudo zypper install -y gh
8075
```
81-
2. Authenticate with GitHub
76+
## Authenticate with GitHub
8277
Run the following command to connect the CLI to your GitHub account:
8378

8479
```bash
8580
gh auth login
8681
```
8782

88-
3. Create a New Repository
83+
## Create a new repository
8984
Create a new public repository for your demo project and clone it locally:
9085

9186
```console
9287
gh repo create arm64-node-demo --public --clone
9388
cd arm64-node-demo
9489
```
9590

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:
9893

9994
```console
10095
# Dockerfile
@@ -115,7 +110,7 @@ Breakdown of the Dockerfile:
115110

116111
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.
117112

118-
### Add a CircleCI Configuration
113+
## Add a CircleCI configuration
119114
Create a configuration file that defines your CircleCI pipeline for building, running, and testing your Node.js app on Arm64 architecture.
120115
In the root of your project, create a folder named `.circleci` and inside it, add a file called `config.yml` with the contents below:
121116

@@ -164,7 +159,7 @@ Explanation of the yaml file:
164159
- resource_class: Specify the resource class for the CircleCI runner (e.g., a custom Arm64 runner if using self-hosted).
165160
- Test Endpoint: The job sends a request to the app to verify it’s working.
166161
167-
### Node.js Application
162+
## Node.js application
168163
Create the application files in your repository root directory for the Node.js app.
169164
170165
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`:
202197
- Express Server: The application uses Express.js to handle HTTP requests and respond with a simple message.
203198
- Package Dependencies: The app requires the `express` package for handling HTTP requests.
204199

205-
### Push Code to GitHub
200+
## Push code to GitHub
206201

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.
209203

210204
Configure Git username and add and commit project files:
211205

@@ -217,7 +211,7 @@ git push -u origin main
217211
```
218212
You have pushed your code to the GitHub repository so that CircleCI can trigger the build.
219213

220-
### Start CircleCI Runner and Execute Job
214+
## Start CircleCI runner and execute the job
221215
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.
222216

223217
```bash
@@ -229,35 +223,47 @@ sudo systemctl status circleci-runner
229223
- Start and Check Status: Starts the CircleCI runner and verifies it is running.
230224

231225

232-
### Verify Job Execution in CircleCI
226+
## Verify Job Execution in CircleCI
233227

234228
After pushing your code to GitHub, open your CircleCI Dashboard → Projects, and confirm that your Arm64 workflow starts running using your self-hosted runner.
235229

236230
If the setup is correct, you’ll see your job running under the resource class you created.
237231

238-
### Output
232+
## Output
239233
When the CircleCI workflow starts running on your self-hosted Arm64 runner, you’ll see the following stages executed in your CircleCI Dashboard:
240234

241235
1. Detect the ARM64 Architecture
242236
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.
243237

244-
![CircleCI Dashboard alt-text#center](images/output1.png "Figure 1: Show architecture")
238+
![CircleCI dashboard showing successful detection of ARM64 architecture. The main panel displays a terminal output with the message Detected architecture: aarch64 and a green checkmark indicating Running on ARM64 architecture. The interface includes navigation menus and job status indicators, conveying a positive and successful workflow execution environment. alt-text#center](images/output1.png "Show architecture")
245239

246-
2. Build the Docker image
240+
## Build the Docker image
247241
The runner builds the `arm64-node-demo` Docker image using the Dockerfile you defined.
248242

249-
![CircleCI Dashboard alt-text#center](images/output2.png "Figure 2: Docker Image")
243+
![CircleCI dashboard displaying the Docker image build stage. The main panel shows terminal output with the command docker build -t arm64-node-demo and progress logs indicating successful build steps. The interface includes navigation menus, job status indicators, and a green checkmark signaling a successful build. The environment appears organized and professional, conveying a sense of accomplishment and progress in the workflow. alt-text#center](images/output2.png "Docker Image")
250244

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

254-
![CircleCI Dashboard alt-text#center](images/output4.png "Figure 3: Container Run")
248+
![CircleCI dashboard showing the container run stage. The main panel displays terminal output with the command docker run -d -p 3000:3000 arm64-node-demo and status messages confirming the container is running. The interface includes navigation menus, job status indicators, and a green checkmark indicating successful execution. The environment appears organized and professional, conveying a sense of progress and accomplishment. alt-text#center](images/output4.png "Container Run")
255249

256-
4. Test the application by hitting the endpoint.
250+
## Test the application by hitting the end point
257251
The workflow tests the running app by sending an HTTP request to http://localhost:3000.
258-
![CircleCI Dashboard alt-text#center](images/output3.png "Figure 3: Verify App")
259-
If the app responds successfully, the test confirms that the Node.js web server is running correctly inside the container.
252+
![CircleCI dashboard displaying the application endpoint test stage. The main panel shows terminal output with the command curl http://localhost:3000 and the response Hello from ARM64 Node.js app followed by a rocket emoji. The interface includes navigation menus, job status indicators, and a green checkmark indicating successful execution. The environment feels positive and organized, highlighting a successful application test within the workflow. alt-text#center](images/output3.png "Verify App")
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:
260263

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
262268

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

Comments
 (0)