Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,17 +1,13 @@
---
title: CircleCI Arm Native Workflows on AWS Graviton2 (EC2)
title: Deploy CircleCI Arm Native Workflows on AWS EC2 Graviton2

minutes_to_complete: 45

draft: true
cascade:
draft: true

who_is_this_for: This learning path is intended for software developers and DevOps engineers looking to set up and run CircleCI Arm native workflows on Linux Arm64 VMs, specifically on AWS EC2 Graviton2 instances (Neoverse N1), using self-hosted runners.
who_is_this_for: This is an introductory topic for developers and DevOps engineers who want to set up and run CircleCI Arm native workflows on Linux Arm64 virtual machines. You'll use AWS EC2 Graviton2 instances (Neoverse N1) and self-hosted runners.

learning_objectives:
- Provision an AWS EC2 Graviton2 Arm64 virtual machine
- Install and configure CircleCI self-hosted machine runners on Arm64
- Install and configure a CircleCI self-hosted machine runners on Arm64
- Verify the runner by running a simple workflow and test computation
- Define and execute CircleCI job using a machine executor
- Check CPU architecture and execute a basic script to confirm if the runner is operational
Expand Down
Original file line number Diff line number Diff line change
@@ -1,27 +1,28 @@
---
title: Getting Started with CircleCI on AWS Graviton2 (Arm Neoverse-N1)
title: Get Started with CircleCI on AWS Graviton2

weight: 2

layout: "learningpathall"
---

## AWS Graviton2 Arm instances on Amazon EC2

## AWS Graviton2 Arm Instances on Amazon EC2

**AWS Graviton2** is a family of Arm-based processors designed by AWS and built on **Arm Neoverse-N1 cores**. These instances deliver exceptional price-to-performance efficiency, making them ideal for compute-intensive workloads such as CI/CD pipelines, microservices, containerized applications, and data processing tasks.
AWS Graviton2 is a family of Arm-based processors designed by AWS and built on Arm Neoverse-N1 cores. These instances deliver exceptional price-to-performance efficiency, making them ideal for compute-intensive workloads such as CI/CD pipelines, microservices, containerized applications, and data processing tasks.

Graviton2-powered EC2 instances provide high performance and energy efficiency compared to traditional x86-based instances while maintaining compatibility with popular Linux distributions and open-source software stacks.

