Giter Club home page Giter Club logo

kudu's People

Contributors

ahmelsayed avatar amitapl avatar ankitkumarr avatar balag0 avatar cscrosati avatar dannysongg avatar davidebbo avatar davidfowl avatar mathewc avatar mwtian-zz avatar nickwalkmsft avatar patelchandni avatar patricklee2 avatar pranavkm avatar purva-vasudeo avatar raquelsa avatar remcoros avatar richardprice avatar safihamid avatar shibayan avatar shobak101 avatar shpraka avatar shrishrirang avatar sitereactor avatar snobu avatar suwatch avatar tjanczuk avatar tohling avatar watashishun avatar xusun avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kudu's Issues

Enable Kudu to only act as a Git server

Since there's (AFAIK) no decent Git server for Windows, it would be nice if Kudu could be tuned to act as a git server, without the deployment scenarios enabled.

Support showing diff for changes before initial commit

When working with git repositories, after doing git init on a directory and viewing working changes, it doesn't show the diff. We should show all new files as added.

In any case, Kudu is the coolest project I ever worked on, and I wish I was still working on it.

Fix encoding issue with deployment log

Navigating to the log after a build that has a nuget install shows this.

Successfully installed 'jQuery 1.5.1'.
Attempting to resolve dependency 'jQuery (= 1.5.1)'.
Successfully installed 'jQuery.vsdoc 1.5.1'.
Attempting to resolve dependency 'jQuery (� 1.3.2)'.
Successfully installed 'jQuery.Validation 1.8.0.1'.
Attempting to resolve dependency 'jQuery (� 1.4.4 && < 1.6)'.
Successfully installed 'jQuery.UI.Combined 1.8.11'.
Successfully installed 'EntityFramework 4.1.10331.0'.

Repositories should be created on the fly if they don't exist

If we receive a git or hg push and don't have a repository at all for the app, we should create one on the fly. This way the user doesn't need to select the repo type when they create the app. They just push from git/hg, and it does the right thing.

But if there is already one of the wrong type, it should of course be an error.

Unable to determine which project file to build.

Hello,
I've tried to deploy Orchard CMS (downloaded here http://orchard.codeplex.com/downloads/get/461849) via git and got an error:

Preparing deployment for commit id 'c58fa61ebd'.

Unable to determine which project file to build. 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Markdown\Markdown.csproj,
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.Alias\Orchard.Alias.csproj
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.Autoroute\Orchard.Autoroute.csproj,
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.Autoroute\Specs\Orchard.Autoroute.Specs.csproj, 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.Blogs\Orchard.Blogs.csproj,
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.Comments\Orchard.Comments.csproj,
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.ContentPicker\Orchard.ContentPicker.csproj,
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.ContentTypes\Orchard.ContentTypes.csproj, 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.Fields\Orchard.Fields.csproj, 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.Fields\Specs\Orchard.Fields.Specs.csproj, 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.Forms\Orchard.Forms.csproj, 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.jQuery\Orchard.jQuery.csproj, 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.Media\Orchard.Media.csproj, 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.MediaPicker\Orchard.MediaPicker.csproj, 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.Modules\Orchard.Modules.csproj, 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.Packaging\Orchard.Packaging.csproj, 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.Pages\Orchard.Pages.csproj, 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.Projections\Orchard.Projections.csproj, 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.Projections\Tests\Orchard.Projections.Tests.csproj, 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.PublishLater\Orchard.PublishLater.csproj, 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.Recipes\Orchard.Recipes.csproj, 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.Roles\Orchard.Roles.csproj, 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.Rules\Orchard.Rules.csproj, 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.Scripting\Orchard.Scripting.csproj, 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.Setup\Orchard.Setup.csproj, 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.Tags\Orchard.Tags.csproj, 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.Themes\Orchard.Themes.csproj, 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.Tokens\Orchard.Tokens.csproj, 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.Tokens\Tests\Orchard.Tokens.Tests.csproj, 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.Users\Orchard.Users.csproj, 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.Warmup\Orchard.Warmup.csproj, 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\Orchard.Widgets\Orchard.Widgets.csproj, 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\TinyMce\TinyMce.csproj, 
 C:\DWASFiles\Sites\git111test\VirtualDirectory0\site\repository\Modules\UpgradeTo15\UpgradeTo15.csproj.

