---
title: "Quick start: Run iOS GitHub Actions workflows on Buildkite"
date: "2026-10-15"
author: "Matt Mejia"
description: "Follow this quick start to run supported iOS GitHub Actions workflows on Buildkite’s hosted macOS agents without rewriting your workflow YAML."
tags: "Hosted Agents, Guide, Pipelines, Plugin"
---

# Quick start: Run iOS GitHub Actions workflows on Buildkite

Run supported iOS GitHub Actions workflows on Buildkite with the buildkite-gha compatibility runtime without rewriting your workflow YAML.

<h2>Summary</h2><p>You can run supported GitHub Actions workflows for iOS on Buildkite without rewriting your workflow files. Buildkite&apos;s <a href="https://github.com/buildkite/buildkite-gha">GitHub Actions Compatibility</a> (<code>buildkite-gha</code>) reads the workflow files in your repository and runs them on Buildkite-hosted macOS agents.</p><p>In this guide, you&apos;ll create a pipeline, add your secrets, choose an Xcode version, and run an existing iOS workflow that builds your app and runs its unit tests.</p><h2>Prerequisites</h2><ul><li><p><strong>A Buildkite organization with hosted macOS agents.</strong> Hosted macOS is available on the <a href="https://buildkite.com/pricing/">Pro and Enterprise plans</a>. New sign-ups get a 30-day all-access trial with 3,000 vCPU Mac minutes.</p></li><li><p><strong>A GitHub repository with an iOS workflow that runs on push.</strong> Check the <a href="https://buildkite.com/docs/pipelines/migration/run-github-actions-workflows/compatibility">compatibility guide</a> to confirm your workflow uses supported features.</p></li></ul><h2>Create a GitHub Actions pipeline</h2><ol><li><p><a rel="noreferrer" target="_blank" href="https://buildkite.com/signup?iaid=pricing-free">Sign up for free</a> with GitHub or email and create an organization. </p></li><li><p>Select your repository on the New Pipeline page. Email signups connect GitHub first.</p></li><li><p>Edit your pipeline name, description, and default branch.</p></li><li><p>Click<strong> Create GitHub Actions pipeline</strong>.</p></li></ol><div>Image of Creating a GitHub Actions pipeline</div><h2>Add secrets</h2><p>Buildkite doesn&apos;t copy your GitHub secrets.  Add each secret your workflow uses before you run it:</p><ol><li><p>Select the <strong>Secrets </strong>tab.</p></li><li><p>Click <strong>New secret</strong>, then enter the secret&apos;s <strong>Key</strong> and <strong>Value</strong>.</p></li><li><p>Click <strong>Create secret</strong>.</p></li></ol><div>Image of Adding a secret to a workflow</div><h2>Choose your Xcode version</h2><p>When you create a Buildkite organization, its <a href="https://buildkite.com/docs/agent/queues/managing#setting-up-queues">Default cluster</a> includes Buildkite-hosted macOS queues, so you don&apos;t need to set up or manage any Macs. Buildkite picks the queue from each job&apos;s runs-on label: <code>macos-latest</code> runs on the <code>macos-medium</code> queue. </p><p>Your iOS jobs use the macOS and Xcode versions configured on that queue’s base image. Buildkite’s current macOS 26 (Tahoe) images include Xcode 27 and the iOS 27 simulator runtime, but your queue may select an older Xcode by default.</p><p>If your project targets iOS 27, check the <a rel="noopener noreferrer" target="_blank" href="https://buildkite.com/platform/pipelines/hosting-options/mac-hosted-agents/images/">Mac hosted-agent image explorer</a> to confirm your image includes Xcode 27 and the iOS 27 runtime. If it doesnt, open the <code>macos-medium</code> queue’s <strong>Base image</strong> settings.</p><ol><li><p>Go to the <strong>Agents</strong> tab and open the <code>macos-medium</code> queue.</p></li><li><p>Select the <strong>Base image tab.</strong> If your current image doesn&apos;t include Xcode 27, select one that does.</p></li><li><p>Under <strong>Xcode version</strong>, select <strong>27</strong>.</p></li><li><p>Click <strong>Save base image</strong>.</p></li></ol><div>Image of Selecting an Xcode version</div><h2>Run your first workflow</h2><p>Automatically run your workflow by pushing a change that matches its branch and path filters.</p><p>To run it manually:</p><ol><li><p>Select your workflow.</p></li><li><p>Optinal: to change the branch, use a clean checkout, or set environment variables, click <strong>Change branch or options</strong>. Add environment variables under <strong>Options</strong> &gt; <strong>Environment Variables</strong> in <code>KEY=value</code> format.</p></li><li><p>Click <strong>Run workflow</strong>. </p></li></ol><div>Image of Running a workflow and viewing logs</div><p>Watch it run live — logs stream until the job finishes. Confirm in the logs the build used the Xcode version you selected. Once the Buildkite build passes, you can disable the GitHub workflow to avoid duplicate runs.</p><h2>Next steps</h2><p>Move one workflow at a time and leave the rest on GitHub Actions for as long as you need.</p><ul><li><p>To learn how the runtime runs your workflows and which features it supports, see <a href="https://buildkite.com/docs/pipelines/migration/run-github-actions-workflows">Run GitHub Actions workflows in Buildkite</a> .</p></li><li><p>When you’re ready for more than one workflow, see <a href="https://buildkite.com/docs/pipelines/migration/from-githubactions">Migrate from GitHub Actions</a>.</p></li></ul><h2>Get help</h2><p> <a rel="noopener noreferrer" target="_blank" href="mailto:support@buildkite.com">Contact Buildkite support</a> and we&apos;ll help you. Send your workflow file and build logs, with any secrets removed.</p><p></p><p>Verison note: This guide was checked against <a href="https://github.com/buildkite/buildkite-gha/releases/tag/v0.102.5">buildkite-gha v0.102.5</a>. The plugin uses the latest stable runtime release unless you pin a version. Some behavior may differ between versions.</p>