---
title: "Hello world"
description: "Get started with CircleCI by printing Hello World in any execution environment."
platform: "Cloud, Server"
doc_version: "unversioned"
last_updated: "2026-10-07"
cloud_plans: "Free, Performance, Scale"
version_control: "All supported providers"
---

> For current CircleCI product defaults, deprecated patterns, and Cloud/Server differences, see [AGENTS.md](https://circleci.com/docs/AGENTS.md).
>
> For the complete documentation index and site structure, see [llms.txt](https://circleci.com/docs/llms.txt).

# Hello world

**Cloud plans:** Free, Performance, Scale

**Version control:** [All supported providers](https://circleci.com/docs/guides/integration/version-control-system-integration-overview/)

This page provides configuration examples to get started with a basic pipeline using any execution environment.

## Prerequisites

*   A CircleCI account connected to your code. You can [sign up for free](https://circleci.com/signup/).
    
*   A code repository you want to build on CircleCI.
    
*   Follow the [Create a Project](https://circleci.com/docs/guides/getting-started/create-project/) guide to connect your repository to CircleCI. You can then use the examples below to configure a basic pipeline using any execution environment.
    

**Using Docker?** Authenticating Docker pulls from image registries is recommended when using the Docker execution environment. Authenticated pulls allow access to private Docker images, and may also grant higher rate limits, depending on your registry provider. For further information, see [Using Docker Authenticated Pulls](https://circleci.com/docs/guides/execution-managed/private-images/).

## Echo hello world

These examples add a job called `hello-job` that prints `hello world` to the console.

<Tabs>
<Tab title="Docker">

The job `hello-job` spins up a container running a pre-built CircleCI Docker image for Node. Refer to [Using the Docker Execution Environment](https://circleci.com/docs/guides/execution-managed/using-docker/) page for more information.

```yaml
version: 2.1

jobs:
  hello-job:
    docker:
      - image: cimg/node:17.2.0 # the primary container, where your job's commands are run
    steps:
      - checkout # check out the code in the project directory
      - run: echo "hello world" # run the `echo` command

workflows:
  my-workflow:
    jobs:
      - hello-job
```

</Tab>
<Tab title="Linux VM">

The job `hello-job` spins up a Linux vir†ual machine running a [Ubuntu machine image](https://circleci.com/developer/images?imageType=machine). Refer to [Using the Linux VM Execution Environment](https://circleci.com/docs/guides/execution-managed/using-linuxvm/) page for more information.

```yaml
version: 2.1

jobs:
  hello-job:
    machine:
      image: ubuntu-2404:current
    steps:
      - checkout # check out the code in the project directory
      - run: echo "hello world" # run the `echo` command

workflows:
  my-workflow:
    jobs:
      - hello-job
```

</Tab>
<Tab title="macOS">

The job `hello-job` spins up a macOS virtual machine running the specified Xcode version. Refer to [Using the macOS Execution Environment](https://circleci.com/docs/guides/execution-managed/using-macos/) page for more information.

```yaml
version: 2.1

jobs:
  hello-job:
    macos:
      xcode: 27.0.0
    resource_class: m4pro.medium
    steps:
      - checkout # check out the code in the project directory
      - run: echo "hello world" # run the `echo` command

workflows:
  my-workflow:
    jobs:
      - hello-job
```

</Tab>
<Tab title="Windows">

The job `hello-job` spins up a Windows virtual machine using the default executor specified by the [Windows orb](https://circleci.com/developer/orbs/orb/circleci/windows#usage-run_default). Refer to [Using the Windows Execution Environment](https://circleci.com/docs/guides/execution-managed/using-windows/) page for more information.

```yaml
version: 2.1

orbs:
  win: circleci/windows@5.0.0 # The Windows orb gives you everything you need to start using the Windows executor.

jobs:
  hello-job:
    executor:
      name: win/default # executor type
      size: "medium" # resource class, can be "medium", "large", "xlarge", "2xlarge", defaults to "medium" if not specified

    steps:
      # Commands are run in a Windows virtual machine environment
      - checkout
      - run: Write-Host 'Hello, Windows'

workflows:
  my-workflow:
    jobs:
      - hello-job
```

</Tab>
<Tab title="GPU">

The GPU execution environment is available on the [Scale](https://circleci.com/pricing/) Plan.

The job `hello-job` spins up a GPU-enabled virtual machine using the machine executor. GPU images are available for [Windows](https://circleci.com/docs/reference/configuration-reference/#available-windows-gpu-image) and [Linux](https://circleci.com/docs/reference/configuration-reference/#available-linux-gpu-images). Refer to [Using the GPU Execution Environment](https://circleci.com/docs/guides/execution-managed/using-gpu/) page for more information.

```yaml
version: 2.1

jobs:
  hello-job:
    machine:
      image: linux-cuda-12:default
      resource_class: gpu.nvidia.medium
    steps:
      - checkout # check out the code in the project directory
      - run: echo "hello world" # run the `echo` command

workflows:
  my-workflow:
    jobs:
      - hello-job
```

</Tab>
<Tab title="Arm VM">

The job `hello-job` spins up an \[Arm (Linux) virtual machine\] using the machine executor. Refer to [Using the Arm VM Execution Environment](https://circleci.com/docs/guides/execution-managed/using-arm/) page for more information.

```yaml
version: 2.1

jobs:
  hello-job:
    machine:
      image: ubuntu-2404:current
    resource_class: arm.medium
    steps:
      - checkout # check out the code in the project directory
      - run: echo "hello world" # run the `echo` command

workflows:
  my-workflow:
    jobs:
      - hello-job
```

</Tab>
</Tabs>

If you get a `No Config Found` error, it may be that you used `.yaml` file extension. Be sure to use `.yml` file extension to resolve this error.

## Echo hello world on CircleCI Server

To build in a macOS execution environment on server use [Self-Hosted Runner](https://circleci.com/docs/guides/execution-runner/runner-overview/).

These examples add a job called `hello-job` that prints `hello world` to the console.

<Tabs>
<Tab title="Docker">

The job `hello-job` spins up a container running a pre-built CircleCI Docker image for Node. Refer to [Using the Docker Execution Environment](https://circleci.com/docs/guides/execution-managed/using-docker/) page for more information.

```yaml
version: 2.1

jobs:
  hello-job:
    docker:
      - image: cimg/node:17.2.0 # the primary container, where your job's commands are run
    steps:
      - checkout # check out the code in the project directory
      - run: echo "hello world" # run the `echo` command

workflows:
  my-workflow:
    jobs:
      - hello-job
```

</Tab>
<Tab title="Linux VM">

The job `hello-job` spins up a Linux vir†ual machine running a [Ubuntu machine image](https://circleci.com/developer/images?imageType=machine). Refer to [Using the Linux VM Execution Environment](https://circleci.com/docs/guides/execution-managed/using-linuxvm/) page for more information.

```yaml
version: 2.1

jobs:
  hello-job:
    machine:
      image: default
    steps:
      - checkout # check out the code in the project directory
      - run: echo "hello world" # run the `echo` command

workflows:
  my-workflow:
    jobs:
      - hello-job
```

</Tab>
<Tab title="Windows">

The job `hello-job` spins up a Windows virtual machine using the default executor specified by the [Windows orb](https://circleci.com/developer/orbs/orb/circleci/windows#usage-run_default). Refer to [Using the Windows Execution Environment](https://circleci.com/docs/guides/execution-managed/using-windows/) page for more information.

```yaml
version: 2.1

jobs:
  hello-job:
    machine:
      image: windows-default

    steps:
      # Commands are run in a Windows virtual machine environment
      - checkout
      - run: Write-Host 'Hello, Windows'

workflows:
  my-workflow:
    jobs:
      - hello-job
```

</Tab>
<Tab title="Arm">

The job `hello-job` spins up an Arm (Ubuntu 22.04) virtual machine. Refer to [Using the Arm VM Execution Environment](https://circleci.com/docs/guides/execution-managed/using-arm/) page for more information.

```yaml
version: 2.1

jobs:
  hello-job:
    machine:
      image: arm-default
    resource_class: arm.medium
    steps:
      - checkout # check out the code in the project directory
      - run: echo "hello world" # run the `echo` command

workflows:
  my-workflow:
    jobs:
      - hello-job
```

</Tab>
</Tabs>

If you get a `No Config Found` error, it may be that you used `.yaml` file extension. Be sure to use `.yml` file extension to resolve this error.

## Next steps

*   See the [Concepts](https://circleci.com/docs/reference/concepts/) page for a summary of CircleCI-specific concepts.
    
*   Refer to the [Workflows](https://circleci.com/docs/guides/orchestrate/workflows/) page for examples of orchestrating job runs with concurrent, sequential, scheduled, and manual approval workflows.
    
*   Find complete reference information for all keys and execution environments in the [CircleCI Configuration Reference](https://circleci.com/docs/reference/configuration-reference/).