通过GIT将Orchard.Source部署到Azure

时间:2012-10-01 16:50:01

标签: git azure nuget orchardcms azure-web-sites

更新这个问题已经发展并根据目前给出的答案进行了扩展。

我想要两件事:(1)Visual Studio作为我的Orchard开发环境,(2)GIT作为推送Azure的手段。为此,我下载了Orchard.Source发行版而不是Orchard.Web发行版。

因此,我使用GIT将Orchard.Source.1.5.1发行版从本地计算机上的存储库发布到Azure网站(预览技术)。部署工作正常,但随后在Azure上的构建失败,因为它无法确定哪个解决方案应该是“应该构建的”:

  
    

remote:无法确定要构建的解决方案文件。     C:\ DWASFiles \网站\ mysite的\ VirtualDirectory0 \网站\库的\ src \ Orchard.sln,     C:\ DWASFiles \网站\ mysite的\ VirtualDirectory0 \网站\库的\ src \ Orchard.Azure \ Orchard.Azure.sln,     C:\ DWASFiles \网站\ mysite的\ VirtualDirectory0 \网站\库的\ src \ Orchard.Azure \ Orchard.Azure.Web \模块\ Orchard.ContentTypes \ Orchard.ContentTypes.sln,     C:\ DWASFiles \网站\ mysite的\ VirtualDirectory0 \网站\库的\ src \ Orchard.Azure.Tests \ Orchard.Azure.Tests.sln,     C:\ DWASFiles \网站\ mysite的\ VirtualDirectory0 \网站\库的\ src \ Orchard.Web \模块\ Orchard.ContentTypes \ Orchard.ContentTypes.sln。     remote:错误 - 提交到远程存储库的更改但您的网站未更新。

  

该转储中列出的第一个Azure解决方案是它应该使用的解决方案。我如何告诉Azure?

在David Ebbo的帮助下,我现在明白我在问错误的问题:

  1. 问题通过'.deployment'配置文件和
  2. 解决
  3. 指向“正确”的Visual Stuio解决方案不正确!要通过GIT部署到Azure,我必须指向一个项目文件(在本例中为Orchard.Web.csproj):

    [配置]
    project = src / Orchard.Web / Orchard.Web.csproj

  4. 这让我更进一步,但我的下一个问题是我故意从我的GIT存储库中省略了Orchard.Source的'lib'文件夹。我错误地认为,如果我为Orchard.sln启用了“nuget restore”,那么Azure中项目文件的构建将获取所需的依赖项。

    在塞巴斯蒂安的帮助下,我现在明白启用nuget可能是一场艰苦的战斗,因为一些Orchard第三方依赖项已经由Orchard团队进行了源级自定义。简而言之,如果我想使用Orchard.Source发行版快速启动并运行 - 那么我只需将'lib'文件夹提交到我的GIT存储库(darn!)。

    当我通过GIT进行下一次Azure推送时,我的编译仍然失败 - 但至少错误的数量大大减少了。我认为现在唯一令人不安的是:

    For OrchardFramework.csproj:
       Could not find assemblies: Castle.Core, Casstle.DynamicProxy2
       Missing type or namespace: Castle, AbstractLoggerFactory, DefaultProxyBuilder
    

    如果我能克服这个问题,我可能最终拥有两全其美:Visual Studio开发环境(由于Orchard.Source发行版)和支持GIT的Azure推送。有谁知道最后一个问题可能是什么?

    P.S。 Orchard.Source发行版中有一个“ClickToBuildAzurePackage.cmd”文件,该文件是在创建“GIT push to Azure”之前创建的。该小批量文件试图复制GIT推送到Azure现在提供的大部分工作。我可以更多地探索这个选项,但当然理想的情况是依赖于新的Azure内置功能。<​​/ p>

    更新2 :事实证明这只是因为lib/*/Castle Windsor 2.0/bin/*忽略了.gitignore。强制执行这些文件后,整个事情现在都在构建和部署!现在唯一的问题是我访问时网站没有给出回复。如有必要,我会把它变成一个单独的问题。我一直认为这个问题得到了回答。

3 个答案:

答案 0 :(得分:6)

您可以使用repo根目录下的.deployment文件指定要部署的项目。有关详细信息,请参阅https://github.com/projectkudu/kudu/wiki/Customizing-deployments

另外,请参阅https://github.com/AzureWebSites/OrchardCMS以获取在Azure网站中工作的Orchard存储库的示例(但它有点过时)。

答案 1 :(得分:5)

Orchard没有使用Nuget作为其依赖项,这意味着库已签入源代码管理系统,如果按源部署,则需要它们。

使用David Hayden的Git Publishing在Windows Azure网站上安装Orchard有一个非常好的教程:http://www.davidhayden.me/blog/git-publishing-orchard-cms-to-windows-azure

答案 2 :(得分:2)

以下是我们的高级步骤和常见问题。

高级别步骤

  1. 将Orchard来源克隆到 SomeDirectory
  2. 将.deployment文件添加到SomeDirectory(例如,来自PowerShell,ni –t f .deployment
  3. 检查点:SomeDirectory现在将包含:

    .git
    .deployment 
    lib 
    src 
    .gitignore 
    build.cmd 
    ClickToBuild.cmd 
    ClickToBuildAzurePackage.cmd 
    CREDITS.txt 
    DeleteModuleBinaries.cmd 
    LICENSE.txt 
    Orchard.proj
    
    1. 接下来,在SomeDirectory上打开Developer命令提示符。
    2. 运行build precompiled
    3. 检查点:SomeDirectory现在还包含两个子目录:

      build 
      buildtasks
      
      1. 接下来,打开.deployment文件......
      2. ...并添加以下内容:

        [config] 
        project = build/precompiled
        
        1. 添加,提交并将文件推送到GitHub(或任何地方)。
        2. 创建新的Windows Azure网站。
        3. 从版本控制中选择部署&gt; GitHub&gt;等
        4. 等待部署完成。
        5. 测试...
        6. 通过FTP查看Azure网站将显示以下内容:

          ftp

          通过浏览器查看您的网站将显示:

          web

          常见问题

          1. 如果你有一个忽略build /目录的.gitignore文件,你必须要求git强制添加预编译文件夹中的所有内容(App_Data和Media除外,因为它们将包含我们从Orchard UI添加的实时内容)。
          2. 示例:

            git add –-f  bin/*
            git add –-f Config/*
            git add –-f Core/*
            git add –-f Modules/*
            git add –-f Themes/*
            git add –-f CREDITS.txt
            git add –-f Global.asax
            git add –-f LICENSE.txt
            git add –-f Refresh.html
            git add –-f Web.config
            (Yes. Git is case sensitive).
            
            1. 如果您在添加,删除,排除或包含新文件后忘记保存.csproj文件,则Git Deploy会抱怨它无法找到某些文件。