A GitHub Action to switch between pre-installed Xcode versions in macOS CI/CD workflows.
setup-xcode is a GitHub Action that enables developers to configure their CI/CD pipelines to use specific versions of Xcode on macOS runners. It solves the problem of inconsistent Xcode environments in automated workflows by providing precise version control. This ensures that iOS, macOS, and other Apple platform projects build reliably across different machines and over time.
iOS and macOS developers using GitHub Actions for continuous integration and deployment, particularly those working on teams or projects that require specific Xcode versions for compatibility.
Developers choose setup-xcode because it's a lightweight, focused tool that integrates seamlessly into GitHub Actions workflows. It eliminates manual Xcode management in CI/CD, reduces environment-related build failures, and supports both stable and beta Xcode versions with flexible version specification.
Set up your GitHub Actions workflow with a specific version of Xcode
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports SemVer patterns and aliases like 'latest' and 'latest-stable', allowing precise control over Xcode versions in workflows, as shown in the usage examples.
Works seamlessly across different macOS runner versions such as macos-13 and macos-15, ensuring consistent builds without extra configuration.
Provides a simple interface with just one key parameter (xcode-version), reducing setup time and complexity, as emphasized in the philosophy section.
Includes options for beta Xcode versions using the '-beta' suffix or 'latest' alias, enabling early testing in CI pipelines.
Cannot install new Xcode versions; it only switches between versions already available on GitHub's runner images, which may not cover all needs.
Version availability hinges on GitHub maintaining and updating their macOS images, potentially causing delays in accessing new Xcode releases.
Requires careful YAML syntax, such as wrapping version numbers in quotes to prevent trimming issues, adding complexity for users.