Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
1790609
newLP
parichaydas Oct 4, 2025
88e8020
newLPlan
parichaydas Oct 4, 2025
b5b4131
newLPlanv1
parichaydas Oct 16, 2025
74bd716
Build a Simple CI/CD pipeline with GitLab-Hosted Runners Learning Pat…
mohamed-ismail99 Nov 20, 2025
c68bbce
Merge branch 'main' of https://github.com/mohamed-ismail99/arm-learni…
mohamed-ismail99 Nov 20, 2025
f5e24a7
Deploy Gardener on Google Cloud C4A (Arm-based Axion VMs)
odidev Nov 26, 2025
ca5a4c6
Set draft status for GitLab-Managed Runners page
pareenaverma Dec 1, 2025
df48353
Refactor documentation for Zephyr Workbench, enhancing clarity and co…
madeline-underwood Dec 1, 2025
ba8386e
Update Zephyr VSWorkBench learning path
madeline-underwood Dec 2, 2025
52d2727
Merge branch 'ArmDeveloperEcosystem:main' into FTLLM_New
parichaydas Dec 2, 2025
ed23353
Refactor Zephyr Workbench documentation for clarity and consistency a…
madeline-underwood Dec 2, 2025
7a3c92c
Fix note formatting
madeline-underwood Dec 2, 2025
6bb95fa
Merge branch 'main' into zephyr
madeline-underwood Dec 2, 2025
3569e75
Merge pull request #2607 from madeline-underwood/zephyr
jasonrandrews Dec 2, 2025
f0b0189
Merge pull request #2567 from mohamed-ismail99/main
pareenaverma Dec 2, 2025
4aef326
Merge pull request #2589 from odidev/gardener_LP
jasonrandrews Dec 2, 2025
7c08151
Gardener on GCP starting tech review
jasonrandrews Dec 2, 2025
2f616c8
Merge pull request #2609 from jasonrandrews/review
jasonrandrews Dec 2, 2025
e7d7527
Renamed the files in the gitlab runners LP to be lowercase
pareenaverma Dec 2, 2025
d37f57a
Merge pull request #2610 from pareenaverma/content_review
pareenaverma Dec 2, 2025
e47091a
remove backticks in heading causing very small font
jasonrandrews Dec 2, 2025
7e14df9
Merge pull request #2611 from jasonrandrews/review
jasonrandrews Dec 2, 2025
21e54e6
remove backticks in heading causing very small font
jasonrandrews Dec 2, 2025
01d9fc7
Merge pull request #2612 from jasonrandrews/review
jasonrandrews Dec 2, 2025
fe0def2
images renamed
pareenaverma Dec 3, 2025
438cbab
Merge pull request #2613 from pareenaverma/content_review
pareenaverma Dec 3, 2025
0eec335
updates for the gardener techreview
DougAnsonAustinTX Dec 4, 2025
fcebbd7
Merge pull request #2617 from DougAnsonAustinTX/Garnder_on_GCP_LP_Tec…
jasonrandrews Dec 4, 2025
ca2df1d
Remove prerequisites and author information from Puppet on GCP docume…
madeline-underwood Dec 4, 2025
da6fc4f
Refine Puppet documentation for Google Cloud C4A: update titles, enha…
madeline-underwood Dec 4, 2025
992a223
Update draft status and cascade settings in index.md
pareenaverma Dec 4, 2025
613fc03
Merge pull request #2395 from parichaydas/FTLLM_New
pareenaverma Dec 4, 2025
885f309
Enhance Puppet on GCP documentation: add a summary of accomplishments…
madeline-underwood Dec 5, 2025
9b86fca
Update Puppet documentation for GCP: enhance titles, improve clarity,…
madeline-underwood Dec 5, 2025
05c075a
Refactor CircleCI documentation for AWS Graviton2: update titles for …
madeline-underwood Dec 5, 2025
0d48406
Merge pull request #2619 from madeline-underwood/puppet
jasonrandrews Dec 5, 2025
f7997e8
Merge pull request #2620 from madeline-underwood/circle_ci
jasonrandrews Dec 5, 2025
c504313
spelling and tag updates
jasonrandrews Dec 5, 2025
2587aa9
Merge pull request #2621 from jasonrandrews/review
jasonrandrews Dec 5, 2025
1257966
Add CircleCI account to the prereqs for the Learning Path
jasonrandrews Dec 5, 2025
d3dc5f5
Merge pull request #2622 from jasonrandrews/review
jasonrandrews Dec 5, 2025
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
29 changes: 28 additions & 1 deletion .wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5261,4 +5261,31 @@ tcmalloc
tlsv
vLLM's
webp
HugeTLB
HugeTLB
CIS
CRDs
ClusterIP
CoreDNS
DskipTests
Gtilab
KinD
Kubeconfig
Kubelet
Loopback
NetworkPolicies
StandaloneSessionClusterEntrypoint
TaskManagerRunner
Textfield
aquasecurity
dumpsys
hiredis
jemalloc
kubeconfig
kubelet
leaderboards
loopback
menuconfig
oss
saas
todo
yq
2 changes: 1 addition & 1 deletion content/install-guides/windows-perf-wpa-plugin.md
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ wpa -addsearchdir %USERPROFILE%\Downloads\wpa-plugin-1.0.3

