public static async Task StartPerf(ILogger logger)
 {
     AppVeyorClient client = new AppVeyorClient(logger);
     await client.StartBuild(new Build()
     {
         Branch      = Environment.GetEnvironmentVariable("PerformanceBranch", EnvironmentVariableTarget.Process),
         ProjectSlug = Environment.GetEnvironmentVariable("PerformanceProjectSlug", EnvironmentVariableTarget.Process),
         Artifact    = "inproc",
         JobName     = "Image: Visual Studio 2017"
     });
 }
Ejemplo n.º 2
0
        public static async Task <IActionResult> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log)
        {
            log.LogInformation($"Performance tests were started by http trigger at: {DateTime.Now}");

            await AppVeyorClient.StartPerf(log);

            return(new ContentResult()
            {
                Content = "Build started",
                ContentType = "text/html",
            });
        }
Ejemplo n.º 3
0
        public static async Task Execute(string testIds, ILogger log)
        {
            string clientId          = Environment.GetEnvironmentVariable("AzureWebJobsTargetSiteApplicationId", EnvironmentVariableTarget.Process);
            string clientSecret      = Environment.GetEnvironmentVariable("AzureWebJobsTargetSiteClientSecret", EnvironmentVariableTarget.Process);
            string tenantId          = Environment.GetEnvironmentVariable("AzureWebJobsTargetSiteTenantId", EnvironmentVariableTarget.Process);
            string subscriptionId    = Environment.GetEnvironmentVariable("AzureWebJobsTargetSiteSubscriptionId", EnvironmentVariableTarget.Process);
            string siteResourceGroup = Environment.GetEnvironmentVariable("AzureWebJobsTargetSiteResourceGroup", EnvironmentVariableTarget.Process);
            string vm = Environment.GetEnvironmentVariable("AzureWebJobsVM", EnvironmentVariableTarget.Process);
            string functionsHostSlug    = Environment.GetEnvironmentVariable("FunctionHostProjectSlug", EnvironmentVariableTarget.Process);
            string performanceMeterSlug = Environment.GetEnvironmentVariable("PerformanceProjectSlug", EnvironmentVariableTarget.Process);
            string extensionUrl         = string.Empty;
            string appUrl = string.Empty;

            using (var appVeyorClient = new AppVeyorClient(log))
            {
                // Get latest private extension url from appvayor build
                string lastSuccessfulVersion = await appVeyorClient.GetLastSuccessfulBuildVersionAsync("dev", functionsHostSlug);

                extensionUrl = await appVeyorClient.GetArtifactUrlAsync(lastSuccessfulVersion, functionsHostSlug, "Image: Visual Studio 2017", "inproc");

                appUrl = await appVeyorClient.GetArtifactUrlAsync(lastSuccessfulVersion, functionsHostSlug, "Image: Visual Studio 2017", "WebJobs.Script.Performance.App");
            }

            var authenticationContext = new AuthenticationContext($"https://login.windows.net/{tenantId}");
            var credential            = new ClientCredential(clientId, clientSecret);
            var result = await authenticationContext.AcquireTokenAsync("https://management.core.windows.net/", credential);

            if (result == null)
            {
                throw new AuthenticationException("Failed to obtain the JWT token");
            }

            var credentials = new TokenCredentials(result.AccessToken);

            using (var client = new ComputeManagementClient(credentials))
            {
                client.SubscriptionId = subscriptionId;
                string command = string.IsNullOrEmpty(testIds) ? string.Empty : $"-t {testIds}";
                command += string.IsNullOrEmpty(extensionUrl) ? string.Empty : $" -r {extensionUrl}";
                await VirtualMachinesOperationsExtensions.BeginRunCommandAsync(client.VirtualMachines, siteResourceGroup, vm,
                                                                               new RunCommandInput("RunPowerShellScript",
                                                                                                   new List <string>()
                {
                    $"& 'C:\\Tools\\ps\\run.ps1' '{appUrl}' '{command}'"
                }));
            }
        }
        public static async Task Run([TimerTrigger("0 0 14 * * *")] TimerInfo myTimer, ILogger log)
        {
            log.LogInformation($"Performance tests were started by timer trigger at: {DateTime.Now}");

            await AppVeyorClient.StartPerf(log);
        }