Using Jenkins to Create a Mobile CI server on macOS for Android
It now lives at jenkins-android.local
, which is 10.200.35.50
. username ci
, password *
for VNC.
Jenkins username jenkins
, password $$$$$
Mac Mini Rebuild
Username ci
, Password $$$$$
Homebrew
Install Homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Also, Homebrew got broke in 2016-08-11, so do a cd $(brew --repo); git fetch; git reset --hard origin/master
to fix it.
Then Install Apps
brew install wget
brew cask install java
brew install jenkins
brew services start jenkins
Which install jenkins
2.11
Migrated all jobs
from OSX:/Users/Shared/Jenkins/Home/jobs
to /Users/ci/.jenkins/jobs
. This is do by simple copying.
Then do a Jenkins -> Refresh From Disk & install any missing extensions.
- All jobs installed on the Mac. I’ve installed the latest Android SDK & various tools that it looks like the builds need.
- Used my company GitHub credentials as I don’t know amy of the others.
- I know there will be other things needed, but the basics are there.
- I also migrated all the old logs & runs etc.
- Also upgraded Jenkins from
1.6.xxx
to2.11
(Which is the same as the iOS dev box). - New node name -
jenkins-android.local
, AKA10.200.35.50
- I’ll migrate to Docker instance post holiday.
Issues
Jenkins only accessible locally.
If you can only login to Jenkins from localhost:8080
then the jenkins.plist
needs editing to change the httpListenAddress
from 127.0.0.1
to 0.0.0.0
The Plist is here - ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>homebrew.mxcl.jenkins</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/java</string>
<string>-Dmail.smtp.starttls.enable=true</string>
<string>-jar</string>
<string>/usr/local/opt/jenkins/libexec/jenkins.war</string>
<string>--httpListenAddress=0.0.0.0</string>
<string>--httpPort=8080</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Network issues are stopping Android SDK update on Mac Mini
android update sdk --no-ui` fails with File-Not-Found (404).
If not resolved before I leave then someone needs to do the following:
From terminal
-
ssh -Y -l ci 10.200.35.50
sudo android update sdk --no-ui
Or use Screen Sharing
to login to 10.200.35.50
as ci
user, start a terminal session & do sudo android sdk
to install from the UI.
Jenkins
Updated to 1.642.4
sudo chown root:wheel
/Applications/Jenkins
Jenkins Stability
Jenkins is significantly more stable now.
The issue with builds hanging waiting for password entry has been resolved via the Fastlane
unlock_keychain
command.
Use of AWS Device Farm
A Jenkins Test Job (AWS_Test_01) has been created which has successfully uploaded & tested Oletha’s XCtest code.
NOTE That is is currently only uploaded & testing the .ipa
files, they are not being build by the Jenkins job.
This test job is using my personal AWS account, so I’ll only be running occasional testing - $$$’s and all that.