Sep 13, 2016 Set Up Your Development Mac to Access Xcode Server. You can add an account for the server to your development Mac. Once added, you can create bots to run your integrations, initiate integrations, and check the status of bots in the Xcode report navigator. You can also create new projects and host them in Git repositories on the server. You can set up your Business Email in Apple® Mail on your Mac computer. Open Apple Mail. Your next step depends on if you have already set up an email account, or not. If you have already set up an email account, click the Mail menu, and select Add Account. If you haven't set up an account, skip to the next step.
- On your Mac, choose Apple menu System Preferences, then click Software Update. To automatically install macOS updates, select “Automatically keep my Mac up to date.” To set advanced update options, click Advanced, then do any of the following: To have your Mac check for updates automatically, select “Check for updates.”.
- Step 3a: Click the Apple Icon in the upper left corner of your desktop and select 'About This Mac' Step 3b: Look below Mac OS X for: Example: Version 10.X.X, or 11.X. Step 4: Figure out which CAC (ID Card) you have (You need to know this information for step 6) Look at the top back of your ID card for these card types.
A guide for setting up a remote build node for Jenkins CI server.
If you are up to a task to setup remote build node, that means that you already have a server or need to install it first.
A good place to start is Jenkins Wiki page with detailed description of all available options. Don’t forget to have a proper JVM installation first.
Set Ci Up For Mac Shortcut
I would recommend to do first time agent installation via Jenkins UI Jenkins -> Manage Jenkins -> Manage Nodes
. Select an option to create node, configure node’s properties (make sure root directory exists) and you are almost good to go. The preferred way to launch and agent is via SSH.
Set Ci Up For Mac High Sierra
If Jenkins Wiki is such a good reference, then why bother with the post? - I bet that’s exactly what you are asking.
Well, again, the main focus is Mobile CI and part of any decent CI is tests, unit tests in particular. With iOS those must run in iOS Simulator which is a GUI application, which means you are facing Daemon vs Agent issue. Here’s a very good discussion on StackOverflow.
So remote node launched via SSH is running as Launch Daemon and has no context to run GUI applications. If SSH session is running under non-login user, xcodebuild test
will fail with error code 139
or alike. Running SSH session under login user will not help either, at best the simulator will launch but tests will never start. That rules out an option of running remote node via SSH. Trying all the tricks like enabling development mode, updating user’s group and security settings, didn’t work for me, probably because that answer was actual for Xcode 5, but not 6 and above.
Next option would be launching slave agent via Java Web Start. Option with clicking button in the browser should be ignored right away, it hardly qualifies as automated approach. Using javaws
it a bit better though requires you to login to slave agent via GUI and then run the command and answer one prompt by clicking Run button. Finally, you can run it in a headless mode
Now that’s better, this will start a slave agent that is capable of running GUI applications and thus running iOS unit tests in simulator. If you are puzzled where does slave.jar
come from, the answer is that it is put there by Jenkins server when you have created slave agent via Jenkins UI. The jnlpUrl
tells an agent where the server is. The order in which agent and server are fired up seems to be important. Server first, agent second, otherwise agent may fail to start. I had this issue while using GUI mode launch via javaws
and yet to confirm if it’s true for headless mode. Still you have to start an agent manually if remote node machine reboots.
I have one solution to offer. It is not the best I can think of, but it’s the easiest and reasonably reliable to start with. You need to turn the headless slave launch command into a Launch Agent. The Launch Agent will start at the time of user’s login, so make sure the machine is configured for automatic login.
Setting up Launch Agent should become a usual drill for you after you deal with Mac-based CI for a while. Create a plist file in ~/Library/LaunchAgents
, name it what you like, for example org.jenkins-agent-a.plist
and put the following content in it.
The /Shared/Users/Jenkins-Agent-A
is your agent’s home. You should have create one when setting up agent via server UI and slave.jar
should be already located in this folder. Now if agent machine reboots and autologin is configured, the agent will go back online automatically. If the server reboots though, I’m not quite sure what happens, my assumption is that agent will stay alive and will keep trying to reconnect to server and finally they both happily reunite. I’m yet to test how exactly it works in reality.
To manually start and stop an agent use following commands (typealias if you need to use them often)
One additional note. You can run a remote agent on localhost, which technically makes it not remote any more. This may be useful when for some reason Jenkins server is launched under non-login user session (Launch Daemon again) and you can’t use default master node to run unit tests.
Set Ci Up For Mac Desktop
That sums it up. To compare how things are in Bamboo universe check out this post.