-
Install Jenkins: https://www.jenkins.io/download/lts/macos/
-
brew services restart jenkins-lts
-
After starting the Jenkins service, browse to http://localhost:8080
-
Install Jenkins Plugins
- Unity3d
- Generic Webhook Trigger Plugin
-
Install ngrok to expose a local web server to the internet
Create an editor method in Unity that does the iOS building
using UnityEditor;
using System.Collections.Generic;
class ExportTool {
static void ExportXcodeProject() {
EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTarget.iOS);
EditorUserBuildSettings.symlinkLibraries = true;
EditorUserBuildSettings.development = true;
EditorUserBuildSettings.allowDebugging = true;
string[] args = System.Environment.GetCommandLineArgs();
string buildType = "";
for (int i = 0; i < args.Length; i++) {
if (args[i] == "-buildType") {
buildType = args[i + 1];
if (buildType == "Debug") {
EditorUserBuildSettings.iOSBuildConfigType = iOSBuildType.Debug;
} else {
EditorUserBuildSettings.iOSBuildConfigType = iOSBuildType.Release;
}
}
}
List < string > scenes = new List < string > ();
for (int i = 0; i < EditorBuildSettings.scenes.Length; i++) {
if (EditorBuildSettings.scenes[i].enabled) {
scenes.Add(EditorBuildSettings.scenes[i].path);
}
}
BuildPipeline.BuildPlayer(scenes.ToArray(), "iOSProj", BuildTarget.iOS, BuildOptions.None);
}
}
If i look in the workspace of the job, the file which was selected as a parameter hasn't bee uploaded into the workspace, this is the bug.
https://issues.jenkins.io/browse/JENKINS-47333
https://github.com/MarkEWaite/jenkins-bugs/blob/JENKINS-47333/Jenkinsfile#L11
Alternative solution: Added string parameter
stages {
stage('iOS Build') {
steps {
...
}
}
stage('iOS Archive & Update exportOptions.plist') {
steps {
...
}
}
stage('iOS iPA') {
steps {
...
}
}
}
post {
always {
archiveArtifacts artifacts: 'outputFolder/**/*.*'
}
success {
script {
...
}
}
}
}
ipa file is distributed via appcircle cli after successful build. Download appcircle cli -> https://github.com/appcircleio/appcircle-cli