Set the `WPA_ADDITIONAL_SEARCH_DIRECTORIES` environment variable to the location of the `.dll` file.

##### Option 3: Copy the `.dll` file to the `CustomDataSources` directory next to the WPA executable.
##### Option 3: Copy the DLL to the CustomDataSources directory next to the WPA executable.

The default location is:
`C:\\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\CustomDataSources`
Expand Down
8 changes: 4 additions & 4 deletions content/learning-paths/cross-platform/adler32/summary-10.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,13 +47,13 @@ The project includes:

### Implementations

#### 1. Simple Implementation (`adler32-simple.c`)
#### 1. Simple Implementation

This is a straightforward C implementation following the standard Adler-32 algorithm definition. It processes the input data byte by byte, updating two 16-bit accumulators (`a` and `b`) modulo 65521 (the largest prime smaller than 2^16).
The code in `adler32-simple.c` is a straightforward C implementation following the standard Adler-32 algorithm definition. It processes the input data byte by byte, updating two 16-bit accumulators (`a` and `b`) modulo 65521 (the largest prime smaller than 2^16).

#### 2. NEON-Optimized Implementation (`adler32-neon.c`)
#### 2. NEON-Optimized Implementation

This implementation leverages ARM NEON SIMD (Single Instruction, Multiple Data) instructions to accelerate the checksum calculation. Key aspects include:
The code in `adler32-neon.c` leverages ARM NEON SIMD (Single Instruction, Multiple Data) instructions to accelerate the checksum calculation. Key aspects include:
* Processing data in blocks (16 bytes at a time).
* Using NEON intrinsics (`vld1q_u8`, `vmovl_u8`, `vaddq_u16`, `vpaddlq_u16`, `vmulq_u16`, etc.) to perform parallel operations on data vectors.
* Calculating the sums `S1` (sum of bytes) and `S2` (weighted sum) for each block using vector operations.
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
---
title: Build a Simple CI/CD pipeline with GitLab-Hosted Runners

draft: true
cascade:
draft: true

minutes_to_complete: 30

who_is_this_for: This is an Introductory topic for DevOps professionals who are looking to build a CI/CD pipeline with GitLab on Google Axion using GitLab-Hosted runners.

learning_objectives:
- Create a GitLab Project
- Understand basic pipeline script structure and how to use it
- Build and test a simple CI/CD pipeline Using Gitlab-hosted runners


prerequisites:
- A valid GitLab account

author: Mohamed Ismail

### Tags
skilllevels: Introductory
subjects: CI-CD
cloud_service_providers: Google Cloud

armips:
- Neoverse

tools_software_languages:
- GitLab

operatingsystems:
- Linux

### Cross-platform metadata only
shared_path: true
shared_between:
- servers-and-cloud-computing
- laptops-and-desktops
- embedded-and-microcontrollers

