---
title: "Hello world"
description: "Get started with CircleCI by printing Hello World in any execution environment."
platform: "Cloud, Server"
doc_version: "Server"
last_updated: "2026-10-26"
---

> 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

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

## Prerequisites

*   An account on your CircleCI Server instance, connected to your code.
    
*   A code repository you want to build on CircleCI.
    
*   Follow the [Set Up a Project](https://circleci.com/docs/guides/server/getting-started/create-project/#set-up-a-project) steps 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/execute/private-images/).

## Echo hello world on CircleCI Server

To build in a macOS execution environment on server use [Self-Hosted Runner](https://circleci.com/docs/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/server/execute/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/server/execute/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/server/execute/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/server/execute/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/server/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/).