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);
        }
示例#5
0
        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);
        }