further_reading:
- resource:
title: GitLab-hosted runners
link: https://docs.gitlab.com/ci/runners/hosted_runners/
type: documentation



### FIXED, DO NOT MODIFY
# ================================================================================
weight: 1 # _index.md always has weight of 1 to order correctly
layout: "learningpathall" # All files under learning paths have this same wrapper
learning_path_main_page: "yes" # This should be surfaced when looking for related content. Only set for _index.md of learning path content.
---
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
# ================================================================================
# FIXED, DO NOT MODIFY THIS FILE
# ================================================================================
weight: 100 # Set to always be larger than the content in this path to be at the end of the navigation.
title: "Next Steps" # Always the same, html page title.
layout: "learningpathall" # All files under learning paths have this same wrapper for Hugo processing.
---
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
---
title: "Important Information"
weight: 5

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

## What is a GitLab runner?
A GitLab Runner works with GitLab CI/CD to run jobs in a pipeline. It acts as an agent and executes the jobs you define in your GitLab CI/CD configuration. Some key points to note about GitLab Runner:

1. GitLab offers multiple types of runners - You can use GitLab-hosted runners, self-managed runners, or a combination of both. GitLab manages GitLab-hosted runners, while you install and manage self-managed runners on your own infrastructure.

2. Each runner is configured as an Executor - When you register a runner, you choose an executor, which determines the environment in which the job runs. Executors can be Docker, Shell, Kubernetes, etc.

3. Multi-architecture support: GitLab runners support multiple architectures including - **`x86/amd64`** and **`arm64`**.

## What is Google Axion?
Axion is Google's first Arm-based server processor, built using the Armv9 Neoverse V2 CPU. The VM instances are part of the **`C4A`** family of compute instances. To learn more about Google Axion refer to this [page](http://cloud.google.com/products/axion/) .

{{% notice Note %}}
All The information provided in the next section are from GitLab official Pages and it's provided here for convenience and can be changed by Gitlab at anytime. Please refer to the [Gitlab Documentation](https://docs.gitlab.com/ci/runners/hosted_runners/) for more details and for the latest updates.
{{% /notice %}}

## GitLab-Hosted Runners Facts

1. Each of your jobs runs in a newly provisioned VM, which is dedicated to the specific job.

2. The storage is shared by the operating system, the container image with pre-installed software, and a copy of your cloned repository. This means that the available free disk space for your jobs to use is reduced.

3. Untagged jobs run on the **`small`** Linux x86-64 runner.

4. Jobs handled by hosted runners on GitLab.com time out after 3 hours, regardless of the timeout configured in a project.

5. The virtual machine where your job runs has **`sudo`** access with no password.

6. Firewall rules only allow outbound communication from the ephemeral VM to the public internet.

7. Inbound communication from the public internet to the ephemeral VM is not allowed.

8. Firewall rules do not permit communication between VMs.

9. The only internal communication allowed to the ephemeral VMs is from the runner manager.

10. Ephemeral runner VMs serve a single job and are deleted right after the job execution.

11. In addition to isolating runners on the network, each ephemeral runner VM only serves a single job and is deleted straight after the job execution. In the following example, three jobs are executed in a project’s pipeline. Each of these jobs runs in a dedicated ephemeral VM.

