NPanday
  1. NPanday
  2. NPANDAY-488

Packaging for Web Applications (also Azure Web Roles)

    Details

      Description

      MSDeploy is an extensible tool for creating deployment packages, which then can be deployed to IIS (or Windows Services, e.g.)

      This is also a prerequisite for Azure Web Roles.

      High-level Requirements

      • Must support Package creation
      • Must support full MSDeploy feature set (through -source:manifest?)
      • Must choose reasonable defaults for file inclusion
      • Must be configurable from the VS Add-in
      • Should support XDT transformations
      • Should support filtering (Maven-Properties)
      • Should support Parametrization (through -declareParamFile)
      • Should make it hard to let default connection strings and passwords "leak" into the package

      Implementation Details

      • instead of reinventing the wheel, we could utilize maven-assembly-plugin:single with package-type "dir"
        • or: Syntax should be similar to maven-assembly-plugin; maybe code reuse is possible?
        • Externalized descriptors for file-inclusions should be possible (NPanday then provides reasonable defaults)
      • Package type is named msdeploy-package with extension msdeploy.zip (must end with .zip)
      • XDT should be delegated to MSBuild (partially depends on NPANDAY-486)

      Flow

      To test how this could work out, I used default Maven/NPanday tools + registration of msdeploy-package as msdeploy.zip. Then, as soon as we know how this should exactly work, we can start creating the needed plugins.

      prepare-package

      • assembly:single -> target/prepare-package/01-source-raw
        • includes dotnet-library dependencies in bin
        • includes *.as?x + config + css + js + graphics
      • exec:exec: msbuild copy-transformed.xml -> XDT-Transforms using *.package.config -> target/prepare-package/03-transformed
      • (Optional) exec:exec -> msdeploy - apply parameter configuration
        • This would avoid leaking developer default values into the package

      package

      • exec:exec: msdeploy -verb:sync -source:dirPath=target/prepare-package/03-transformed -dest:package=target/${artifactId}.msdeploy.zip
      • build-helper:attach artifact target/${artifactId}.msdeploy.zip as msdeploy-package

      Build runs locally:

      [INFO] Installing target\HelloWorld_WebRole.dll to .m2\...\HelloWorld_WebRole\1.0.0-SNAPSHOT\HelloWorld_WebRole-1.0.0-SNAPSHOT.dll
      [INFO] Installing target\HelloWorld_WebRole.msdeploy.zip to .m2\...\HelloWorld_WebRole\1.0.0-SNAPSHOT\HelloWorld_WebRole-1.0.0-SNAPSHOT.msdeploy.zip
      

        Issue Links

        There are no Sub-Tasks for this issue.

          Activity

          Lars Corneliussen created issue -
          Lars Corneliussen made changes -
          Field Original Value New Value
          Description MSDeploy is an extensible tool for creating deployment packages, which then can be deployed to IIS (or Windows Services, e.g.)
          This is also a prerequisite for Azure Web Roles.

          h2. Considerations
          - a new package type {{msdeploy-package}} with extension {{msdeploy.zip}} (must end with .zip)
          - todo
          MSDeploy is an extensible tool for creating deployment packages, which then can be deployed to IIS (or Windows Services, e.g.)
          This is also a prerequisite for Azure Web Roles.

          h2. Considerations
          - a new package type {{msdeploy-package}} with extension {{msdeploy.zip}} (must end with .zip)
          - must be configurable from the VS Add-in
          - todo
          Lars Corneliussen made changes -
          Link This issue blocks NPANDAY-480 [ NPANDAY-480 ]
          Lars Corneliussen made changes -
          Description MSDeploy is an extensible tool for creating deployment packages, which then can be deployed to IIS (or Windows Services, e.g.)
          This is also a prerequisite for Azure Web Roles.

          h2. Considerations
          - a new package type {{msdeploy-package}} with extension {{msdeploy.zip}} (must end with .zip)
          - must be configurable from the VS Add-in
          - todo
          MSDeploy is an extensible tool for creating deployment packages, which then can be deployed to IIS (or Windows Services, e.g.)
          This is also a prerequisite for Azure Web Roles.

          h2. Considerations
          - a new package type {{msdeploy-package}} with extension {{msdeploy.zip}} (must end with .zip)
          - must be configurable from the VS Add-in
          - we should consider running XDT config-transforms:
          -- Either via MSBuild/TransformXml through http://code.google.com/p/xdt/downloads/list
          -- Connection strings and passwords should be removed by default?
          - todo...
          Lars Corneliussen made changes -
          Description MSDeploy is an extensible tool for creating deployment packages, which then can be deployed to IIS (or Windows Services, e.g.)
          This is also a prerequisite for Azure Web Roles.

          h2. Considerations
          - a new package type {{msdeploy-package}} with extension {{msdeploy.zip}} (must end with .zip)
          - must be configurable from the VS Add-in
          - we should consider running XDT config-transforms:
          -- Either via MSBuild/TransformXml through http://code.google.com/p/xdt/downloads/list
          -- Connection strings and passwords should be removed by default?
          - todo...
          MSDeploy is an extensible tool for creating deployment packages, which then can be deployed to IIS (or Windows Services, e.g.)

          This is also a prerequisite for Azure Web Roles.

          h2. High-level Requirements
          - Must support Package creation
          - Must support full MSDeploy feature set (through -source:manifest?)
          - Must choose reasonable defaults for file inclusion
          - Must be configurable from the VS Add-in
          - Should support XDT transformations
          - Should support filtering (Maven-Properties)
          - Should support Parametrization (through -declareParamFile)
          - Should make it hard to let default connection strings and passwords "leak" into the package

          h2. Implementation Details
          - (?) instead of reinventing the wheel, we could utilize maven-assembly-plugin:single with package-type "dir"
          -- {color:red}or:{color} Syntax should be similar to maven-assembly-plugin; maybe code reuse is possible?
          -- Externalized descriptors for file-inclusions should be possible (NPanday then provides reasonable defaults)
          - Package type is named {{msdeploy-package}} with extension {{msdeploy.zip}} (must end with .zip)
          - XDT should be delegated to MSBuild (partially depends on NPANDAY-486)


          h2. Sample Plugin Configuration

          {code}
          // todo
          {code}
          Lars Corneliussen made changes -
          Link This issue depends upon NPANDAY-486 [ NPANDAY-486 ]
          Hide
          Lars Corneliussen added a comment -

          We need NPANDAY-486 to include components, that make it easy to generate a MSBuild file and then run it (also from other plugins)

          Show
          Lars Corneliussen added a comment - We need NPANDAY-486 to include components, that make it easy to generate a MSBuild file and then run it (also from other plugins)
          Lars Corneliussen made changes -
          Description MSDeploy is an extensible tool for creating deployment packages, which then can be deployed to IIS (or Windows Services, e.g.)

          This is also a prerequisite for Azure Web Roles.

          h2. High-level Requirements
          - Must support Package creation
          - Must support full MSDeploy feature set (through -source:manifest?)
          - Must choose reasonable defaults for file inclusion
          - Must be configurable from the VS Add-in
          - Should support XDT transformations
          - Should support filtering (Maven-Properties)
          - Should support Parametrization (through -declareParamFile)
          - Should make it hard to let default connection strings and passwords "leak" into the package

          h2. Implementation Details
          - (?) instead of reinventing the wheel, we could utilize maven-assembly-plugin:single with package-type "dir"
          -- {color:red}or:{color} Syntax should be similar to maven-assembly-plugin; maybe code reuse is possible?
          -- Externalized descriptors for file-inclusions should be possible (NPanday then provides reasonable defaults)
          - Package type is named {{msdeploy-package}} with extension {{msdeploy.zip}} (must end with .zip)
          - XDT should be delegated to MSBuild (partially depends on NPANDAY-486)


          h2. Sample Plugin Configuration

          {code}
          // todo
          {code}
          MSDeploy is an extensible tool for creating deployment packages, which then can be deployed to IIS (or Windows Services, e.g.)

          This is also a prerequisite for Azure Web Roles.

          h2. High-level Requirements
          - Must support Package creation
          - Must support full MSDeploy feature set (through -source:manifest?)
          - Must choose reasonable defaults for file inclusion
          - Must be configurable from the VS Add-in
          - Should support XDT transformations
          - Should support filtering (Maven-Properties)
          - Should support Parametrization (through -declareParamFile)
          - Should make it hard to let default connection strings and passwords "leak" into the package

          h2. Implementation Details
          - (?) instead of reinventing the wheel, we could utilize maven-assembly-plugin:single with package-type "dir"
          -- {color:red}or:{color} Syntax should be similar to maven-assembly-plugin; maybe code reuse is possible?
          -- Externalized descriptors for file-inclusions should be possible (NPanday then provides reasonable defaults)
          - Package type is named {{msdeploy-package}} with extension {{msdeploy.zip}} (must end with .zip)
          - XDT should be delegated to MSBuild (partially depends on NPANDAY-486)


          h2. Flow

          To test how this could work out, I used default Maven/NPanday tools + registration of {{msdeploy-package}} as {{msdeploy.zip}}. Then, as soon as we know how this should exactly work, we can start creating the needed plugins.

          *prepare-package*

           - (/) {{assembly:single}} -> {{target/prepare-package/01-source-raw}}
           -- includes {{dotnet-library}} dependencies in {{bin}}
           -- includes *.as?x + config + css + js + graphics
           - (/) {{exec:exec: msbuild copy-transformed.xml}} -> XDT-Transforms using *.package.config -> {{target/prepare-package/03-transformed}}
           - (?) (Optional) {{exec:exec -> msdeploy}} - apply parameter configuration
           -- This would avoid leaking developer default values into the package
           - (/) {{exec:exec: msdeploy -verb:sync -source:dirPath=target/prepare-package/03-transformed -dest:package=target/${artifactId}.msdeploy.zip}}
           - (/) {{build-helper:attach}} artifact {{target/${artifactId}.msdeploy.zip}} as {{msdeploy-package}}

          Build runs locally:

          {code}
          [INFO] Installing target\HelloWorld_WebRole.dll to .m2\...\HelloWorld_WebRole\1.0.0-SNAPSHOT\HelloWorld_WebRole-1.0.0-SNAPSHOT.dll
          [INFO] Installing target\HelloWorld_WebRole.msdeploy.zip to .m2\...\HelloWorld_WebRole\1.0.0-SNAPSHOT\HelloWorld_WebRole-1.0.0-SNAPSHOT.msdeploy.zip
          {code}
          Lars Corneliussen made changes -
          Description MSDeploy is an extensible tool for creating deployment packages, which then can be deployed to IIS (or Windows Services, e.g.)

          This is also a prerequisite for Azure Web Roles.

          h2. High-level Requirements
          - Must support Package creation
          - Must support full MSDeploy feature set (through -source:manifest?)
          - Must choose reasonable defaults for file inclusion
          - Must be configurable from the VS Add-in
          - Should support XDT transformations
          - Should support filtering (Maven-Properties)
          - Should support Parametrization (through -declareParamFile)
          - Should make it hard to let default connection strings and passwords "leak" into the package

          h2. Implementation Details
          - (?) instead of reinventing the wheel, we could utilize maven-assembly-plugin:single with package-type "dir"
          -- {color:red}or:{color} Syntax should be similar to maven-assembly-plugin; maybe code reuse is possible?
          -- Externalized descriptors for file-inclusions should be possible (NPanday then provides reasonable defaults)
          - Package type is named {{msdeploy-package}} with extension {{msdeploy.zip}} (must end with .zip)
          - XDT should be delegated to MSBuild (partially depends on NPANDAY-486)


          h2. Flow

          To test how this could work out, I used default Maven/NPanday tools + registration of {{msdeploy-package}} as {{msdeploy.zip}}. Then, as soon as we know how this should exactly work, we can start creating the needed plugins.

          *prepare-package*

           - (/) {{assembly:single}} -> {{target/prepare-package/01-source-raw}}
           -- includes {{dotnet-library}} dependencies in {{bin}}
           -- includes *.as?x + config + css + js + graphics
           - (/) {{exec:exec: msbuild copy-transformed.xml}} -> XDT-Transforms using *.package.config -> {{target/prepare-package/03-transformed}}
           - (?) (Optional) {{exec:exec -> msdeploy}} - apply parameter configuration
           -- This would avoid leaking developer default values into the package
           - (/) {{exec:exec: msdeploy -verb:sync -source:dirPath=target/prepare-package/03-transformed -dest:package=target/${artifactId}.msdeploy.zip}}
           - (/) {{build-helper:attach}} artifact {{target/${artifactId}.msdeploy.zip}} as {{msdeploy-package}}

          Build runs locally:

          {code}
          [INFO] Installing target\HelloWorld_WebRole.dll to .m2\...\HelloWorld_WebRole\1.0.0-SNAPSHOT\HelloWorld_WebRole-1.0.0-SNAPSHOT.dll
          [INFO] Installing target\HelloWorld_WebRole.msdeploy.zip to .m2\...\HelloWorld_WebRole\1.0.0-SNAPSHOT\HelloWorld_WebRole-1.0.0-SNAPSHOT.msdeploy.zip
          {code}
          MSDeploy is an extensible tool for creating deployment packages, which then can be deployed to IIS (or Windows Services, e.g.)

          This is also a prerequisite for Azure Web Roles.

          h2. High-level Requirements
          - Must support Package creation
          - Must support full MSDeploy feature set (through -source:manifest?)
          - Must choose reasonable defaults for file inclusion
          - Must be configurable from the VS Add-in
          - Should support XDT transformations
          - Should support filtering (Maven-Properties)
          - Should support Parametrization (through -declareParamFile)
          - Should make it hard to let default connection strings and passwords "leak" into the package

          h2. Implementation Details
          - (?) instead of reinventing the wheel, we could utilize maven-assembly-plugin:single with package-type "dir"
          -- {color:red}or:{color} Syntax should be similar to maven-assembly-plugin; maybe code reuse is possible?
          -- Externalized descriptors for file-inclusions should be possible (NPanday then provides reasonable defaults)
          - Package type is named {{msdeploy-package}} with extension {{msdeploy.zip}} (must end with .zip)
          - XDT should be delegated to MSBuild (partially depends on NPANDAY-486)


          h2. Flow

          To test how this could work out, I used default Maven/NPanday tools + registration of {{msdeploy-package}} as {{msdeploy.zip}}. Then, as soon as we know how this should exactly work, we can start creating the needed plugins.

          *prepare-package*

           - (/) {{assembly:single}} -> {{target/prepare-package/01-source-raw}}
           -- includes {{dotnet-library}} dependencies in {{bin}}
           -- includes *.as?x + config + css + js + graphics
           - (/) {{exec:exec: msbuild copy-transformed.xml}} -> XDT-Transforms using *.package.config -> {{target/prepare-package/03-transformed}}
           - (?) (Optional) {{exec:exec -> msdeploy}} - apply parameter configuration
           -- This would avoid leaking developer default values into the package
           - (/) {{exec:exec: msdeploy -verb:sync -source:dirPath=target/prepare-package/03-transformed -dest:package=target/$\{artifactId\}.msdeploy.zip}}
           - (/) {{build-helper:attach}} artifact {{target/${artifactId}.msdeploy.zip}} as {{msdeploy-package}}

          Build runs locally:

          {code}
          [INFO] Installing target\HelloWorld_WebRole.dll to .m2\...\HelloWorld_WebRole\1.0.0-SNAPSHOT\HelloWorld_WebRole-1.0.0-SNAPSHOT.dll
          [INFO] Installing target\HelloWorld_WebRole.msdeploy.zip to .m2\...\HelloWorld_WebRole\1.0.0-SNAPSHOT\HelloWorld_WebRole-1.0.0-SNAPSHOT.msdeploy.zip
          {code}
          Lars Corneliussen made changes -
          Description MSDeploy is an extensible tool for creating deployment packages, which then can be deployed to IIS (or Windows Services, e.g.)

          This is also a prerequisite for Azure Web Roles.

          h2. High-level Requirements
          - Must support Package creation
          - Must support full MSDeploy feature set (through -source:manifest?)
          - Must choose reasonable defaults for file inclusion
          - Must be configurable from the VS Add-in
          - Should support XDT transformations
          - Should support filtering (Maven-Properties)
          - Should support Parametrization (through -declareParamFile)
          - Should make it hard to let default connection strings and passwords "leak" into the package

          h2. Implementation Details
          - (?) instead of reinventing the wheel, we could utilize maven-assembly-plugin:single with package-type "dir"
          -- {color:red}or:{color} Syntax should be similar to maven-assembly-plugin; maybe code reuse is possible?
          -- Externalized descriptors for file-inclusions should be possible (NPanday then provides reasonable defaults)
          - Package type is named {{msdeploy-package}} with extension {{msdeploy.zip}} (must end with .zip)
          - XDT should be delegated to MSBuild (partially depends on NPANDAY-486)


          h2. Flow

          To test how this could work out, I used default Maven/NPanday tools + registration of {{msdeploy-package}} as {{msdeploy.zip}}. Then, as soon as we know how this should exactly work, we can start creating the needed plugins.

          *prepare-package*

           - (/) {{assembly:single}} -> {{target/prepare-package/01-source-raw}}
           -- includes {{dotnet-library}} dependencies in {{bin}}
           -- includes *.as?x + config + css + js + graphics
           - (/) {{exec:exec: msbuild copy-transformed.xml}} -> XDT-Transforms using *.package.config -> {{target/prepare-package/03-transformed}}
           - (?) (Optional) {{exec:exec -> msdeploy}} - apply parameter configuration
           -- This would avoid leaking developer default values into the package
           - (/) {{exec:exec: msdeploy -verb:sync -source:dirPath=target/prepare-package/03-transformed -dest:package=target/$\{artifactId\}.msdeploy.zip}}
           - (/) {{build-helper:attach}} artifact {{target/${artifactId}.msdeploy.zip}} as {{msdeploy-package}}

          Build runs locally:

          {code}
          [INFO] Installing target\HelloWorld_WebRole.dll to .m2\...\HelloWorld_WebRole\1.0.0-SNAPSHOT\HelloWorld_WebRole-1.0.0-SNAPSHOT.dll
          [INFO] Installing target\HelloWorld_WebRole.msdeploy.zip to .m2\...\HelloWorld_WebRole\1.0.0-SNAPSHOT\HelloWorld_WebRole-1.0.0-SNAPSHOT.msdeploy.zip
          {code}
          MSDeploy is an extensible tool for creating deployment packages, which then can be deployed to IIS (or Windows Services, e.g.)

          This is also a prerequisite for Azure Web Roles.

          h2. High-level Requirements
          - Must support Package creation
          - Must support full MSDeploy feature set (through -source:manifest?)
          - Must choose reasonable defaults for file inclusion
          - Must be configurable from the VS Add-in
          - Should support XDT transformations
          - Should support filtering (Maven-Properties)
          - Should support Parametrization (through -declareParamFile)
          - Should make it hard to let default connection strings and passwords "leak" into the package

          h2. Implementation Details
          - (?) instead of reinventing the wheel, we could utilize maven-assembly-plugin:single with package-type "dir"
          -- {color:red}or:{color} Syntax should be similar to maven-assembly-plugin; maybe code reuse is possible?
          -- Externalized descriptors for file-inclusions should be possible (NPanday then provides reasonable defaults)
          - Package type is named {{msdeploy-package}} with extension {{msdeploy.zip}} (must end with .zip)
          - XDT should be delegated to MSBuild (partially depends on NPANDAY-486)


          h2. Flow

          To test how this could work out, I used default Maven/NPanday tools + registration of {{msdeploy-package}} as {{msdeploy.zip}}. Then, as soon as we know how this should exactly work, we can start creating the needed plugins.

          *prepare-package*

           - (/) {{assembly:single}} -> {{target/prepare-package/01-source-raw}}
           -- includes {{dotnet-library}} dependencies in {{bin}}
           -- includes *.as?x + config + css + js + graphics

           - (/) {{exec:exec: msbuild copy-transformed.xml}} -> XDT-Transforms using *.package.config -> {{target/prepare-package/03-transformed}}

           - (?) (Optional) {{exec:exec -> msdeploy}} - apply parameter configuration
           -- This would avoid leaking developer default values into the package
           

          *package*
           - (/) {{exec:exec: msdeploy -verb:sync -source:dirPath=target/prepare-package/03-transformed -dest:package=target/$\{artifactId\}.msdeploy.zip}}

           - (/) {{build-helper:attach}} artifact {{target/$\{artifactId\}.msdeploy.zip}} as {{msdeploy-package}}

          Build runs locally:

          {code}
          [INFO] Installing target\HelloWorld_WebRole.dll to .m2\...\HelloWorld_WebRole\1.0.0-SNAPSHOT\HelloWorld_WebRole-1.0.0-SNAPSHOT.dll
          [INFO] Installing target\HelloWorld_WebRole.msdeploy.zip to .m2\...\HelloWorld_WebRole\1.0.0-SNAPSHOT\HelloWorld_WebRole-1.0.0-SNAPSHOT.msdeploy.zip
          {code}
          Lars Corneliussen made changes -
          Status Open [ 1 ] In Progress [ 3 ]
          Lars Corneliussen made changes -
          Fix Version/s 1.5.0-incubating [ 12319165 ]
          Lars Corneliussen made changes -
          Summary MSDeploy Packaging for Web Applications (also Azure Web Roles) Packaging for Web Applications (also Azure Web Roles)
          Lars Corneliussen made changes -
          Status In Progress [ 3 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]
          Gavin made changes -
          Link This issue blocks NPANDAY-480 [ NPANDAY-480 ]
          Gavin made changes -
          Link This issue is depended upon by NPANDAY-480 [ NPANDAY-480 ]
          Transition Time In Source Status Execution Times Last Executer Last Execution Date
          Open Open In Progress In Progress
          6d 16h 41m 1 Lars Corneliussen 29/Nov/11 09:45
          In Progress In Progress Resolved Resolved
          141d 23h 7m 1 Lars Corneliussen 19/Apr/12 09:53

            People

            • Assignee:
              Lars Corneliussen
              Reporter:
              Lars Corneliussen
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development