2012-10-01 18 views
6

ACTUALIZAR esta pregunta ha evolucionado y se ha ampliado, en función de las respuestas dadas hasta el momento.Implementar Orchard.Source en Azure a través de GIT

Quiero dos cosas: (1) Visual Studio como mi entorno de desarrollo Orchard y (2) GIT como medio para impulsar a Azure. Para lograr esto, descargué la distribución Orchard.Source en lugar de la distribución Orchard.Web.

Entonces, utilicé GIT para publicar la distribución Orchard.Source.1.5.1 desde un repositorio en mi máquina local a un sitio web de Azure (tecnología de vista previa). El despliegue funcionó, pero la acumulación posterior sobre Azure fracasó porque no pudo determinar qué solución era "el uno" debe construir:

remoto: No se puede determinar qué archivo de solución a construir. C: \ DWASFiles \ Sites \ MySite \ VirtualDirectory0 \ site \ repository \ src \ Orchard.sln, C: \ DWASFiles \ Sites \ MySite \ VirtualDirectory0 \ site \ repository \ src \ Orchard.Azure \ Orchard.Azure.sln, C: \ DWASFiles \ Sites \ MySite \ VirtualDirectory0 \ site \ repository \ src \ Orchard.Azure \ Orchard.Azure.Web \ Modules \ Orchard.ContentTypes \ Orchard.ContentTypes.sln, C: \ DWASFiles \ Sites \ MySite \ VirtualDirectory0 \ site \ repository \ src \ Orchard.Azure.Tests \ Orchard.Azure.Tests.sln, C: \ DWASFiles \ Sites \ MySite \ VirtualDirectory0 \ site \ repository \ src \ Orchard.Web \ Modules \ Orchard.ContentTypes \ Orchard.ContentTypes.sln. remoto: Error - Cambios comprometidos con el repositorio remoto pero su sitio web no actualizado.

La primera solución Azure también figuran en dicho vertedero es la que se debe utilizar. ¿Cómo le digo eso a Azure?

Con la ayuda de David Ebbo, ahora entiendo que yo estaba haciendo la pregunta equivocada:

  1. el problema se resuelve con un archivo '.deployment' configuración y
  2. que apunta a la 'correcta' ¡La solución de Visual Stuio es incorrecta! Para implementar a través de Azure GIT, debo apuntar a un archivo de proyecto (en este caso, Orchard.Web.csproj):

    [Config]
    proyecto = src/Orchard.Web/Orchard.Web.csproj

Esto me lleva más lejos, pero mi siguiente problema es que intencionalmente omití la carpeta 'lib' de Orchard.Source de mi repositorio de GIT. Pensé, erróneamente, que si habilitaba "restauración de nuget" para Orchard.sln, la compilación de los archivos de proyecto en Azure buscaría las dependencias necesarias.

Con la ayuda de Sebastien, ahora entiendo que habilitar Nuget puede ser una batalla cuesta arriba debido a que algunas dependencias de terceros de Orchard han tenido personalizaciones de nivel de origen por parte del equipo de Orchard. En resumen, si quiero ponerme en funcionamiento rápidamente con la distribución de Orchard.Source, entonces simplemente debo enviar la carpeta 'lib' a mi repositorio de GIT (¡maldito!).

Cuando realicé mi siguiente visita a Azure a través de GIT, mi compilación aún falló, pero al menos la cantidad de errores se redujo drásticamente.Creo que la única cosa que está molesto con el ahora es la siguiente:

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

Si puedo superar este problema, que finalmente podría tener lo mejor de boths mundos: un entorno de desarrollo de Visual Studio (debido a la distribución Orchard.Source) y un impulso habilitado para GIT a Azure. Alguien sabe lo que este último problema podría ser?

p.s. hay un archivo "ClickToBuildAzurePackage.cmd" en la distribución Orchard.Source, que se creó antes de que se creara el "GIT push to Azure". Ese pequeño archivo de proceso por lotes intenta duplicar gran parte del trabajo que ahora ofrece una inserción de GIT en Azure. Puedo explorar más esa opción, pero por supuesto la situación ideal sería confiar en las nuevas capacidades incorporadas de Azure.