12. GitLab sends the command to remove the ephemeral runner VM to the Google Compute API immediately after the CI job completes. The [Google Compute Engine hypervisor](https://cloud.google.com/blog/products/gcp/7-ways-we-harden-our-kvm-hypervisor-at-google-cloud-security-in-plaintext) takes over the task of securely deleting the virtual machine and associated data.

13. The hosted runners share a distributed cache stored in a Google Cloud Storage (GCS) bucket. Cache contents not updated in the last 14 days are automatically removed, based on the [object lifecycle management policy](https://cloud.google.com/storage/docs/lifecycle). The maximum size of an uploaded cache artifact can be 5 GB after the cache becomes a compressed archive.
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
---
title: "Create and Test a New Simple CI/CD Pipeline"
weight: 15

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

## How to Create a CI/CD Pipeline with Gitlab-hosted Runners?

To create the pipeline we only need to create a new **`.gitlab-ci.yml`** file in our Project and define it's stages. Nothing else is needed since Gtilab-hosted runners are readily avilable to any Project and doesn't need to be created or instantiated by the Gitlab users.

Once we run our pipeline with the correct **`tags`** Gitlab will create everything that we need and yep it is as simple as that.

## How to Create .gitlab-ci.yml file in a Gitlab Project?

1. Start by going to the main project page where we will need to Create the CI/CD pipeline.

2. We can choose to create **`.gitlab-ci.yml`** file by using one of the 2 options circled in red in the image below.
![CI-CD-New #center](_images/ci-cd-new.png)

Option1: We can Click on **`Set up CI/CD`** button/link and follow the wizad to create an empty **`.gitlab-ci.yml`** file.

Option2: Click on the "+" button. From the popup menu click on **`New File`** option and name the file **`.gitlab-ci.yml`** and then click on **`Commit Changes`** button on the top right hand side like in the image below (Add any message as your commit message).
![New-YML #center](_images/new-yml.png)

3. A page like the one in the image below will be visible with our **`.gitlab-ci.yml`** file. From here, we will need to Click on the **`Edit`** button. A menu will pop up, We will click on **`Edit in pipeline Editor`** which will allow us to add our CD/CD script.
![Editor-YML #center](_images/editor-yml.png)

4. In the pipeline editor, just copy and paste the following YML script and click on commit changes (Add any relevent message as your commit update message).
```YML
# This file is a template, and might need editing before it works on your project.
# This is a sample GitLab CI/CD configuration file that should run without any modifications.
# It demonstrates a basic 3 stage CI/CD pipeline. Instead of real tests or scripts,
# it uses echo commands to simulate the pipeline execution.
#
# A pipeline is composed of independent jobs that run scripts, grouped into stages.
# Stages run in sequential order, but jobs within stages run in parallel.
#
# For more information, see: https://docs.gitlab.com/ee/ci/yaml/#stages
#
# You can copy and paste this template into a new `.gitlab-ci.yml` file.
# You should not add this template to an existing `.gitlab-ci.yml` file by using the `include:` keyword.
#
# To contribute improvements to CI/CD templates, please follow the Development guide at:
# https://docs.gitlab.com/development/cicd/templates/
# This specific template is located at:
# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Getting-Started.gitlab-ci.yml

stages: # List of stages for jobs, and their order of execution
- build
- test
- deploy

build-job: # This job runs in the build stage, which runs first.
stage: build
tags:
- saas-linux-small-arm64 #Instruct Gitlab to use it's own Hosted runners that use Linux on Arm64 instance of size small.
script:
- echo "Compiling the code..."
- echo "Compile complete."

unit-test-job: # This job runs in the test stage.
stage: test # It only starts when the job in the build stage completes successfully.
tags:
- saas-linux-small-arm64 #Instruct Gitlab to use it's own Hosted runners that use Linux on Arm64 instance of size small.
script:
- echo "Running unit tests... This will take about 60 seconds."
- sleep 60
- echo "Code coverage is 90%"

lint-test-job: # This job also runs in the test stage.
stage: test # It can run at the same time as unit-test-job (in parallel).
tags:
- saas-linux-small-arm64 #Instruct Gitlab to use it's own Hosted runners that use Linux on Arm64 instance of size small.
script:
- echo "Linting code... This will take about 10 seconds."
- sleep 10
- echo "No lint issues found."

deploy-job: # This job runs in the deploy stage.
stage: deploy # It only runs when *both* jobs in the test stage complete successfully.
tags:
- saas-linux-small-arm64 #Instruct Gitlab to use it's own Hosted runners that use Linux on Arm64 instance of size small.
environment: production
script:
- echo "Deploying application..."
- echo "Application successfully deployed."
```
5. Once you commit the file updates, Gitlab will check the scripts for errors and will try to execute the pipeline directly.
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
title: "Create a New Project/Repo in GitLab"
weight: 10

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

## Where Should We Start?

Start by logging into your GitLab account or create a new one in the [Gitlab](https://gitlab.com/) main page.

We will need to a new project/repo that will contain all our project files including our **`CI/CD`** pipeline configuration file.

We can also choose to use any previously created projects in our Gitlab account. Simply open your previously created project. If that is the case then skip the rest of the steps in the current page and move to the next steps in this tutorial.

## Create a New Project in Gitlab

1. From the Home page, Click on the **`Projects`** icon from the menu on the left hand side panel as the image below.

2. Click on the **`New Project`** button on the top right hand side as the image below.
![Gitlab-Projects #center](_images/gitlab-projects.png)

3. We will get a new screen like the image below with multiple options. You can choose any of the 2 options highlighted in red from the image below.

{{% notice Note %}}
If we chose option 2 then we will need to choose **`GitLab CI/CD components`** option from the list of templates.
{{%/notice%}}

![New-Project #center](_images/new-project.png)

4. Regardles of which option we choose, We will get a screen like the image below where we need to fill-in fields highlighted in red. The first field is the **`Project Name`** which we will name it **`CI-CD Runner`**. In the second field we need to choose any option from the **`Project Url`** list then click on the **`Create Project`** button at the end of the page.
![Project-Info #center](_images/project-info.png)

##### **If we did everything correctly then we should get a screen like the one in the image below.**
![Project-Done #center](_images/project-done.png)

Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
title: "Pipeline Script Explanation and Test Results"
weight: 20

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

## Pipeline Script explanation:

The Pipeline script has multiple sections where each section instructs the pipeline operator on what todo or use and how each Stage looks like.

### First Section: Stages

In this section we are describing how many squentional stages will our pipeline have and what are their names (ex. **`Build, Test and Deploy`**). If we would like all the stages or jobs to run simultinously then we simply don't define this section.

### Second Section: Build-Job part of the Build stage

In this section we are defining the Build-Job as part of the Build stage. This stage will run on Gitlab-Hosted runner that uses Linux OS on Arm64 instance of size small.

{{% notice Important Note %}}
Gitlab offers 3 Arm64 based Instances that use Linux as their OS.

- saas-linux-small-arm64
- saas-linux-medium-arm64
- saas-linux-large-arm64

For more information about all Arm and other avilable Gitlab-hosted runners check [Gitlab-Hosted Runners](https://docs.gitlab.com/ci/runners/hosted_runners/linux/) page.

{{%/notice%}}

### Other Sections:

The rest of the other sections follow the same patthern. You will notice that the **`Test`** stage for example has 2 Jobs in it (unit-test-job and lint-test-job). The **`Deploy`** stage here has only 1 Job called **`deploy-job`**.
As you get to learn more YML scripting you will be able to add a lot more complex functionality to your pipelines.

{{%notice Note%}}
Gitlab offers a lot of documentions on how to create pipeline that fits different needs and also offer common templates for them as well. You can access then from [Use CI/CD to build your application](https://docs.gitlab.com/topics/build_your_application/) page.
{{%/notice%}}

## How to run your pipeline for testing and to check the results:

From the left hand side panel, Navigate to **`Build`** then to **`Pipeline`** then click on **`New pipeline`** button on the top right hand side just like the image below. In the new window click on **`New pipeline`** button again and your pipeline will start to execute.
![New-Pipeline #center](_images/new-pipeline.png)

To check the status of your pipeline and to check the output of any of it's Jobs simply click on any of the **`Jobs`** as the image below (with red rectangle around them).
![pipeline-execution #center](_images/pipeline-execution.png)

## Gitlab Helpful tools

If you navigate to your pipeline editor from before you will notice that there are more tabs in that page other than the **`Edit`** tab. ![visual-pipeline #center](_images/visual-pipeline.png)

### The other Tabs are:

1. Visualize: which can visulaize your pipeline for you as you edit it's componenets which can be very helpful especially for complex pipelines.
2. Validate: which can validate your pipeline script as you are editting them and saving from time to time so that you can catch any issues with you code early on.
Loading
Loading