# Run pipeline and verify results

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/cross-platform/gitlab-managed-runners/)
- [Build and use GitLab-hosted Arm runners for CI/CD](https://learn.arm.com/learning-paths/cross-platform/gitlab-managed-runners/info/)
- [Create a GitLab project](https://learn.arm.com/learning-paths/cross-platform/gitlab-managed-runners/project/)
- [Build and configure your Arm64 CI/CD pipeline](https://learn.arm.com/learning-paths/cross-platform/gitlab-managed-runners/pipeline/)
- [Run pipeline and verify results](https://learn.arm.com/learning-paths/cross-platform/gitlab-managed-runners/results/)
- [Next Steps](https://learn.arm.com/learning-paths/cross-platform/gitlab-managed-runners/_next-steps/)

## 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
Navigate to **Build** > **Pipelines** and select **Run pipeline**:

![GitLab Run pipeline interface](https://learn.arm.com/learning-paths/cross-platform/gitlab-managed-runners/_images/new-pipeline.png "GitLab Run pipeline interface")  
*GitLab Run pipeline interface*

Select individual jobs to view their output and status:

![GitLab pipeline execution screen](https://learn.arm.com/learning-paths/cross-platform/gitlab-managed-runners/_images/pipeline-execution.png "GitLab pipeline execution screen")  
*GitLab pipeline execution screen*

## Verify Arm64 architecture
The `lscpu` command output confirms you’re building on Arm64 architecture:

![lscpu output confirming Arm64 architecture](https://learn.arm.com/learning-paths/cross-platform/gitlab-managed-runners/_images/lscpu.png "lscpu output confirming Arm64 architecture")  
*lscpu output confirming Arm64 architecture*

Key information from `lscpu` output:

- **Architecture**: aarch64 (Arm 64-bit)
- **CPU**: Neoverse-N1
- **Vendor ID**: ARM

This confirms your application compiles natively on Arm64 architecture, producing binaries optimized for Arm processors.

## Test the container image
Your built image is stored in GitLab Container Registry. Navigate to **Deploy** > **Container Registry** to find your image with tags including `latest` and the commit SHA.

To test the image on an Arm64 system:

```bash
docker login registry.gitlab.com
docker pull registry.gitlab.com/<namespace>/<project>:latest
docker run --rm registry.gitlab.com/<namespace>/<project>:latest
```

Replace `<namespace>` and `<project>` with your GitLab username and project name.

The expected output is:

```plaintext
__output__Hello from an Arm64 Docker image built on GitLab hosted Arm runners!
```

> This image runs only on Arm64 systems because it contains an Arm64 binary. To run on x86-64 systems, you need to rebuild using an x86-64 runner or use multi-architecture builds.

## Pipeline editor tools
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 with graph and validation tools](https://learn.arm.com/learning-paths/cross-platform/gitlab-managed-runners/_images/visual-pipeline.webp "GitLab visual pipeline editor with graph and validation tools")  
*GitLab visual pipeline editor with graph and validation tools*

## What you’ve accomplished and what’s next
You have:

- Configured a GitLab project with CI/CD pipeline
- Built a containerized application on Arm64 runners
- Verified native Arm64 compilation
- Published container images to GitLab Container Registry

You can now extend this pipeline for your own applications. GitLab’s Arm64 runners eliminate cross-compilation overhead when building for Arm-based deployment targets, including cloud servers, edge infrastructure, and embedded systems.
