public int Execute(Dictionary <string, string> argsLc, Dictionary <string, string> argsCased) { var titleId = GetTitleId(argsLc); var buildIdentifier = JenkinsConsoleUtility.GetArgVar(argsLc, "buildidentifier"); var workspacePath = JenkinsConsoleUtility.GetArgVar(argsLc, "workspacePath", Environment.GetEnvironmentVariable("TEMP")); var timeout = TimeSpan.FromSeconds(int.Parse(JenkinsConsoleUtility.GetArgVar(argsLc, "timeout", "30"))); verbose = bool.Parse(JenkinsConsoleUtility.GetArgVar(argsLc, "verbose", "false")); _getRequest = new CsGetRequest { customId = buildIdentifier }; JenkinsConsoleUtility.FancyWriteToConsole("Begin CloudScriptListener", null, ConsoleColor.Gray); var returnCode = Login(titleId, buildIdentifier); if (returnCode != 0) { return(returnCode); } returnCode = WaitForTestResult(timeout); if (returnCode != 0) { return(returnCode); } JenkinsConsoleUtility.FancyWriteToConsole("Test data found", null, ConsoleColor.Gray); returnCode = FetchTestResult(buildIdentifier, workspacePath); if (returnCode != 0) { return(returnCode); } JenkinsConsoleUtility.FancyWriteToConsole("Test data received", null, ConsoleColor.Green); return(0); }
public int Execute(Dictionary <string, string> args) { string titleId = GetArgVar(args, "titleId"); string buildIdentifier = GetArgVar(args, "buildidentifier"); string workspacePath = GetArgVar(args, "workspacePath", Environment.GetEnvironmentVariable("TEMP")); TimeSpan timeout = TimeSpan.FromSeconds(int.Parse(GetArgVar(args, "timeout", "30"))); _getRequest = new CsGetRequest { customId = buildIdentifier }; int returnCode; JenkinsConsoleUtility.FancyWriteToConsole("Begin CloudScriptListener", null, ConsoleColor.Gray); returnCode = Login(titleId, buildIdentifier); if (returnCode != 0) { return(returnCode); } JenkinsConsoleUtility.FancyWriteToConsole("Login successful", null, ConsoleColor.Gray); returnCode = WaitForTestResult(timeout); if (returnCode != 0) { return(returnCode); } JenkinsConsoleUtility.FancyWriteToConsole("Test data found", null, ConsoleColor.Gray); returnCode = FetchTestResult(buildIdentifier, workspacePath); if (returnCode != 0) { return(returnCode); } JenkinsConsoleUtility.FancyWriteToConsole("Test data received", null, ConsoleColor.Green); return(0); }
public int Execute(Dictionary <string, string> argsLc, Dictionary <string, string> argsCased) { string destFile, workspacePath; JenkinsConsoleUtility.TryGetArgVar(out destFile, argsLc, "destFile"); JenkinsConsoleUtility.TryGetArgVar(out workspacePath, argsLc, "workspacePath"); var sdkName = JenkinsConsoleUtility.GetArgVar(argsLc, "sdkName"); var sdkGenKey = GetSdkGenKey(sdkName); if (argsLc.ContainsKey("apispecpath")) { _apiSpecPath = JenkinsConsoleUtility.GetArgVar(argsLc, "apiSpecPath"); } else if (argsLc.ContainsKey("apispecgiturl")) { _apiSpecGitUrl = JenkinsConsoleUtility.GetArgVar(argsLc, "apiSpecGitUrl"); } else if (argsLc.ContainsKey("apispecpfurl")) { _apiSpecPfUrl = JenkinsConsoleUtility.GetArgVar(argsLc, "apiSpecPfUrl"); } else { JenkinsConsoleUtility.FancyWriteToConsole("Api-Spec input not defined. Please input one of: apiSpecPath, apiSpecGitUrl, apiSpecPfUrl"); return(1); } var versionJson = GetApiJson("SdkManualNotes.json"); var sdkNotes = JsonWrapper.DeserializeObject <SdkManualNotes>(versionJson); if (!sdkNotes.sdkVersion.TryGetValue(sdkGenKey, out sdkVersionString)) { JenkinsConsoleUtility.FancyWriteToConsole("SdkManualNotes.json does not contain: " + sdkGenKey); JenkinsConsoleUtility.FancyWriteToConsole("SdkManualNotes.json:\n" + versionJson); return(1); } var sdkPieces = sdkVersionString.Split('.'); major = sdkPieces[0]; minor = sdkPieces[1]; date = sdkPieces[sdkPieces.Length - 1]; set = true; // Write this to a Jenkins environment variable file, if defined if (!string.IsNullOrEmpty(destFile)) { using (var outputFile = new StreamWriter(Path.Combine(workspacePath, destFile))) { outputFile.WriteLine("sdkVersion = " + sdkVersionString); outputFile.WriteLine("sdkDate = " + date); JenkinsConsoleUtility.FancyWriteToConsole("sdkVersion = " + sdkVersionString); JenkinsConsoleUtility.FancyWriteToConsole("sdkDate = " + date); } } return(0); }
public int Execute(Dictionary <string, string> argsLc, Dictionary <string, string> argsCased) { var taskName = JenkinsConsoleUtility.GetArgVar(argsLc, "taskName"); List <Process> hitList = new List <Process>(); hitList.AddRange(Process.GetProcessesByName(taskName)); foreach (var eachProcess in hitList) { JenkinsConsoleUtility.FancyWriteToConsole("Closing task: " + eachProcess.ProcessName, null, ConsoleColor.Yellow); eachProcess.CloseMainWindow(); // Gently close the target so they don't throw error codes } // Sleep for a while and wait for the programs to close safely var openCount = hitList.Count; for (var i = 0; i < TASK_KILL_DELAY_MS; i += TASK_KILL_SLEEP_MS) { Thread.Sleep(TASK_KILL_SLEEP_MS); openCount = 0; foreach (var eachProcess in hitList) { if (!eachProcess.HasExited) { openCount += 1; } } if (openCount == 0) { break; } } // Time's up, close everything foreach (var eachProcess in hitList) { if (eachProcess.HasExited) { continue; // Finished skip it } JenkinsConsoleUtility.FancyWriteToConsole("Killing task: " + eachProcess.ProcessName, null, ConsoleColor.Red); eachProcess.Kill(); // If it didn't close gently, then close it better. } if (hitList.Count == 0) { JenkinsConsoleUtility.FancyWriteToConsole("No tasks to kill: " + taskName, null, ConsoleColor.Red); } return(hitList.Count > 0 ? 0 : 1); }
public int Execute(Dictionary <string, string> inputs) { string taskName; if (!inputs.TryGetValue("taskname", out taskName)) { return(1); } var processes = Process.GetProcessesByName(taskName); foreach (var process in processes) { JenkinsConsoleUtility.FancyWriteToConsole("Killing task: " + process.ProcessName, null, ConsoleColor.Magenta); process.Kill(); } return(processes.Length > 0 ? 0 : 1); }
/// <summary> /// Loop and poll for the expected test results /// </summary> private static int WaitForTestResult(TimeSpan timeout) { var now = DateTime.UtcNow; var expireTime = now + timeout; var resultsReady = false; while (now < expireTime && !resultsReady) { string errorReport; var callResult = ExecuteCloudScript(CsFuncTestDataExists, _getRequest, out resultsReady, out errorReport); if (callResult == false) { return(1); // The cloudscript call failed } Thread.Sleep(TestDataExistsSleepTime); now = DateTime.UtcNow; JenkinsConsoleUtility.FancyWriteToConsole("Test results ready: " + resultsReady, null, ConsoleColor.Gray); } return(resultsReady ? 0 : 1); }
private static int Login(string titleId, string buildIdentifier) { PlayFabSettings.TitleId = titleId; var task = PlayFabClientAPI.LoginWithCustomIDAsync(new LoginWithCustomIDRequest { TitleId = titleId, CustomId = buildIdentifier, CreateAccount = true }); task.Wait(); var returnCode = PlayFabClientAPI.IsClientLoggedIn() ? 0 : 1; if (returnCode != 0) { JenkinsConsoleUtility.FancyWriteToConsole("Failed to log in using CustomID: " + titleId + ", " + buildIdentifier, null, ConsoleColor.Red); JenkinsConsoleUtility.FancyWriteToConsole(PlayFabUtil.GetErrorReport(task.Result.Error), null, ConsoleColor.Red); } else { JenkinsConsoleUtility.FancyWriteToConsole("Login successful, PlayFabId: " + task.Result.Result.PlayFabId, null, ConsoleColor.Gray); } return(returnCode); }
private static string GetArgVar(Dictionary <string, string> args, string key, string getDefault = null) { string output; bool found = args.TryGetValue(key.ToLower(), out output); if (found) { return(output); } if (getDefault != null) { JenkinsConsoleUtility.FancyWriteToConsole("WARNING: " + key + " not found, reverting to: " + getDefault, null, ConsoleColor.DarkYellow); return(getDefault); } string msg = "ERROR: Required parameter: " + key + " not found"; JenkinsConsoleUtility.FancyWriteToConsole(msg, null, ConsoleColor.Red); throw new Exception(msg); }
public int Execute(Dictionary <string, string> argsLc, Dictionary <string, string> argsCased) { var sdkName = JenkinsConsoleUtility.GetArgVar(argsCased, "sdkName"); var credsFilename = JenkinsConsoleUtility.GetArgVar(argsLc, "GITHUB_CREDENTIALS_FILE"); if (!VersionVarWriter.set || !File.Exists(credsFilename)) { return(1); } var credsJson = File.ReadAllText(credsFilename); var creds = JsonWrapper.DeserializeObject <GitHubCredentials>(credsJson); try { var header = new ProductHeaderValue(ProgramHeader); var client = new GitHubClient(header); client.Credentials = new Credentials(creds.token); var releaseRequest = new GitHubReleaseRequest(sdkName, VersionVarWriter.major, VersionVarWriter.minor, VersionVarWriter.date); var result = client.Repository.Release.Create(GitOwner, sdkName, releaseRequest).Result; if (!SeemsLegit(result, releaseRequest)) { return(1); } var sdkRepo = client.Repository.Get(GitOwner, sdkName).Result; JenkinsConsoleUtility.FancyWriteToConsole(sdkRepo.CloneUrl, null, ConsoleColor.Green); } catch (AggregateException agEx) { foreach (var e in agEx.InnerExceptions) { JenkinsConsoleUtility.FancyWriteToConsole(e.ToString(), null, ConsoleColor.Red); } return(1); } return(0); }