> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arcium.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Continuous integration

> Build and test Arcium projects in GitHub Actions with a pinned setup-arcium toolchain

The [`arcium-hq/setup-arcium`](https://github.com/arcium-hq/setup-arcium) action installs the Arcium CLI, Anchor, Solana CLI, Node.js, and Yarn so you can build and test an MXE in GitHub Actions.

## Add the workflow

```yaml theme={null}
name: arcium

on:
  push:
  pull_request:

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
      - uses: arcium-hq/setup-arcium@v0.13.2
        with:
          runner-arch-os: x86_64_linux
          arcium-version: "0.13.2"
          anchor-version: "1.0.2"
          solana-cli-version: "3.1.10"
          node-version: "24.10.0"

      - name: Install dependencies
        run: yarn install --frozen-lockfile
        shell: bash

      - name: Build
        run: arcium build
        shell: bash

      - name: Test
        run: |
          sudo prlimit --pid $$ --nofile=1048576:1048576
          arcium test
        shell: bash
```

Pin the action and each tool to versions that match your project. Check the [setup-arcium releases](https://github.com/arcium-hq/setup-arcium/releases) before changing the action version.

## Configure the inputs

| Input                | Required | Default   | Notes                                                                                     |
| -------------------- | -------- | --------- | ----------------------------------------------------------------------------------------- |
| `runner-arch-os`     | yes      | None      | Use `x86_64_linux` for `ubuntu-latest` or `aarch64_macos` for Apple Silicon macOS runners |
| `arcium-version`     | no       | `0.13.2`  | Match the Arcium dependencies in your project                                             |
| `anchor-version`     | no       | `1.0.2`   | Match the version your project pins                                                       |
| `solana-cli-version` | no       | `3.1.10`  | Use Solana CLI 2.x or newer                                                               |
| `node-version`       | no       | `24.10.0` | Match your project's Node.js version                                                      |

## Raise the Linux file limit

`arcium test` starts validator and node processes that can exhaust the default open-file limit on Linux runners. The workflow raises the limit with `prlimit` in the test step. GitHub Actions starts a new shell for each step, so running `prlimit` in an earlier step does not affect the test process.

## What's next?

<CardGroup cols={2}>
  <Card title="Deployment" icon="rocket" href="/developers/deployment">
    Deploy your MXE to devnet or mainnet after CI passes.
  </Card>

  <Card title="Installation" icon="download" href="/developers/installation">
    Local-machine setup for the same toolchain.
  </Card>
</CardGroup>
