Build handover into your pipeline
Keep your server running year-round—and make jobs portable
The server runs 365 days a year. The data center handles power, networking and cooling; your team manages project dependencies, secrets, job configuration and data backups. Report hardware issues by support ticket. Don’t treat a single server as your only irreplaceable copy.
Keep a rebuild checklist up to date
Record runner labels, tool versions, environment variable names, dependency installation steps and signing asset import procedures. Use automation to rebuild the environment so handover doesn’t depend on someone’s memory.
Back up signing certificates and private keys securely, and retrieve build artifacts and logs to team storage. Back up DerivedData and dependency caches if it makes sense, but ensure they can always be regenerated.
Review the setup checklist
Preserve evidence when something goes wrong
Record the server ID, date and time (including time zone), last successful job and a summary of the error. Note separately whether SSH connects, the runner is online and jobs start. Avoid vague reports like “the build broke.”
If you can still log in, export necessary data and logs before pausing new jobs. Include only redacted information in support tickets. If support needs authorized access to troubleshoot, specify the scope; never send private keys or full passwords.
Report an issue in the console
Repeat acceptance checks after a server replacement
After support reviews the issue, confirm the resolution by support ticket. If a server replacement is needed, update the address and credentials using the provisioning details, then verify the host fingerprint again.
Restore dependencies and signing assets, then register or reconnect the runner and run a minimal build. Once the new server can accept jobs, revoke the old connection credentials and any runner registrations you no longer use.
Repeat the connection checks
Before routine disk cleanup, define what to keep: retain artifacts by release version, logs according to your team’s audit requirements and rotate caches on the assumption they can be rebuilt. Don’t clean the working directory or switch the global Xcode path while a build is running.