Installing Buildkite Agent on macOS

The Buildkite Agent can be installed on macOS 10.9 or higher using Homebrew or our installer script, and supports pre-release versions of both OS X and Xcode.

Installation

If you have Homebrew installed you can use our buildkite formula repository to install the agent:

brew install buildkite/buildkite/buildkite-agent

Homebrew and Apple Silicon

Homebrew is not yet fully supported on Macs with Apple Silicon.

We have confirmed that the Linux install method works correctly, and that the Homebrew method will also work if you have a working installation of Homebrew.

Currently, we supply only an Intel version of the Agent, and have confirmed that it works under Rosetta 2. We hope to supply an Apple Silicon version of the Agent once it becomes feasible, and to keep an eye on Homebrew’s progress towards full support.

Then configure your agent token:

sed -i '' "s/xxx/INSERT-YOUR-AGENT-TOKEN-HERE/g" "$(brew --prefix)"/etc/buildkite-agent/buildkite-agent.cfg

If you don't use Homebrew you should follow the Linux install instructions.

SSH Key Configuration

SSH keys should be copied to (or generated into) the .ssh directory in the users’s home directory (i.e. /Users/some-user/.ssh). For example, to generate a new private key which you can add to your source code host:

$ mkdir -p ~/.ssh && cd ~/.ssh
$ ssh-keygen -t rsa -b 4096 -C "build@myorg.com"

See the Agent SSH Keys documentation for more details.

File Locations

Homebrew install file locations:

  • Configuration: /usr/local/etc/buildkite-agent/buildkite-agent.cfg
  • Hooks: /usr/local/etc/buildkite-agent/hooks
  • Builds: /usr/local/var/buildkite-agent/builds
  • Log: /usr/local/var/log/buildkite-agent.log

Linux installer script file locations:

  • Configuration: ~/.buildkite-agent/buildkite-agent.cfg
  • Hooks: ~/.buildkite-agent/hooks
  • Builds: ~/.buildkite-agent/builds

Configuration

See the configuration documentation for an explanation of each configuration setting.

Starting on Login

If you installed the agent using Homebrew you can run the following command to get instructions on how to install the correct plist and have buildkite-agent start on login:

brew info buildkite-agent

If you installed the buildkite-agent using the Linux install script then you'll need to install the plist yourself using the following commands:

# Download the launchd config to ~/Library/LaunchAgents/
curl -o ~/Library/LaunchAgents/com.buildkite.buildkite-agent.plist https://raw.githubusercontent.com/buildkite/agent/master/templates/launchd_local_with_gui.plist

# Set buildkite-agent to be run as the current user (a full user, created via System Prefs)
sed -i '' "s/your-build-user/$(whoami)/g" ~/Library/LaunchAgents/com.buildkite.buildkite-agent.plist

# Create the agent's log directory with the correct permissions
mkdir -p ~/.buildkite-agent/log && sudo chmod 775 ~/.buildkite-agent/log

# Start the agent
launchctl load ~/Library/LaunchAgents/com.buildkite.buildkite-agent.plist

# Check the logs
tail -f ~/.buildkite-agent/log/buildkite-agent.log

Troubleshooting: launchctl fails with "Could not find domain for"

Ensure that you have a user logged in to the macOS host, then re-run:
launchctl load ~/Library/LaunchAgents/com.buildkite.buildkite-agent.plist

Running multiple agents

Launching and managing multiple agents can be done using launchd.

If you need the same configuration on each agent, configure a launchd service to use the --spawn flag on the buildkite-agent command.

Using the existing agent plist, add the spawn flag to the ProgramArguments and change the number to how many agents you want to run.

The below example will start five agents each time the service is started:

<key>ProgramArguments</key>
<array>
  <string>/Users/your-build-user/.buildkite-agent/bin/buildkite-agent</string>
  <string>start</string>
  <string>--spawn=5</string>
</array>

If your agents each need different configuration, you can create multiple launchd services:

  1. Find your agent's plist. If you installed the agent with Homebrew you can find the plist in your user's ~/Library/LaunchAgents directory. If you installed with the Linux script, you can take a copy of the template plist from the Agent's GitHub repository.

  2. Make as many copies of the plist as you require, one per configuration, ensuring that each has a unique label.

  3. Once you've edited your plist/s with your custom config, make sure that all the referenced paths exist and have the correct permissions. See the Starting on Login section above for an example of how to check directories and permissions.

  4. Load each plist into launchd using launchctl.

Upgrading

If you installed the agent using Homebrew you can use the standard brew upgrade command to update the agent:

brew update && brew upgrade buildkite-agent

If you installed the buildkite-agent using the Linux install script then you should simply run the installer script again and it will update your agent.