/// <summary>
        /// Performs all steps required for the secure publish including building, resolving deployment settings, resolving key vault, and deploying files and custom activities to Azure.
        /// </summary>
        public async Task BuildAndSecurePublish(string projectPath, DataFactoryInfo dataFactory)
        {
            string dataFactoryName          = dataFactory.Name;
            string dataFactoryResourceGroup = dataFactory.ResourceGroup;

            AdfBuild build = new AdfBuild(logger);

            Task <bool> buildTask          = build.Build(projectPath);
            Task        schemaDownloadTask = adfFileHelper.GetSchemas(httpClient);

            bool  buildResult = await buildTask;
            await schemaDownloadTask;


            if (buildResult)
            {
                // Only debug builds are currently supported by the ADF build process
                string adfOutputFolder = Path.Combine(Path.GetDirectoryName(projectPath), @"bin\debug");

                var publishResult = await PublishFromOutputFolder(adfOutputFolder, dataFactoryResourceGroup, dataFactoryName);

                if (publishResult)
                {
                    logger.Write(string.Empty);
                    logger.Write("Publish complete", "Black");
                    logger.Write(string.Empty);
                }
            }
            else
            {
                logger.Write("Build failed", "Red");
                logger.Write(string.Empty);
            }
        }
        public static async Task <List <DataFactoryInfo> > GetDataFactories(SettingsContext settingsContext)
        {
            var dataFactories = new List <DataFactoryInfo>();

            string uri =
                $"https://management.azure.com/subscriptions/{settingsContext.SubscriptionId}/resources?$filter=resourceType%20eq%20'Microsoft.DataFactory%2Fdatafactories'&api-version=2014-04-01-preview";
            HttpResponseMessage response = await ExecuteArmRequest(settingsContext, HttpMethod.Get, uri);

            string responseText = response.Content.ReadAsStringAsync().Result;

            var jObject = JObject.Parse(responseText);

            var itemArray = jObject["value"] as JArray;

            if (itemArray != null)
            {
                foreach (JToken jToken in itemArray)
                {
                    JObject item = jToken as JObject;

                    string id            = item?["id"].ToObject <string>();
                    string resourceGroup = string.Empty;

                    if (!string.IsNullOrEmpty(id))
                    {
                        resourceGroup = id.Split('/')[4];
                    }

                    DataFactoryInfo dfi = new DataFactoryInfo
                    {
                        SubscriptionId = settingsContext.SubscriptionId,
                        Location       = item?["location"].ToObject <string>(),
                        Name           = item?["name"].ToObject <string>(),
                        ResourceGroup  = resourceGroup
                    };

                    dataFactories.Add(dfi);
                }
            }

            return(dataFactories);
        }
Esempio n. 3
0
        private async void publishButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                publishButton.IsEnabled = false;
                Write("Starting Secure Publish", "Black");
                Write(string.Empty);

                DataFactoryInfo choosenDataFactory = dataFactoryList.Single(x => x.Name == dataFactory);

                await publishManager.BuildAndSecurePublish(projName, choosenDataFactory);
            }
            catch (Exception ex)
            {
                Write("An error occurred: " + ex.Message, "Red");
                WriteError(ex);
            }

            publishButton.IsEnabled = true;
        }