diff --git a/content/learning-paths/cross-platform/gitlab-managed-runners/_images/ci-cd-new.png b/content/learning-paths/cross-platform/gitlab-managed-runners/_images/ci-cd-new.png new file mode 100644 index 0000000000..107e5ea2ac Binary files /dev/null and b/content/learning-paths/cross-platform/gitlab-managed-runners/_images/ci-cd-new.png differ diff --git a/content/learning-paths/cross-platform/gitlab-managed-runners/_images/ci-cd-new.webp b/content/learning-paths/cross-platform/gitlab-managed-runners/_images/ci-cd-new.webp deleted file mode 100644 index 60103e620b..0000000000 Binary files a/content/learning-paths/cross-platform/gitlab-managed-runners/_images/ci-cd-new.webp and /dev/null differ diff --git a/content/learning-paths/cross-platform/gitlab-managed-runners/_index.md b/content/learning-paths/cross-platform/gitlab-managed-runners/_index.md index ebc3a1dd9a..5976db8af0 100644 --- a/content/learning-paths/cross-platform/gitlab-managed-runners/_index.md +++ b/content/learning-paths/cross-platform/gitlab-managed-runners/_index.md @@ -1,10 +1,6 @@ --- title: Build a CI/CD pipeline using GitLab-hosted Arm runners -draft: true -cascade: - draft: true - minutes_to_complete: 30 diff --git a/content/learning-paths/cross-platform/gitlab-managed-runners/info.md b/content/learning-paths/cross-platform/gitlab-managed-runners/info.md index 820fa00511..320826f91d 100644 --- a/content/learning-paths/cross-platform/gitlab-managed-runners/info.md +++ b/content/learning-paths/cross-platform/gitlab-managed-runners/info.md @@ -1,5 +1,5 @@ --- -title: GitLab runners overview +title: Build and use GitLab-hosted Arm runners for CI/CD weight: 2 ### FIXED, DO NOT MODIFY @@ -8,14 +8,16 @@ layout: learningpathall ## What is a GitLab runner? -A GitLab Runner is an agent that executes CI/CD jobs defined in your pipeline configuration. GitLab offers two types: +A GitLab Runner is an agent that executes CI/CD jobs defined in your pipeline configuration. GitLab offers two types of runners: -- **GitLab-hosted runners**: Managed by GitLab, no setup required -- **Self-managed runners**: You install and manage on your own infrastructure +- **GitLab-hosted runners**: GitLab manages these runners, so you don't need to set up or maintain infrastructure. +- **Self-managed runners**: you install and maintain these runners on your own infrastructure. -When you register a runner, you choose an executor that determines the job environment (Docker, Shell, Kubernetes, etc.). +For Arm development, GitLab-hosted runners offer a managed way to build and test applications targeting Arm platforms without maintaining your own infrastructure. You'll choose between the Docker executor (for containerized builds) or the Shell executor (for direct access to the Arm64 runner environment). -### Arm64 runner support +When you register a runner, you specify an executor that determines the job environment. For Arm development workflows, Docker and Shell executors are the most common choices, letting you build container images or compile applications directly on native Arm64 hardware. + +## Arm64 runner support GitLab-hosted runners support both x86-64 and arm64 architectures. For developers targeting Arm platforms (servers, edge devices, or embedded systems), using Arm64 runners provides: @@ -25,7 +27,7 @@ GitLab-hosted runners support both x86-64 and arm64 architectures. For developer - Faster builds when targeting Arm64 platforms {{% notice Note %}} -GitLab-hosted runner specifications are subject to change. See the [GitLab documentation](https://docs.gitlab.com/ci/runners/hosted_runners/) for current details. +GitLab-hosted runner specifications are subject to change. See the [GitLab documentation](https://docs.gitlab.com/ci/runners/hosted_runners/) for further information. {{% /notice %}} ## GitLab-hosted runners @@ -34,10 +36,13 @@ GitLab-hosted runner specifications are subject to change. See the [GitLab docum Each job runs in a newly provisioned virtual machine dedicated to that job. The VM is deleted immediately after job completion. -- Untagged jobs default to the small Linux x86-64 runner +GitLab-hosted runners provide the following execution environment: + +- Jobs run with sudo access (no password required) - Jobs time out after three hours -- The VM has sudo access without password -- Storage is shared between OS, container image, and repository clone +- Storage is shared between the operating system, container images, and your repository clone +- Untagged jobs default to the small Linux x86-64 runner (specify `saas-linux-small-arm64` or another Arm64 tag to use Arm runners) + ### Network isolation @@ -60,7 +65,7 @@ For complete specifications, see [GitLab-hosted runners](https://docs.gitlab.com Each job executes in complete isolation: -1. GitLab provisions a new VM for your job -2. The job executes in this dedicated environment -3. GitLab sends deletion command to Google Compute API immediately after completion -4. 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) securely deletes the VM and data +- GitLab provisions a new VM for your job +- The job executes in this dedicated environment +- GitLab sends deletion command to Google Compute API immediately after completion +- 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) securely deletes the VM and data diff --git a/content/learning-paths/cross-platform/gitlab-managed-runners/pipeline.md b/content/learning-paths/cross-platform/gitlab-managed-runners/pipeline.md index c59807a7a3..70f83e51fd 100644 --- a/content/learning-paths/cross-platform/gitlab-managed-runners/pipeline.md +++ b/content/learning-paths/cross-platform/gitlab-managed-runners/pipeline.md @@ -1,10 +1,13 @@ --- -title: Configure CI/CD pipeline for Arm64 +title: Build and configure your Arm64 CI/CD pipeline weight: 4 ### FIXED, DO NOT MODIFY layout: learningpathall --- +## Overview + +This section guides you through building an Arm64 container image and creating a pipeline configuration for GitLab-hosted runners. GitLab-hosted runners are available for any project without additional setup. To use Arm64 runners, create a `.gitlab-ci.yml` file in your project root and specify the Arm64 runner tag. @@ -63,15 +66,15 @@ Create these three files before adding the pipeline configuration. Once you comm From your project page, select **Set up CI/CD** or use the **+** button to create a new file: -![CI-CD-New #center](_images/ci-cd-new.png) +![GitLab project page with CI/CD setup option highlighted, showing the Set up CI/CD button in the center of the interface alt-txt#center](_images/ci-cd-new.png "GitLab Set up CI/CD button") Name the file `.gitlab-ci.yml`: -![New-YML #center](_images/new-yml.png) +![GitLab new YAML file creation screen for pipeline configuration alt-txt#center](_images/new-yml.png "GitLab new YAML file creation screen") Select **Edit** > **Edit in pipeline editor**: -![Editor-YML #center](_images/editor-yml.png) +![GitLab pipeline editor screen for editing .gitlab-ci.yml alt-txt#center](_images/editor-yml.webp "GitLab pipeline editor screen") Add the following pipeline configuration. This defines three stages that build, test, and publish your Arm64 container image: ```yaml @@ -136,4 +139,13 @@ The `push_latest` job runs only on the default branch (typically `main`). It tag **Authentication:** GitLab automatically provides `$CI_REGISTRY_PASSWORD` and `$CI_REGISTRY_USER` variables for authenticating to the container registry. -Commit the configuration. GitLab validates the syntax and starts the pipeline automatically. +Commit the configuration. GitLab validates the syntax and starts the pipeline automatically. + +## What you've accomplished and what's next + +In this section, you: +- Built a simple C application for Arm64 +- Created a Dockerfile and containerized your application +- Configured a GitLab pipeline to build and push Arm64 images + +Next, you'll run your pipeline, verify the results, and test your container image on Arm64 infrastructure. Continue to the next section to validate your CI/CD workflow and ensure your application is ready for deployment on Arm platforms. diff --git a/content/learning-paths/cross-platform/gitlab-managed-runners/project.md b/content/learning-paths/cross-platform/gitlab-managed-runners/project.md index 1aec891e04..35009edc57 100644 --- a/content/learning-paths/cross-platform/gitlab-managed-runners/project.md +++ b/content/learning-paths/cross-platform/gitlab-managed-runners/project.md @@ -5,6 +5,10 @@ weight: 3 ### FIXED, DO NOT MODIFY layout: learningpathall --- +## Create your GitLab project for Arm CI/CD + +This section covers how to create a new GitLab project to use with Arm64 runners. + Before you begin, log in to your [GitLab account](https://gitlab.com/) or create a new one. @@ -18,18 +22,18 @@ If you're using an existing project, skip to the next section. Navigate to **Projects** in the left sidebar and select **New Project**: -![Gitlab-Projects #center](_images/gitlab-projects.png) +![GitLab left sidebar showing Projects menu with New Project option highlighted alt-txt#center](_images/gitlab-projects.png "GitLab Projects menu in left sidebar") Choose **Create blank project** or **Create from template** (select **GitLab CI/CD components** if using a template): -![New-Project #center](_images/new-project.png) +![GitLab new project creation screen showing options for blank project and templates alt-txt#center](_images/new-project.png "GitLab new project creation screen") Provide a project name (for example, `arm-runner-demo`) and select your preferred project URL. Select **Create Project**: -![Project-Info #center](_images/project-info.png) +![GitLab project information entry screen with fields for project name and URL alt-txt#center](_images/project-info.png "GitLab project information entry screen") Your new project is ready: -![Project-Done #center](_images/project-done.png) +![GitLab project creation success screen showing project dashboard alt-txt#center](_images/project-done.png "GitLab project creation success screen") With your project created, you can now add application files and configure the CI/CD pipeline to use Arm64 runners. diff --git a/content/learning-paths/cross-platform/gitlab-managed-runners/results.md b/content/learning-paths/cross-platform/gitlab-managed-runners/results.md index 7f38b7d18a..c59af1e170 100644 --- a/content/learning-paths/cross-platform/gitlab-managed-runners/results.md +++ b/content/learning-paths/cross-platform/gitlab-managed-runners/results.md @@ -5,6 +5,9 @@ weight: 5 ### FIXED, DO NOT MODIFY layout: learningpathall --- +## Validate and test your Arm64 CI/CD pipeline + +This section explains how to run, verify, and test your pipeline and container images on Arm64 infrastructure. ## Run the pipeline @@ -14,7 +17,7 @@ Navigate to **Build** > **Pipelines** and select **Run pipeline**: Select individual jobs to view their output and status: -![pipeline-execution #center](_images/pipeline-execution.png) +![GitLab pipeline execution screen showing job output and status alt-txt#center](_images/pipeline-execution.png "GitLab pipeline execution screen") ## Verify Arm64 architecture @@ -63,6 +66,8 @@ The pipeline editor provides helpful features: - **Visualize**: View your pipeline as a graph showing stage dependencies - **Validate**: Check pipeline syntax before committing changes +![GitLab visual pipeline editor showing pipeline graph and validation tools alt-txt#center](_images/visual-pipeline.webp "GitLab visual pipeline editor with graph and validation tools") + ## What you've accomplished and what's next You have: