Skip to content

24 ‐ GitHub Actions troubleshooting

Pierre-Yves Lapersonne edited this page Oct 29, 2025 · 4 revisions

Context

Because we work on GitHub, we use GitHub Actions and provided runners for our CI/CD pipeline. In fact, the "CD" part is done in our internal GitLab (to keep private certificates), but the "CI" part is done on GitHub side. However unlike our internal solutions where we manage everything (e.g. local runner) or almost evreything (e.g. local shared runner), this is not the case with GitHub where we use their own runners today. Thus, the changes which can be done on the runners can impact us.

Troubleshooting guide

SwiftLint errors in GitHub Actions workflow but not locally

We use the SwiftLint GitHub Action to trigger SwiftLint in our sources and integrate the results in our codebase preview. But it is possible to have errors in GitHub Actions even if no error occurred locally on our computers. This is possible because we do not manage which version of SwiftLint is used in the GitHub Action. To check if there are inconsistency with SwiftLint, here are some steps:

  1. Supposing GitHub Actions uses the latest version of SwiftLint, check which is the last release
  2. Then upgrade your local SwiftLint (see [DEVELOP)
  3. Then run SwiftLint (see DEVELOP) locally. You should see new errors, maybe the same as the ones in GitHub side
  4. Fix errors, update version of SwiftLint to use in DEVELOP, commit and push, and check if problem solved

Issues with simulators

Sometimes, even if everything worked fine until today, things crashed. The simulator you choose is not available (e.g. "iPhone 17 Pro"), and the chain fallbacks to another simulator (e.g. "iPhone 16 Pro (18.5)"). But, looking in your Xcode, you have an "iPhone 17 Pro" simulator!

2025-10-28T18:03:48.5645700Z [18:03:48]: [31mIgnoring 'iPhone 17 Pro', couldn't find matching simulator[0m
2025-10-28T18:03:48.5662630Z [18:03:48]: [31mCouldn't find any matching simulators for '["iPhone 17 Pro"]' - falling back to default simulator[0m
2025-10-28T18:03:48.5669700Z [18:03:48]: Found simulator "iPhone 16 Pro (18.5)"

In fact, in GitHub Actions runners side, there are several Xcodes available, thugs several buildchains. And when a new Xcode beta is installed (like e.g. Xcode 26.1 beta 3), several buildchains are available in the same environment, even if you use xcode-select to choose the one you want! The fact is, with newer versions of Xcodes, the simulators can change. Thus an "iPhone 17 Pro" simulator yesterday can be today an "iPhone 17 Pro (26.0)" beside an "iPhone 17 Pro (26.1)".

To fix the issue, you can check the name of the simulator you need once downloaded the newer version of Xcode, and update the Fastfile to use it. For snapshots tests ensure the commited versions are the good ones.

Have a look on this README to get details of macOS runners and available environments in GitHub side.

Troubles with Xcode versions

Because we use a GitHub Actions runner indexed by is macOS version (e.g. "macos-26"), we cannot freeze the buildchain and environment we use as they can be changed in the runners in use. It is thus possible to use an Xcode specific version in these runner some day, and the next day to have them unavailable because GitHub removed this version or changed it.

Thus to choose the Xcode version you want, have a look on this file listing all available versions and, using xcode-select, use the path value.

For example, do not use /Applications/Xcode.app as is could change but instead /Applications/Xcode_26.0.1.app.

Clone this wiki locally