To learn more about AWS Graviton processors, refer to the [AWS Graviton2 Processor Overview](https://aws.amazon.com/ec2/graviton/).
To learn more about AWS Graviton processors, see the [AWS Graviton2 Processor Overview](https://aws.amazon.com/ec2/graviton/).

## CircleCI

**CircleCI** is a leading cloud-based **Continuous Integration and Continuous Delivery (CI/CD)** platform that automates the **building, testing, and deployment** of software projects.
CircleCI is a leading cloud-based Continuous Integration and Continuous Delivery (CI/CD) platform that automates the building, testing, and deployment of software projects.

It seamlessly integrates with popular version control systems such as GitHub, Bitbucket, and GitLab, allowing developers to define automation workflows through a `.circleci/config.yml` file written in YAML syntax.

CircleCI supports multiple execution environments, including Docker, Linux, macOS, and Windows, while providing advanced capabilities like parallel job execution, build caching, and matrix builds for optimized performance.

It seamlessly integrates with popular version control systems such as **GitHub**, **Bitbucket**, and **GitLab**, allowing developers to define automation workflows through a `.circleci/config.yml` file written in **YAML syntax**.
It is widely adopted by development teams to accelerate build cycles, enforce code quality, automate testing, and streamline application delivery.

CircleCI supports multiple execution environments, including **Docker**, **Linux**, **macOS**, and **Windows**, while providing advanced capabilities like **parallel job execution**, **build caching**, and **matrix builds** for optimized performance.
To learn more, visit the [CircleCI website](https://circleci.com/) and the [CircleCI documentation](https://circleci.com/docs/).

It is widely adopted by development teams to **accelerate build cycles, enforce code quality, automate testing, and streamline application delivery**.
To learn more, visit the [official CircleCI website](https://circleci.com/) and explore its [documentation](https://circleci.com/docs/).
Original file line number Diff line number Diff line change
@@ -1,20 +1,18 @@
---
title: Install CircleCI Machine Runner on AWS Graviton2
title: Install CircleCI machine runner on AWS Graviton2
weight: 6

### FIXED, DO NOT MODIFY
layout: learningpathall
---

## Install CircleCI Machine Runner on AWS Graviton2
## Install CircleCI machine runner on AWS Graviton2

This guide provides step-by-step instructions to install and configure the **CircleCI Machine Runner** on an **AWS Graviton2 (Neoverse N1) instance**.
With this setup, your self-hosted **Arm64 environment** can efficiently execute CircleCI jobs directly on the Graviton2 architecture, enabling faster builds and improved performance for ARM-based workloads.
This Learning Path shows you how to install and configure the CircleCI Machine Runner on an AWS Graviton2 (Neoverse N1) instance. With this setup, your self-hosted Arm64 environment can efficiently execute CircleCI jobs directly on the Graviton2 architecture, enabling faster builds and improved performance for Arm-based workloads.


### Add CircleCI Package Repository
For **Debian/Ubuntu-based systems** running on **AWS Graviton2 (Arm64)**, first add the official CircleCI repository.
This ensures you can install the CircleCI Runner package directly using `apt`.
## Add the CircleCI package repository
For Debian/Ubuntu-based systems running on AWS Graviton2 (Arm64), first add the official CircleCI repository. This ensures you can install the CircleCI Runner package directly using `apt`:

```console
curl -s https://packagecloud.io/install/repositories/circleci/runner/script.deb.sh?any=true | sudo bash
Expand All @@ -24,8 +22,8 @@ curl -s https://packagecloud.io/install/repositories/circleci/runner/script.deb.
- It configures the repository on your system, allowing `apt` to fetch and install the CircleCI runner package.
- After successful execution, the CircleCI repository will be added under `/etc/apt/sources.list.d/`.

### Configure the Runner Token
- Each self-hosted runner requires a unique authentication token generated from your Resource Class in the CircleCI Dashboard.
## Configure the runner token
- Each self-hosted runner requires a unique authentication token generated from your resource class in the CircleCI dashboard.
- Copy the token from the CircleCI web interface.
- Export the token as an environment variable and update the runner configuration file as shown:

Expand All @@ -34,25 +32,24 @@ export RUNNER_AUTH_TOKEN="YOUR_AUTH_TOKEN"
sudo sed -i "s/<< AUTH_TOKEN >>/$RUNNER_AUTH_TOKEN/g" /etc/circleci-runner/circleci-runner-config.yaml
```

### Install the CircleCI Runner
Install the pre-built CircleCI runner package:
## Install the CircleCI runner
To install the CircleCI runner, use the following command:

```console
sudo apt-get install -y circleci-runner
```

- Installs the latest CircleCI Machine Runner compatible with your Arm64 instance.
- Runner binary and configuration files are located in `/usr/bin/` and `/etc/circleci-runner/`.

### Configure the Runner Authentication Token
Update the CircleCI runner configuration with your authentication token. This token is generated from the Resource Class you created in the CircleCI Dashboard.
This command installs the latest CircleCI Machine Runner for your Arm64 system. The runner program is placed in `/usr/bin/`, and its configuration files are stored in `/etc/circleci-runner/`.

## Configure the runner authentication token
Update the CircleCI runner configuration with your authentication token. This token is generated from the resource class you created in the CircleCI Dashboard.

```console
export RUNNER_AUTH_TOKEN="YOUR_AUTH_TOKEN"
sudo sed -i "s/<< AUTH_TOKEN >>/$RUNNER_AUTH_TOKEN/g" /etc/circleci-runner/circleci-runner-config.yaml
```

### Enable and Start the CircleCI Runner
## Enable and start the CircleCI runner
Set the CircleCI runner service to start automatically and verify it is running:

```console
Expand Down Expand Up @@ -88,6 +85,6 @@ Oct 17 06:19:13 ip-172-31-34-224 circleci-runner[2226]: 06:19:13 c34c1 22.514ms

This confirms that the CircleCI Runner is actively connected to your CircleCI account and ready to accept jobs.

Also, you can verify it from the dashboard:
You can also verify it from the dashboard:

![Self-Hosted Runners alt-text#center](images/runner.png "Figure 1: Self-Hosted Runners ")
![Diagram showing the CircleCI self-hosted runner architecture. The main subject is an AWS Graviton2 server labeled as a self-hosted runner, connected to the CircleCI cloud platform. Arrows indicate job requests flowing from CircleCI to the runner and job results returning to CircleCI. The environment includes icons for cloud infrastructure and developer workstations. The tone is technical and informative. Any visible text in the image is transcribed as: Self-Hosted Runners. alt-text#center](images/runner.png "Self-Hosted Runners ")
Original file line number Diff line number Diff line change
Expand Up @@ -6,29 +6,29 @@ weight: 4
layout: learningpathall
---

## Install CircleCI CLI on AWS Graviton2 (Neoverse N1) Instance
This guide explains installing the **CircleCI Command Line Interface (CLI)** on an **AWS Graviton2 (Neoverse N1) Arm64 EC2 instance**.
The CLI enables you to interact with CircleCI directly from your terminal — for validating configuration files, managing pipelines, and operating self-hosted runners on your EC2 instance.
## Install CircleCI CLI on AWS Graviton2 (Neoverse N1) instance
This section walks you through how to install the CircleCI command line interface (CLI) on an AWS Graviton2 (Neoverse N1) Arm64 EC2 instance.
With the CLI, you can work with CircleCI from your terminal to check configuration files, manage pipelines, and run self-hosted runners on your EC2 instance.

### Install Required Packages
Before installing the CircleCI CLI, ensure your system has the necessary tools for downloading and extracting files.
## Install the required packages
Before installing the CircleCI CLI, ensure your system has the necessary tools for downloading and extracting files:

```console
sudo apt update && sudo apt install -y curl tar gzip coreutils gpg git
```
### Download and Extract the CircleCI CLI
## Download and extract the CircleCI CLI

Next, download the CircleCI CLI binary for **Linux arm64** and extract it.
Next, download the CircleCI CLI binary for Linux arm64 and extract it:

```console
curl -fLSs https://github.com/CircleCI-Public/circleci-cli/releases/download/v0.1.33494/circleci-cli_0.1.33494_linux_arm64.tar.gz | tar xz
sudo mv circleci-cli_0.1.33494_linux_arm64/circleci /usr/local/bin/
```
- The `curl` command fetches the official **CircleCI CLI archive** from GitHub.
- The `curl` command fetches the official CircleCI CLI archive from GitHub.
- The `| tar xz` command extracts the compressed binary in a single step.
- After extraction, a new folder named **`circleci-cli_0.1.33494_linux_arm64`** appears in your current directory.

### Verify the Installation
## Verify the installation

To ensure that the CLI is installed successfully, check its version:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,31 +8,30 @@ layout: learningpathall

## Overview

In this section, you will learn how to provision an **AWS Graviton2 Arm64 EC2 instance** on **Amazon Web Services (AWS)** using the **m6g.xlarge** instance type (2 vCPUs, 8 GB memory) in the **AWS Management Console**.
In this section, you'll learn how to provision an AWS Graviton2 Arm64 EC2 instance on Amazon Web Services (AWS) using the m6g.xlarge instance type (2 vCPUs, 8 GB memory) in the AWS Management Console.

{{% notice Note %}}
For support on AWS setup, see the Learning Path [Getting started with AWS](https://learn.arm.com/learning-paths/servers-and-cloud-computing/csp/aws/).
{{% /notice %}}

## Provision an AWS EC2 Arm64 Graviton2 Instance in the AWS Management Console
## Provision the instance in the AWS Management Console

To create a virtual machine based on the AWS Graviton2 Instance type:
To create a virtual machine based on the AWS Graviton2 Instance type, follow these steps:
- Navigate to the [AWS Management Console](https://aws.amazon.com/console/).
- Go to **EC2 > Instances** and select **Launch Instance**.
- Under **Instance configuration**:
- Enter an appropriate **Instance name**.
- Choose an **Amazon Machine Image (AMI)** such as **Ubuntu 24.04 ARM64**.
- Enter an appropriate **Instance name**.
- Choose an **Amazon Machine Image (AMI)** such as **Ubuntu 24.04 ARM64**.

![AWS Management Console alt-text#center](images/aws1.png "Figure 1: Amazon Machine Image (AMI)")

![AWS Management Console showing the Amazon Machine Image selection screen with Ubuntu 24.04 ARM64 highlighted. The interface displays a list of available AMIs, each with details such as name, architecture, and description. The wider environment includes navigation menus on the left and a search bar at the top. The mood is neutral and instructional, focused on guiding users through selecting an appropriate AMI. Visible text includes Amazon Machine Image, Ubuntu 24.04 ARM64, and related AMI details. alt-text#center](images/aws1.png "Amazon Machine Image (AMI)")
- Under **Instance type**, select a Graviton2-based type `m6g.xlarge`.

![AWS Management Console alt-text#center](images/aws2.png "Figure 2: Instance type")
![AWS Management Console displaying the instance type selection screen with m6g.xlarge highlighted. The primary subject is the list of available EC2 instance types, each showing details such as name, vCPUs, memory, and architecture. The m6g.xlarge row is selected, indicating 2 vCPUs and 8 GB memory, with Arm64 architecture. The wider environment includes navigation menus on the left and a search bar at the top. Visible text includes Instance type, m6g.xlarge, vCPUs, Memory, and Arm64. The tone is neutral and instructional, guiding users to select the correct instance type. #alt-text#center](images/aws2.png "Instance type")

- Configure your **Key pair (login)** by either creating a new key pair or selecting an existing one to securely access your instance.
- In **Network settings**, ensure that **Allow HTTP traffic from the internet** and **Allow HTTPS traffic from the internet** are checked.

![AWS Management Console alt-text#center](images/aws3.png "Figure 3: Network settings")
![AWS Management Console showing the Network settings configuration screen for launching an EC2 instance. The primary subject is the Network settings panel, where the options Allow HTTP traffic from the internet and Allow HTTPS traffic from the internet are both checked. The wider environment includes navigation menus on the left and a summary of instance configuration steps at the top. Visible text includes Network settings, Allow HTTP traffic from the internet, and Allow HTTPS traffic from the internet. The tone is neutral and instructional, guiding users to enable the correct network access for their instance. #alt-text#center](images/aws3.png "Network settings")

- Adjust **Storage** settings as needed — for most setups, 30 GB of gp3 (SSD) storage is sufficient.
- Click **Launch Instance** to create your EC2 virtual machine.
- Adjust the Storage settings. For most use cases, 30 GB of gp3 (SSD) storage is enough.
- Select **Launch Instance** to create your EC2 virtual machine.
Loading