ACTUALIZACIÓN 2: Resulta que esto es simplemente porque lib/*/Castle Windsor 2.0/bin/* está siendo ignorada por .gitignore. Después de haber forzado esos archivos también, ¡todo se construye y despliega ahora! El único problema ahora es que el sitio no da una respuesta cuando lo visito. Convertiré eso en una pregunta separada si es necesario. Como es, considero respondida esta pregunta en particular.

Respuesta

5

Orchard no utiliza Nuget para sus dependencias, lo que significa que las bibliotecas están registradas en el sistema de control de origen y las necesita si las implementa por origen.

Hay un muy buen tutorial sobre la instalación de Orchard en los sitios Web de Windows Azure utilizando Git Publishing por David Hayden: http://www.davidhayden.me/blog/git-publishing-orchard-cms-to-windows-azure

+0

Las instrucciones de David se aplican "si descarga Orchard.Web de CodePlex", pero en su lugar quiero Orchard.Source de codeplex porque tengo la intención de hacer el desarrollo desde Visual Studio. En ese caso, sus instrucciones no se aplican.Pero tal como está, ya me has dado la mejor idea: el Orchard.sln no usa nuget (doh!). Para poder evitar colocar esas dependencias en GIT, quizás debería convertir Orchard.sln y proyectos para usar nuget. ¿Sí? ¿Encontraría algún obstáculo importante al convertir la solución Orchard de esa manera? –

+1

No puede usar Nuget para cada biblioteca, ya que podemos aplicar parches personalizados para abrir bibliotecas de origen. Pero deberías poder hacerlo para la mayoría de ellos. –

+0

No me gusta, pero para evitar el problema nuget por el momento, simplemente he elegido agregar la carpeta 'lib' de la distribución Orchard.Source en mi repositorio GIT. Luego publiqué y descubrí que la compilación en Azure todavía no funcionaba, pero producía muchos menos errores. Creo que es simplemente porque OrchardFramework.csproj no puede encontrar ensamblajes dependientes Castle.Core y DynamicProxy2. Si normalmente los compila/suministra la compilación Orchard.sln, entonces puedo entender lo que sucedió. De lo contrario, ¿por qué crees que hay problemas en ese lugar? –

6

Puede especificar un proyecto para implementar utilizando un archivo .deployment en la raíz de su repositorio. Ver https://github.com/projectkudu/kudu/wiki/Customizing-deployments para más información.

También, vea https://github.com/AzureWebSites/OrchardCMS para ver un ejemplo de un repositorio de Orchard que funciona en un sitio web de Azure (pero está un poco desactualizado).

+0

Acabo de ver su video (http://www.youtube.com/watch?v=72SAHWUHnzA), lo que implica que puedo omitir con seguridad la carpeta 'lib' de Orchard, porque Azure debería ser capaz de extraer todo esas dependencias a través de nuget por sí mismo. ¿Sí? Cuando los extrae a través de Nuget, ¿cuenta contra mi consumo de ancho de banda de red? –

+0

Bien, el archivo .deployment con 'src/Orchard.sln' falló porque cree que' Orchard.sln' es una ruta en lugar de un archivo. Pero el problema se resolvió especificando 'src'. Mi próximo problema es que Azure no puede iniciar el sitio. La estructura de archivos de la distribución Orchard-source no funciona en Azure. No entiendo por qué no; si Azure puede construir el archivo Orchard.sln, seguramente puede crear las carpetas virtuales o mover los archivos a su posición, ¿sí? Si no, ¿significa esto que debo usar la distribución Orchard-Azure? Pensé que era solo para no codificadores que desean usar la Galería Azure. –

+0

¿Has probado el repositorio que mencioné anteriormente? Debería solo trabajar como es. No soy un experto en Orchard, por lo que es posible que necesites la ayuda de @sebastien-ros si te quedas atascado. –

2

Los siguientes son nuestros pasos de alto nivel y errores comunes.

alto nivel Pasos

  1. clonar el Orchard Fuente en somedirectory
  2. Añadir un archivo .deployment a somedirectory (por ejemplo, de PowerShell, ni –t f .deployment)

Checkpoint: somedirectory se ahora contiene:

.git 
.deployment 
lib 
src 
.gitignore 
build.cmd 
ClickToBuild.cmd 
ClickToBuildAzurePackage.cmd 
CREDITS.txt 
DeleteModuleBinaries.cmd 
LICENSE.txt 
Orchard.proj 
  1. A continuación, abra un símbolo del sistema del desarrollador en SomeDirectory.
  2. Ejecute build precompiled.

Checkpoint: somedirectory contendrá ahora dos más subdirectorios:

build 
buildtasks 
  1. A continuación, abra el archivo de .deployment ...

...y añadir lo siguiente:

[config] 
project = build/precompiled 
  1. Agregar, comprometerse, y empuje de sus archivos en GitHub (o donde sea).
  2. Cree un nuevo sitio web de Windows Azure.
  3. Seleccione implementación desde control de versión> GitHub> etc.
  4. Espere a que se complete la implementación.
  5. prueba ...

Visualización de su sitio web a través de FTP Azure muestra la siguiente:

ftp

viendo su sitio a través del navegador mostrará esto:

web

Común Gotchas

  1. Si tiene un archivo .gitignore que ignora el directorio/compilación, debe solicitar a git que fuerce agregar todo desde la carpeta precompilada (excepto App_Data y Media, porque contendrán elementos en vivo que agreguemos de la UI de Orchard)

Ejemplo:

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. Si ha olvidado guardar el archivo .csproj después de añadir, eliminar, excluyendo o incluyendo nuevos archivos, entonces el Git Implementar se quejará de que no puede encontrar ciertos archivos.
Cuestiones relacionadas