Do you know what's wrong?

Misleading error message when .deployment file points to .sln file

I'm trying to deploy a web application contained in a repository that also contains a large number of other projects and solutions. I have added a .deployment file to the repository, which has the following contents:

[config]
project = path/to/WebApp.sln

Whenever I push to Kudu, I get the following output:

S:\code [branch]> git push http://localhost:38361/foo.git HEAD:master
Counting objects: 1095, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (222/222), done.
Writing objects: 100% (1003/1003), 140.43 KiB, done.
Total 1003 (delta 876), reused 888 (delta 780)
remote: New deployment received.
remote: Updating branch 'master'.
remote: Preparing deployment for commit id 'cc924c7e35'.
remote: Exception has been thrown by the target of an invocation.
remote:    at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
remote:    at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
remote:    at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
remote:    at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
remote:    at Kudu.Core.Infrastructure.VsSolution.EnsureProjects() in S:\personal\kudu\Kudu.Core\Infrastructure\VsSolution.cs:line 65
remote:    at Kudu.Core.Infrastructure.VsSolution.get_Projects() in S:\personal\kudu\Kudu.Core\Infrastructure\VsSolution.cs:line 41
remote:    at Kudu.Core.Infrastructure.VsHelper.ExistsInSolution(VsSolution solution, String targetPath) in S:\personal\kudu\Kudu.Core\Infrastructure\VsHelper.cs:line 75
remote:    at Kudu.Core.Infrastructure.VsHelper.<>c__DisplayClass3.<FindContainingSolutions>b__2(VsSolution solution) in S:\personal\kudu\Kudu.Core\Infrastructure\VsHelper.cs:line 31
remote:    at System.Linq.Enumerable.WhereListIterator`1.MoveNext()
remote:    at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
remote:    at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
remote:    at Kudu.Core.Infrastructure.VsHelper.FindContainingSolutions(String searchPath, String targetPath) in S:\personal\kudu\Kudu.Core\Infrastructure\VsHelper.cs:line 30
remote:    at Kudu.Core.Deployment.SiteBuilderFactory.ResolveProject(String repositoryRoot, String targetPath, Boolean tryWebSiteProject, SearchOption searchOption, Boolean specificConfiguration) in S:\personal\kudu\Kudu.Core\Dremote: t\SiteBuilderFactory.cs:line 129
remote:    at Kudu.Core.Deployment.SiteBuilderFactory.CreateBuilder(ITracer tracer, ILogger logger) in S:\personal\kudu\Kudu.Core\Deployment\SiteBuilderFactory.cs:line 43
remote:    at Kudu.Core.Deployment.DeploymentManager.Build(String id, ITracer tracer, IDisposable deployStep) in S:\personal\kudu\Kudu.Core\Deployment\DeploymentManager.cs:line 399
remote: Error - Changes committed to remote repository but your website not updated.
To http://localhost:38361/foo.git
   76b7c76..cc924c7  HEAD -> master

Initially, I set the project path to point directly at the web project as stated here, but then changed it on a hunch: the code is failing in SolutionParser.ParseSolution(), and figured that would be correct if it was passed a project file! Unfortunately it's still failing even now I've pointed it at a solution file, so it's obviously something else.

I can't work out how to debug the problem any further. When I run Kudu from Visual Studio, and attach to the IIS worker process for the Kudu application I'm trying to deploy, none of my breakpoints ever get hit. The breakpoints are a solid red ball, indicating that symbols have been loaded for the class I'm trying to debug, and this only happens after I attach to the IIS worker process.

Some Windows SDK tools are missing, breaking some apps

This came from this thread. Also, it was issue 280 in the old issue list.

Repro: push this repo to an Azure Web Site.

Result: it fails with the following error:

remote: D:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2342,9): error MSB3086: Task could not find "AL.exe" using the SdkToolsPath "" or the registry key "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A". Make sure the SdkToolsPath is set and the tool exists in the correct processor specific location under the SdkToolsPath and that the Microsoft Windows SDK is installed [C:\DWASFiles\Sites\Mvc4AppWithResource\VirtualDirectory0\site\repository\Mvc4AppWithResource\Mvc4AppWithResource.csproj]
remote:
remote: Error - Changes committed to remote repository but your website not updated.

So far, we've heard of issues with the following tools:

  • al.exe (assembly linker)
  • lc.exe (license compiler)
  • sgen.exe (Xml Serialization support utility)
  • resgen (.NET Resource Generator)

Submodule support?

It looks like the repository Kudu creates for deployment does not init/update submodules (my submodules in myapp/live/repository are all empty folders). Am I just missing an option here?

Otherwise, I love it.

Display message at the end of 'git push' command

I think this is explain in 'git receive-pack --help' under the 'post-receive Hook' section. My guess is that anything you echo from $GIT_DIR/hooks/post-receive gets displayed by the git client.

Can't open with VS2010 ultimate edition

C:\Users\Andrius\Documents\GitHub\kudu\Kudu.Web\Kudu.Web.csproj : error : The project file 'C:\Users\Andrius\Documents\GitHub\kudu\Kudu.Web\Kudu.Web.csproj' cannot be opened.

The project type is not supported by this installation.

I checked the repo out with GH4W

Deployment should not try to delete generated files

I ran into a case where an app created some log file that it kept locked. When trying to deploy a new version, it caused a failure because we tried to delete that locked file.

It's a tricky issue because it's valid for an app to create such files and we should not delete them, even if we could. But OTOH, if a file was previously in source control and is removed, it's the correct thing to do to remove it from the web folder.

What's hard is to tell those two cases apart. One potential way is to use both the current and the new deployment folder to add some smarts. i.e. only delete files that existed in the current deployment.

[node.js] Deploy with no node_modules installs dev dependencies

This was filed by @izevaka in tjanczuk/git-azure#41. Moving to kudu repo.


When I deploy a package, devDependencies get installed as well. Below is my package.json file:

{
"author": "Igor Zevaka [email protected]",
"name": "runheat",
"description": "Runkeeper heat map",
"version": "0.0.0-8",
"repository": {
"url": ""
},
"main": "app.js",
"dependencies": {
"express": "2.5.9",
"xml2js": "",
"libxmljs" : "",
"jade": "0.26.1",
"sqlite3": "2.1.1",
"oauth": "0.9.7"
},
"devDependencies": {
"jasmine-node": "1.0.26",
"supervisor": "0.3.3",
"jslint": "0.1.8"
},
"optionalDependencies": {},
"engines": {
"node": "0.6.x"
},
"scripts": {
"pretest": "node_modules/.bin/jslint *.js static/js/script.js --color",
"test": "node_modules/.bin/jasmine-node spec || cat /dev/null",
"start": "node app.js"
},
"subdomain": "runheat"
}

Here is NPM log. Note that dependencies specified in devDependencies get installed as well (Failing in jasmine-node is another issue all together - but it shouldn't be installed in the first place).

remote: New deployment received.
remote: Updating branch 'master'.
remote: ...
remote: Preparing deployment for commit id '343ac20c1d'.
remote: Preparing files for deployment.
remote: Running NPM.
remote: npm http GET http://registry.npmjs.org/xml2js
remote: npm http GET http://registry.npmjs.org/libxmljs
remote: npm http GET http://registry.npmjs.org/jade/0.26.1
remote: npm http GET http://registry.npmjs.org/sqlite3/2.1.1
remote: npm http GET http://registry.npmjs.org/oauth/0.9.7
remote: npm http GET http://registry.npmjs.org/jasmine-node/1.0.26
remote: npm http GET http://registry.npmjs.org/supervisor/0.3.3
remote: npm http GET http://registry.npmjs.org/jslint/0.1.8
remote: npm http GET http://registry.npmjs.org/express/2.5.9
remote: npm http 200 http://registry.npmjs.org/sqlite3/2.1.1
remote: npm http 200 http://registry.npmjs.org/oauth/0.9.7
remote: npm http GET http://registry.npmjs.org/sqlite3/-/sqlite3-2.1.1.tgz
remote: npm http GET http://registry.npmjs.org/oauth/-/oauth-0.9.7.tgz
remote: npm http 200 http://registry.npmjs.org/xml2js
remote: npm http 200 http://registry.npmjs.org/jasmine-node/1.0.26
remote: npm http GET http://registry.npmjs.org/xml2js/-/xml2js-0.1.14.tgz
remote: npm http GET http://registry.npmjs.org/jasmine-node/-/jasmine-node-1.0.26.tgz
remote: npm http 200 http://registry.npmjs.org/jslint/0.1.8
remote: npm http 200 http://registry.npmjs.org/supervisor/0.3.3
remote: npm http GET http://registry.npmjs.org/jslint/-/jslint-0.1.8.tgz
remote: npm http 200 http://registry.npmjs.org/sqlite3/-/sqlite3-2.1.1.tgz
remote: npm http GET http://registry.npmjs.org/supervisor/-/supervisor-0.3.3.tgz
remote: npm http 200 http://registry.npmjs.org/oauth/-/oauth-0.9.7.tgz
remote: npm http 200 http://registry.npmjs.org/express/2.5.9
remote: npm http 200 http://registry.npmjs.org/xml2js/-/xml2js-0.1.14.tgz
remote: npm http GET http://registry.npmjs.org/express/-/express-2.5.9.tgz
remote: npm http 200 http://registry.npmjs.org/jasmine-node/-/jasmine-node-1.0.26.tgz
remote: npm http 200 http://registry.npmjs.org/jslint/-/jslint-0.1.8.tgz
remote: npm http 200 http://registry.npmjs.org/supervisor/-/supervisor-0.3.3.tgz
remote: npm http 200 http://registry.npmjs.org/libxmljs
remote: npm http 200 http://registry.npmjs.org/jade/0.26.1
remote: npm http 200 http://registry.npmjs.org/express/-/express-2.5.9.tgz
remote: npm http GET http://registry.npmjs.org/libxmljs/-/libxmljs-0.5.4.tgz
remote: npm http GET http://registry.npmjs.org/jade/-/jade-0.26.1.tgz
remote: npm http 200 http://registry.npmjs.org/libxmljs/-/libxmljs-0.5.4.tgz
remote: npm http 200 http://registry.npmjs.org/jade/-/jade-0.26.1.tgz
remote: npm WARN excluding symbolic link lib\index.js -> jade.js
remote: npm ERR! error rolling back [email protected] Error: EPERM, stat 'C:\DWASFiles\Sites\runheat2\VirtualDirectory0\site\wwwroot\node_modules\jasmine-node'
remote: 
remote: npm ERR! Error: EPERM, stat 'C:\DWASFiles\Sites\runheat2\VirtualDirectory0\site\wwwroot\node_modules\jasmine-node'
remote: npm ERR! 
remote: npm ERR! Please try running this command again as root/Administrator.
remote: npm ERR! 
remote: npm ERR! System Windows_NT 6.1.7601
remote: npm ERR! command "D:\Program Files (x86)\nodejs\\node.exe" "D:\Program Files (x86)\nodejs\node_modules\npm\bin\npm-cli.js" "install"
remote: npm ERR! cwd C:\DWASFiles\Sites\runheat2\VirtualDirectory0\site\wwwroot
remote: npm ERR! node -v v0.6.17
remote: npm ERR! npm -v 1.1.21
remote: npm ERR! path C:\DWASFiles\Sites\runheat2\VirtualDirectory0\site\wwwroot\node_modules\jasmine-node
remote: npm ERR! code EPERM
remote: npm ERR! message EPERM, stat 'C:\DWASFiles\Sites\runheat2\VirtualDirectory0\site\wwwroot\node_modules\jasmine-node'
remote: npm ERR! errno {}
remote: npm ERR! error rolling back [email protected] Error: EPERM, stat 'C:\DWASFiles\Sites\runheat2\VirtualDirectory0\site\wwwroot\node_modules\supervisor'
remote: npm ERR! error rolling back [email protected] Error: EPERM, stat 'C:\DWASFiles\Sites\runheat2\VirtualDirectory0\site\wwwroot\node_modules\oauth'
remote: npm ERR! error rolling back [email protected] Error: EPERM, stat 'C:\DWASFiles\Sites\runheat2\VirtualDirectory0\site\wwwroot\node_modules\express'
remote: npm ERR! error rolling back [email protected] Error: EPERM, stat 'C:\DWASFiles\Sites\runheat2\VirtualDirectory0\site\wwwroot\node_modules\libxmljs'
remote: npm ERR! error rolling back [email protected] Error: EPERM, stat 'C:\DWASFiles\Sites\runheat2\VirtualDirectory0\site\wwwroot\node_modules\xml2js'
remote: npm ERR! error rolling back [email protected] Error: EPERM, stat 'C:\DWASFiles\Sites\runheat2\VirtualDirectory0\site\wwwroot\node_modules\jade'
remote: npm ERR! error rolling back [email protected] Error: EPERM, stat 'C:\DWASFiles\Sites\runheat2\VirtualDirectory0\site\wwwroot\node_modules\sqlite3'
remote: npm ERR! error rolling back [email protected] Error: EPERM, stat 'C:\DWASFiles\Sites\runheat2\VirtualDirectory0\site\wwwroot\node_modules\jslint'
remote: npm ERR! 
remote: npm ERR! Additional logging details can be found in:
remote: npm ERR! C:\DWASFiles\Sites\runheat2\VirtualDirectory0\site\wwwroot\npm-debug.log
remote: SetConsoleTitleW: The operation completed successfully.
remote: 
remote: 
remote: Error - Changes committed to remote repository but your website not updated.

Create in ApplicationController throws Exception

This is the exception I get:

{System.Runtime.InteropServices.COMException (0x80040154): Die COM-Klassenfactory für die Komponente mit CLSID {2B72133B-3F5B-4602-8952-803546CE3344} konnte aufgrund des folgenden Fehlers nicht abgerufen werden: 80040154 Klasse nicht registriert (Ausnahme von HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
   bei System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType objectType)
   bei System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(RuntimeType serverType)
   bei System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(RuntimeType serverType, Object[] props, Boolean bNewObj)
   bei System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
   bei System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache)
   bei System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache)
   bei System.Activator.CreateInstance[T]()
   bei Microsoft.Web.Administration.ConfigurationManager.CreateAdminManager[TClass,TInterface](WebConfigurationMap webConfigMap, Boolean isAdminConfig)
   bei Microsoft.Web.Administration.ConfigurationManager.CreateWritableAdminManager(WebConfigurationMap webConfigMap, String configPathToEdit, Boolean isAdminConfig)
   bei Microsoft.Web.Administration.ConfigurationManager.CreateConfiguration(WebConfigurationMap configMap, String configPathToEdit, Boolean isAdminConfig)
   bei Microsoft.Web.Administration.ConfigurationManager.GetConfiguration(String rawConfigurationPath, String cacheKey, Boolean isAdminConfig)
   bei Microsoft.Web.Administration.ConfigurationManager.GetApplicationHostConfiguration()
   bei Microsoft.Web.Administration.ServerManager.GetApplicationHostConfiguration()
   bei Microsoft.Web.Administration.ServerManager.get_ApplicationPoolsSection()
   bei Microsoft.Web.Administration.ServerManager.get_ApplicationPools()
   bei Kudu.SiteManagement.SiteManager.DeleteSite(String applicationName) in C:\git\kudu\Kudu.SiteManagement\SiteManager.cs:Zeile 113.
   bei Kudu.SiteManagement.SiteManager.CreateSite(String applicationName) in C:\git\kudu\Kudu.SiteManagement\SiteManager.cs:Zeile 71.
   bei Kudu.Web.Controllers.ApplicationController.Create(ApplicationViewModel appViewModel) in C:\git\kudu\Kudu.Web\Controllers\ApplicationController.cs:Zeile 87.}

I'm running it locally from Visual Studio (as an administrator)

It would be also great to have some basic documentation on how to get started. In one of the first versions I was able to simply point to a git repository on the filesystem and things worked fine. However this option seems to be gone and creating an application didn't work for me so far since I'm running into this error.

Expand the max request size for JSON result

Viewing some diffs show an error message saying max length exceeded due to very large JSON responses. Either configure a larger size or replace Json serialization with JSON.NET.

Use different deployment id

Right now we link changesets to deployments by using the same id. We can still have that metadata but we need to use a different id for deployment so that we can start doing things like logging as soon as a deployment is kicked off.

Repositories should be created on the fly if they don't exist

If we receive a git or hg push and don't have a repository at all for the app, we should create one on the fly. This way the user doesn't need to select the repo type when they create the app. They just push from git/hg, and it does the right thing.

But if there is already one of the wrong type, it should of course be an error.

Kudu.exe not firing when path contains spaces

The post commit hook to execute kudu.exe was not firing when the path contained spaces (or perhaps was too long??).

Path: D:\Data\ben\Projects\OSS Projects\kudu\Kudu.Services.Web\bin\kudu.exe

After moving to:

D:\Data\Ben\Desktop\kudu\Kudu.Services\bin\kudu.exe

The hook was executed successfully.

Kudu Application Pool Permissions

I've spent some time getting Kudu.Web working under reduced permissions.

note - I've just hacked the following for now, in order to run the application:

        kernel.Bind<KuduEnvironment>().ToMethod(_ => new KuduEnvironment
        {
            RunningAgainstLocalKuduService = true,
            IsAdmin = true,//IdentityHelper.IsAnAdministrator(),
            ServiceSitePath = pathResolver.ServiceSitePath,
            SitesPath = pathResolver.SitesPath
        });
  1. Create new local user Kudu (password never expires) - should be added to users group automatically
  2. Grant modify rights for Kudu user to C:\Windows\System32\inetsrv\config (you'll get an error as it can't apply permissions to ./Export and ./Schema but that's fine, just click Continue).
  3. Make sure Kudu user has modify rights to the location where the sites will be created e.g. /inetpub/wwwroot/apps
  4. Change Kudu.Web application pool to use Kudu user. Restart application.

This works fine for me on a Windows 7 box, with some weirdness:

When creating an application the it appears to hang. When debugging it looks like the application pool is created and started instantly, yet hangs at:

kuduAppPool.WaitForState(IIS.ObjectState.Started);

However, clicking the "Create application" button again will then complete the process. Perhaps this is a permissions issue with polling?

I've not had chance to try this out on a Windows Azure VM - will hopefully get to that later today.

Build Script

The build script is configured to create the service under /KuduService.

However, the application is configured to look for Kudu.Services.Web.

Caught me out when I first tried deploying from artefacts folder to a Windows Azure VM

Can't load repository on certain machines

On some machines kudu fails to to behave correctly. When opening SourceControl/index.htm it raises "Cannot read property 'state' of undefined at line 13 of SourceControl.js.

hubs also fails to load. By the way, I'm totally unaware of signalR.js. So could you tell me, is the hubs script supposed to be automatically generated? Because I couldn't find and I noticed that the include doesn't point to an actual file but to an URL instead.

Package restore fails when using NuGet 2.0

This issue was reported by @teelahti

Steps:

Result: You get an error: "nuget.targets(76,9): error : Object reference not set to an instance of an object"

Full output:

Counting objects: 89, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (84/84), done.
Writing objects: 100% (89/89), 473.64 KiB, done.
Total 89 (delta 14), reused 0 (delta 0)
remote: New deployment received.
remote: Updating branch 'master'.
remote: Preparing deployment for commit id '2d8e7d9c86'.
remote: Building web project 'TestKuduDeployment.csproj'.
remote: C:\DWASFiles\Sites\TestKuduDeployment\VirtualDirectory0\site\repository\.nuget\nuget.targets(76,9): error : Object reference not set to an instance of an object. [C:\DWASFiles\Sites\TestKuduDeployment\VirtualDirectory0\site\repository\TestKuduDeployment\TestKuduDeployment.csproj]
remote: C:\DWASFiles\Sites\TestKuduDeployment\VirtualDirectory0\site\repository\.nuget\nuget.targets(76,9): error MSB3073: The command ""C:\DWASFiles\Sites\TestKuduDeployment\VirtualDirectory0\site\repository\.nuget\nuget.exe" install "C:\DWASFiles\Sites\TestKuduDeployment\VirtualDirectory0\site\repository\TestKuduDeployment\packages.config" -source "" -o "C:\DWASFiles\Sites\TestKuduDeployment\VirtualDirectory0\site\repository\packages"" exited with code 1. [C:\DWASFiles\Sites\TestKuduDeployment\VirtualDirectory0\site\repository\TestKuduDeployment\TestKuduDeployment.csproj]
remote:
remote: Error - Changes committed to remote repository but your website not updated.
To https://[email protected]/TestKuduDeployment.git
 * [new branch]      master -> master

Add support for customizing build/deployment process

Right now, there isn't much that can be configured. We're looking at adding some support for this, though exactly what is not yet clear.

Interesting scenarios:

  • Choosing build configuration (#109)
  • Running unit tests for Node,js and .NET apps

Add support for multiple node.js versions

Currently Kudu supports running node.js applications using a single node.js version installed on the machine. This is to add support for running node.js applications using more than one version, and provide a mechanism for the application to choose a particular node.js version to use. The design follows below.

Overview

This is the precedence of mechanisms used to determine the version of node.js for a particular application deployed to Azure Web Sites:

  • Explicit nodeProcessCommandLine entry in iisnode.yml
  • Explicit version constraint in the "engines" element of package.json
  • NODE_VERSION application setting set in the portal (going forward this can be replaced with a first class management portal knob like we have for PHP if we choose so, but we don't think this is a priority)
  • "Default" version of node.js which we decide on for every Azure Web Sites release.

The user experience

The lowest level versioning mechanism for node.js in Azure Web Sites which already works today is to deploy a custom node.exe version alongside the application and configure iisnode via web.config or iisnode.yml to use that executable. While this mechanism provides the user with full control over the version of node.js as well as a convenient mechanism to fall back to in advanced scenarios, we do not envision the mainstream of users to employ it for usability reasons.

The key mechanism we want people to use when choosing the node.js engine version for an app running in Azure Web Sites is the established configuration file for node.js applications: package.json. Within it, the already established "engines" element specifies an expression that constrains the node.js version this application requires. For example, one can say "0.6.19" to indicate a particular version, or "0.6.x || > 0.8.1" to indicate either any of the 0.6 versions or a version later than 0.8.1. For more information about the "engines" element in package.json, see "npm help json".

{
   "engines": {
    "node": "0.8.0"
  }
}

If the user does not provide a package.json alongside their application, or if the package.json does not specify any costraints for the node.js version number, Azure Web Sites will always use the default node.js version. The default version of node.js may change over time as the Azure Web Sites plarform revs. One implication of this is that apps that did not explicitly constrain the version of the node.js engine will be over time automatically upgraded to whatever version Azure Web Sites considers "default". This may imply breaking existing applications. There is no mechanism of "pinning" applications that do not have explicit node.js version constraints to the version that was default at the time they were deployed.

If the user provides node.js version constraints within package.json, Azure Web Sites will use the highest node.js version number across the versions pre-installed on the Azure Web Sites platform which satisfies the version constraint. This is the versioning mechanism already implemented in git-azure (https://github.com/tjanczuk/git-azure) for which we received positive feedback from several insiders. For example, if the package.json says "0.6.x || > 0.8.1", and the platform has 0.6.17, 0.6.19, and 0.8.0 installed, we will pick 0.6.19.

If the user does not specify a particular version of node.js using package.json file, they can still do so using the Azure Web Sites management portal by setting the node_version application setting to a specific semever version, e.g. 0.6.19.

The setting in the portal is subordinate to the setting in package.json.

Engineering

The WebPI feed that installs node.js components in Azure Web Sites is modified to install a default version of node.js as well as a number of other node.js engines side by side. The prototype of the WebPI feed is at https://github.com/tjanczuk/nodepi/blob/master/nodepi.xml.

The end result of installing several versions of node.js plarform looks like this:

C:\projects\nodepi>dir /s /b "c:\Program Files\nodejs"\node.exe
c:\Program Files\nodejs\node.exe
c:\Program Files\nodejs\0.6.19\node.exe
c:\Program Files\nodejs\0.8.1\node.exe

The version installed in c:\Program Files\nodejs\node.exe is the default version of node.js. It also provides the npm tool used by Kudu for all node.js applications, regardless of the runtime version they use. The versions of node.js installed in subdirectories of c:\Program Files\nodejs are all versions available on the Azure Web Sites platform at a given point in time (one of them is the same as the default version).

The Kudu logic is modified to execute a custom (node.js) script during application deployment. The script detects the existence of node.js version constraints in the the package.json file deployed with the application. If the constraint is specified, and if the iisnode.yml file does not exist or does not contain an explicit nodeProcessCommandLine entry, it will generate such entry in the iisnode.yml file. The generated nodeProcessCommandLine entry will specify the exact path to the maximum node.js engine version installed on the Azure Web Sites platform that satisfies the version constraint of the application (similarly to https://github.com/tjanczuk/git-azure). For example:

nodeProcessCommandLine: "c:\program files\nodejs\0.6.19\node.exe" "c:\program files\iisnode\interceptor.js"

This mechanism ensures that version constraints specified in the package.json file are applied unless the user explicitly specified the node.js command line to run in iisnode.yml (which is the lowest level versioning mechanism that overrides everything else).

The default web.config for iisnode is modified to specify the nodeProcessCommandLine as follows:

"%programfiles%\nodejs\%node_version%\node.exe" ...

If the iisnode.yml file does not override the nodeProcessCommandLine setting, this value remains effective for an application. The environment variables are expanded at runtime, which allows for the NODE_VERSION environment variable specified in the management portal to be effective unless overriden by the package.json setting or the explicit nodeProcessCommandLine entry in iisnode.yml.

Note that if the user does not specify NODE_VERSION in the app settings in the portal, the effective nodeProcessCommandLine becomes

"%programfiles%\nodejs\\node.exe" ...

which basically points to the "default" version of node.js for a given release of Azure Web Sites.

Missing reference Microsoft.Web.Infrastructure

Hi David, I tested kudo on two other machines and run into the issue that library mentioned above is missing. Not exactly sure where it comes from because on both machines there is at least ASP.NET MVC 2 installed. We should include this library as well I think. This is especially useful for shared hosting where you might don't have the chance to install other packages directly on the server.

Columns move around a bit during deployment

When clicking deploy on a build, some of the columns (user, date, status) move a bit to the left and then come back. Judicious use of fixed with should fix this, though we need to balance that with the need to display well on smaller resolutions.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.