/// <summary> /// Jenkins に渡すパラメータを生成する /// </summary> /// <param name="buildTarget">ビルドターゲット</param> /// <returns>Jenkins に渡すパラメータ</returns> private static Dictionary <string, string> GenerateParameters(BuildTarget buildTarget) { return(new Dictionary <string, string>() { { "requested_user", JenkinsSetting.GetOrDefault().SlackUserName }, { "repository", GetCurrentRepositoryName() }, { "branch", GetCurrentBranchName() }, { "platform", buildTarget.ToString() }, { "editor_version", Application.unityVersion }, { "development_build", EditorUserBuildSettings.development.ToString() }, }); }
/// <summary> /// Jenkins にビルドリクエストを発行する /// </summary> /// <param name="jobType">ジョブ種別</param> /// <param name="buildTarget">ビルドターゲット</param> public static void SendBuildRequest(JobType jobType, BuildTarget buildTarget) { if (!IsValid(jobType)) { return; } ObservableUnityWebRequest.Post(Path.Combine(Path.Combine(JenkinsSetting.GetOrDefault().BaseURL, JOB_NAME_MAP[jobType]), "buildWithParameters"), GenerateParameters(buildTarget), GenerateRequestHeader()).Subscribe( (_) => { Debug.Log("Build request sent to Jenkins."); }, (ex) => { Debug.Log("Could not send build request to Jenkins: " + ex.Message); } ); }
/// <summary> /// Jenkins にビルドリクエストを発行可能かどうか /// </summary> /// <param name="jobType">ジョブ種別</param> /// <returns>true: 発行可能 / false: 発行不可能</returns> private static bool IsValid(JobType jobType) { bool result = true; if (string.IsNullOrEmpty(JenkinsSetting.GetOrDefault().SlackUserName)) { Debug.LogError("Slack のユーザ名称を設定してください。"); result = false; } if (string.IsNullOrEmpty(JenkinsSetting.GetOrDefault().UserId)) { Debug.LogError("Jenkins のユーザ ID を設定してください。"); result = false; } if (string.IsNullOrEmpty(JenkinsSetting.GetOrDefault().Password)) { Debug.LogError("Jenkins のパスワードを設定してください。"); result = false; } if (jobType == JobType.Player && string.IsNullOrEmpty(JenkinsSetting.GetOrDefault().JobNameForPlayer)) { Debug.LogError("Jenkins の Player ビルド用ジョブ名称を設定してください。"); result = false; } if (jobType == JobType.AssetBundle && string.IsNullOrEmpty(JenkinsSetting.GetOrDefault().JobNameForAssetBunde)) { Debug.LogError("Jenkins の AssetBundle ビルド用ジョブ名称を設定してください。"); result = false; } if (result) { JOB_NAME_MAP[JobType.Player] = JenkinsSetting.GetOrDefault().JobNameForPlayer; JOB_NAME_MAP[JobType.AssetBundle] = JenkinsSetting.GetOrDefault().JobNameForAssetBunde; } return(result); }
/// <summary> /// Jenkins に渡すリクエストヘッダを生成する /// </summary> /// <returns>Jenkins に渡すリクエストヘッダ</returns> private static Dictionary <string, string> GenerateRequestHeader() { return(new Dictionary <string, string>() { { "Authorization", "Basic " + System.Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(string.Format("{0}:{1}", JenkinsSetting.GetOrDefault().UserId, JenkinsSetting.GetOrDefault().Password))) }, }); }