GitLab Runner: Choose the shell executor
Register using the runner authentication details created in your project or group settings, and select the shell executor. Jobs run directly in the node user's environment, without container-level isolation.
Start with concurrency set to 1 to prevent signing jobs or cache writes from interfering with each other. Check that the runner user's PATH, developer directory and Ruby environment match your manual test setup.
concurrent = 1
[[runners]]
executor = "shell"
shell = "bash"
These are only the relevant fields in the configuration file after registration, not a complete registration configuration. Keep the URL, authentication details and other fields generated by the registration tool. Don't overwrite the whole file with this snippet.
Give the runner a dedicated tag, and have a test job print whoami, pwd and xcode-select -p. If a build works in Terminal but fails in CI, compare the user, paths and environment variables before reinstalling tools.