GithubHelp home page GithubHelp logo

aaronpowell / chauffeur Goto Github PK

View Code? Open in Web Editor NEW
68.0 14.0 14.0 13.48 MB

Welcome to Chauffeur, deliverying changes to your Umbraco environment in style.

Home Page: https://aaronpowell.github.io/Chauffeur/

ASP 0.04% C# 29.13% F# 8.63% PowerShell 0.15% JavaScript 31.37% HTML 19.11% CSS 11.50% Shell 0.07%
umbraco umbraco-installer umbraco-apis continuous-integration

chauffeur's Introduction

Chauffeur

Build type Status NuGet Code Coverage
master Build Status NuGet Badge codecov
dev Build Status NuGet Badge

Welcome to Chauffeur, delivering changes to your Umbraco environment in style.

Who is Chauffeur?

Chauffeur is a CLI for Umbraco, it will sit with your Umbraco websites bin folder and give you an interface to which you can execute commands, known as Deliverables, against your installed Umbraco instance.

Chauffeur is developed for Umbraco 7.x as it is designed around the new Umbraco API.

Getting Started

To get started install Chauffeur and open up a command window and launch Chauffeur.Runner.exe, which is the entry point for Chauffeur. From the prompt you can get started running deliverables.

Running Demo

The easiest way to run the demo application is to execute the run-demo.ps1 script from the root. This will:

  • Compile
  • Install the demo website using Chauffeur
  • Start IIS Express for the demo website

License

Chauffeur is licensed under MIT.

Chauffeur Logo is from Ed Piel used under Creative Commons from The Noun Project

chauffeur's People

Contributors

aaronpowell avatar azure-pipelines[bot] avatar dinc5150 avatar mderriey avatar stevetemple avatar stuartcrouch 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

Watchers

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

chauffeur's Issues

Scaffold with differences

The scaffold deliverable is great for getting an initial build set up on a new machine. However, it feels like it needs to go one step further to fit my use case.

I envisage that I would be able to create document types/templates etc. in my local copy of Umbraco, then scaffold the output which would result in a delivery file containing only the differences since last scaffold, that I can then commit to source control that CI/CD will then deploy onto a production environment.

I have tried doing a second scaffold (without the install step) and that runs through, but it only "installs" new document types and doesn't amend existing document types should I have made any changes to it.

Could it be that I am I going about things all wrong? Is there a suggested way to achieve what I'm trying to do?

Package deliverable does not create sub-folders due to leading slash '/'

Upon attempt to install package that has files in sub-folders (e.g. '/css'), an the following error appears:

Error running the current deliverable 'package'
System.UnauthorizedAccessException: Access to the path '/css' is denied.

The error message is thrown while creating the folder - the folder tries to create /css folder (in other words, create css folder under drive root - D:).

It seems that this is caused by the fact, that the path begins with leading slash '/', not '~/', as expected by the code that prepares the path. The leading slash is not being stripped off.

User deliverables

looking at adding this command to user

add-user [

<section...]

but, there are many user related operations i need to do as part of a initial setup - unless i revert back to sql scripts yuk!

so would it be more feasible to have the ability of plugins ?

register a plugin for a specific deliverable which extends the command range without bloating the core of Chauffeur

thoughts ?
W

Connection string as a CLI argument

The current version requires valid connection string in web.config. It makes Umbraco/VSTS continuous delivery scenario more complex when using WebDeploy - WebDeploy doesn't leave transformed web.config on the deployment agent (which makes sense).

Therefore, the only approach I found, a quite ugly one, is to unzip WD package, transform web.config outside of webDeploy, zip it back and use webDeploy after that.

It will be helpful if Chauffeur took a connection string argument, so at least web.config transformation outside of webDeploy wouldn't be required.

Something like:
-c "<connection string>"

Since, I update Umbraco DB connection string from the VSTS CD pipeline, I will have a consistent argument going to both - webDeploy and Chauffeur

Doesnt work against umbraco 7.7.7

Started at a new company where we want to spin up umbraco from scratch
Chauffeur seemed perfect for this but it doesnt work with 7.7.7. It complains of an automapper inconsistency

PS C:\Users\Stuart\source\repos\GVUmbraco\CoffeeLovers\bin> .\Chauffeur.Runner.exe

Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'AutoMapper, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

I tried building against the new version of umbraco, but the compiler complains that

Build started 07/01/2018 21:12:17.
     1>Project "C:\src\Chauffeur\Chauffeur.sln" on node 1 (Build target(s)).
     1>ValidateSolutionConfiguration:
         Building solution configuration "Release|Any CPU".
       ValidateProjects:
         The project "Chauffeur.Demo" is not selected for building in solution configuration "Release|Any CPU".
     1>Project "C:\src\Chauffeur\Chauffeur.sln" (1) is building "C:\src\Chauffeur\Chauffeur\Chauffeur.csproj" (2) on node 1 (default targets).
     2>PrepareForBuild:
         Creating directory "bin\Release\".
     1>Project "C:\src\Chauffeur\Chauffeur.sln" (1) is building "C:\src\Chauffeur\Chauffeur.Tests.Integration\Chauffeur.Tests.Integration.fsproj" (3) on node 4 (default targets).
     3>C:\src\Chauffeur\Chauffeur.Tests.Integration\Chauffeur.Tests.Integration.fsproj(55,3): error MSB4020: The value "" of the "Project" attribute in element <Import> is invalid.

Chauffeur not adding new crop sizes when updating a data type deriving from Umbraco.ImageCropper.

Chauffeur doesn't seem to be adding new crop sizes from exported packages.

In the example below, "relatedPost" and "postHeader" were the new sizes to be added.

Delivery file

p 005-ArticulateCropper

005-ArticulateCropper.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<umbPackage>
  <files />
  <info>
    <!-- info omitted-->
  </info>
  <DocumentTypes />
  <Templates />
  <Stylesheets />
  <Macros />
  <DictionaryItems />
  <Languages />
  <DataTypes>
    <DataType Name="Articulate Cropper" Id="Umbraco.ImageCropper" Definition="c8f535ee-27b8-4d16-940d-d6c523851bb1" DatabaseType="Ntext">
      <PreValues>
        <PreValue Id="71" Value="[&#xD;&#xA;  {&#xD;&#xA;    &quot;alias&quot;: &quot;blogPost&quot;,&#xD;&#xA;    &quot;width&quot;: 200,&#xD;&#xA;    &quot;height&quot;: 200&#xD;&#xA;  },&#xD;&#xA;  {&#xD;&#xA;    &quot;alias&quot;: &quot;thumbnail&quot;,&#xD;&#xA;    &quot;width&quot;: 50,&#xD;&#xA;    &quot;height&quot;: 50&#xD;&#xA;  },&#xD;&#xA;  {&#xD;&#xA;    &quot;width&quot;: 400,&#xD;&#xA;    &quot;height&quot;: 200,&#xD;&#xA;    &quot;alias&quot;: &quot;relatedPost&quot;&#xD;&#xA;  },&#xD;&#xA;  {&#xD;&#xA;    &quot;alias&quot;: &quot;postHeader&quot;,&#xD;&#xA;    &quot;width&quot;: 1600,&#xD;&#xA;    &quot;height&quot;: 400&#xD;&#xA;  }&#xD;&#xA;]" Alias="crops" SortOrder="0" />
      </PreValues>
    </DataType>
  </DataTypes>
</umbPackage>

force upgrade to specific version

Hi,

just a general 'how can we' question on umbraco upgrade via a delivery;

How could a delivery access this
public virtual bool Execute(Database database, bool isUpgrade = true) { return Execute(database, database.GetDatabaseProvider(), isUpgrade); }

which is part of MigrationRunner and in inside the DatabaseContext internal method UpgradeSchemaAndData ?

Chauffeur Runner errors with fresh install of Umbraco and Chauffeur

I watched your video on "Automating Umbraco with Chauffeur" (https://www.youtube.com/watch?v=CQFu3fmIdms) and wanted to give it a go (we are starting to use Umbraco and deployment is crazy!).

  • Using the latest VS 2017 I created a new empty web project using .net 4.7.
  • I then added the latest UmbracoCMS from the NuGet manager (7.7.4) and the latest Chauffeur & Chauffeur.Runner (both v0.12.1)
  • I rebuilt the project
  • Opened a Command Prompt to the bin folder
  • Ran Chauffeur.Runner.exe and was presented with the following error:
Unhandled Exception: System.Reflection.ReflectionTypeLoadException: Could not load all types from "Chauffeur, Version=0.12.0.0, Culture=neutral, PublicKeyToken=null" due to LoaderExceptions, skipping:
. System.IO.FileNotFoundException: Could not load file or assembly 'System.ValueTuple, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The system cannot find the file specified.
. System.IO.FileNotFoundException: Could not load file or assembly 'System.ValueTuple, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The system cannot find the file specified.

   at Umbraco.Core.TypeFinder.GetTypesWithFormattedException(Assembly a)
   at Umbraco.Core.TypeFinder.GetClassesWithBaseType(Type baseType, IEnumerable`1 assemblies, Boolean onlyConcreteClasses, Func`2 additionalFilter)
   at Umbraco.Core.TypeFinder.FindClassesOfType[T](IEnumerable`1 assemblies, Boolean onlyConcreteClasses)
   at Chauffeur.ShittyIoC..ctor()
   at Chauffeur.Host.UmbracoHost..ctor(TextReader reader, TextWriter writer)
   at Chauffeur.Runner.Program.Main(String[] args)
   at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, String[] args)
   at Chauffeur.Runner.Program.Main(String[] args)

After digging through the msg and testing I established that Chauffeur Runner requires System.ValueTuple, Version=4.0.2.0 or above. Upon installing System.ValueTuple v4.4.0 (latest) and re-running the Chauffeur.Runner.exe command it fixed it.

I couldn't see anything in your docs about this and it wasn't mentioned in the video's I've watched. Also the error message isn't great! Though maybe if it's a requirement that isn't installed with Umbraco (at least the current version) you could add it as a dependency to your Nuget package and/or put it in your docs. ;)

Expansion of user deliverable

Hi Aaron,

I have a branch ready for a pull request on the Chauffeur repository
https://github.com/aDotNetDeveloper/Chauffeur

This branch has has the following enhancements to the user deliverable

change-name <username> <new username>
  Changes the user name for a given user.
change-loginname <username> <new loginname>
  Changes the login name for a given user.```

regards
Wayne

I want a way to easily setup Chauffeur

I think there needs to be a way that you can easily scaffold up the usage of Chauffeur into a new project (or an existing project). It should be able to do:

  • Creation of an initial deliverable
    • This would likely just do install y and user change-password
  • Export the current sites DocTypes/DataTypes/etc.

I'm thinking that the usage would be:

umbraco> scaffold

Then it could have other easy things to do like:

  • Scaffold up an empty delivery: scaffold new-delivery 002-something
  • Guided setup, which would drop into an interactive question to select what you want to go into it

Ultimately it'd just be something to get you first started.

Support parameters to the Delivery deliverable

If you're using the delivery Deliverable you can run into a problem with changing the password - you can't pass it in, it has to be in the .delivery file.

This is an issue when it comes to source control, you have to check in your passwords, which obviously isn't ideal.

Instead you should be able to pass in parameters when calling chauffeur.runner.exe delivery, something like:

PS> .\chauffeur.runner.exe delivery -p:Foo=bar -p:Baz=123

Inside the .delivery files you can then reference the parameters by name:

install -y
user change-password admin $Foo

NuGet packages

Need a NuGet package to install the runner and for the API so you can create your own Deliverables

Runner looking for Microsoft.CodeAnalysis.CSharp, Version=1.0.0.0

after an upgrade to Umbraco 7.6.3, followed by upgrade of Chauffer using nuget & attempting to deliver using Chauffer.Runner:

.\Chauffeur.Runner.exe
Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'Microsoft.CodeAnalysis.CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies.

version 2.2.2.0 of Microsoft.CodeAnalysis.CSharp is installed

<dependentAssembly>
        <assemblyIdentity name="Microsoft.CodeAnalysis.CSharp" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.2.0.0" newVersion="2.2.0.0" />
</dependentAssembly>

Runner throws an error in 7.3rc

I know it's a Release Candidate - I therefore accept if no support is offered

Running Chauffeur.Runner on Umbraco 7.3 results in an error.

Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object. at Chauffeur.DependencyBuilders.MappingResolversBuilder.SetupMappingResolver() at Chauffeur.DependencyBuilders.MappingResolversBuilder.Build(IContainer container) at Chauffeur.ShittyIoC.RegisterFrom[T]() at Chauffeur.Host.UmbracoHost..ctor(TextReader reader, TextWriter writer) at Chauffeur.Runner.Program.Main(String[] args) at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, String[] args) at Chauffeur.Runner.Program.Main(String[] args)

I've looked at the Morton's Console example (https://github.com/sitereactor/umbraco-console-example) and that throws a similar error, so i think something has changed in the BootManager ?

Can't remove document types

There's no way using Chauffeur to remove a document type.

Want to be able to remove one by either alias or ID.

Chauffeur 1.4.1 with umbraco 7.14.0 - cant find core

What went wrong?

Chauffeur.Runner.exe

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'Umbraco.Core, Version=1.0.6611.19702, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
at Chauffeur.ShittyIoC..ctor()
at Chauffeur.Host.UmbracoHost..ctor(TextReader reader, TextWriter writer)
at Chauffeur.Runner.Program.Main(String[] args)
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, String[] args)
at Chauffeur.Runner.Program.Main(String[] args)

What should have happened?

I would have expected umbraco to install and the db to be full of tables

How can I reproduce the issue?

Downloaded umbraco 7.14.0 with the plan to install umbraco and update to a certain db state using chauffeur and usync.chauffeur
Downloaded chauffeur.runner 1.4.1
Added a SQL database to the web.config.
Launched Chauffeur.Runner.exe install

Feel free to drop the path & connection string, I'm most interested in the versions.

Anything else you can think of

  • Did you receive any error messages/stack traces?
  • If you're using the Delivery feature, can you provide the Delivery that it errors on?
  • Are you able to create a repo that I can see the error in action?

Chauffeur seems to crash if you use `App_Code`

Have a site with some .cs in App_Code and Chauffeur crashed. Really don't think you should use App)_Code but still...

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'App_Code' or one of its dependencies. The system cannot find the file specified.
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection)
at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
at System.Reflection.Assembly.Load(String assemblyString)
at Umbraco.Core.TypeFinder.GetAllAssemblies()
at Umbraco.Core.TypeFinder.GetFilteredAssemblies(IEnumerable`1 excludeFromResults, String[] exclusionFilter)
at Umbraco.Core.TypeFinder.GetAssembliesWithKnownExclusions(IEnumerable`1 excludeFromResults)
at Chauffeur.ShittyIoC..ctor()
at Chauffeur.Host.UmbracoHost..ctor(TextReader reader, TextWriter writer)
at Chauffeur.Runner.Program.Main(String[] args)
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, String[] args)
at Chauffeur.Runner.Program.Main(String[] args)

IndexOutOfRangeException after upgrading to V1.1

Hey Aaron,
Just upgraded to V1.1 against Umbraco 7.11.1 and getting an error when running any command (including help). Tested an upgrade on a couple of sites both with the same results.

Downgraded to 1.0 and works fine .

The error is below. Let me know if you need any more details

Unhandled Exception: System.AggregateException: One or more errors occurred. ---> System.IndexOutOfRangeException: Index was outside the bounds of the array.
   at Chauffeur.Host.UmbracoHost.<Process>d__14.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Chauffeur.Host.UmbracoHost.<Run>d__12.MoveNext()
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   at Chauffeur.Runner.Program.Main(String[] args)
   at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, String[] args)
   at Chauffeur.Runner.Program.Main(String[] args)

Initialize ApplicationContext

At the moment all dependencies are managed at the time they are needed. This is making some really ugly dependency chains, and also having issues with some dependencies that are required but can't set setup as they are internal.

I think if the ApplicationContext was properly setup, maybe even a IBootManager we can get Umbraco to do more of the dependency wireup than can be done by hand.

Chauffeur requires a relative path to run

Your current working folder much be the same folder Chauffeur is in else it crashes. The paths should be relative to the location of the exe, not the shell it's launched from

Dictionary Deliverable

Hey Aaron!

I've completed the dev for the dictionary deliverable, minus the completed F# tests (I've been really busy and haven't had time to properly get my head around F#).

Any chance I could push the branch for review?

Cheers,

Mark (@MarkMcD27)

Runner defaults to Chauffeur 0.9.0

Resolved actions to install package 'Chauffeur.Runner.0.9.0'
Retrieving package 'Chauffeur 0.9.0' from 'nuget.org'.
Retrieving package 'Chauffeur.Runner 0.9.0' from 'nuget.org'.

Trying to run .\run-demo.ps1 from Master

I am interested in seeing whether we can incorporate this, but when I clone the repository, and the run .\run-demo.ps1, I get errors! Any help would be appreciated:

Building project with version: LocalBuild
Shortened DependencyGraph for Target Build:
<== Build
   <== AssemblyInfo
   <== Clean
   <== RestoreChauffeurTestsPackages
      <== RestoreChauffeurDemoPackages
         <== RestoreChauffeurTestingToolsPackages
            <== RestoreChauffeurPackages

The resulting target order is:
 - AssemblyInfo
 - Clean
 - RestoreChauffeurPackages
 - RestoreChauffeurTestingToolsPackages
 - RestoreChauffeurDemoPackages
 - RestoreChauffeurTestsPackages
 - Build
Starting Target: AssemblyInfo
  NoDescription
git.exe log --oneline -1
Finished Target: AssemblyInfo
Running build failed.
Error:
System.Exception: git log --oneline failed: fatal: not a git repository (or any of the parent directories): .git
   at Microsoft.FSharp.Core.PrintfModule.PrintFormatToStringThenFail@1379.Invoke(String message)
   at Fake.Tools.Git.Information.shortlog(String repositoryDir) in C:\proj\FAKE\src\app\Fake.Tools.Git\Information.fs:line 94
   at Fake.Tools.Git.Information.getCurrentHash() in C:\proj\FAKE\src\app\Fake.Tools.Git\Information.fs:line 110
   at [email protected](TargetParameter _arg1)
   at Fake.Core.Target.runSingleTarget(Target target) in C:\proj\FAKE\src\app\Fake.Core.Target\Target.fs:line 449

---------------------------------------------------------------------
Build Time Report
---------------------------------------------------------------------
No target was successfully completed
---------------------------------------------------------------------
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.AggregateException: Target 'AssemblyInfo' failed. ---> System.Exception: git log --oneline failed: fatal: not a git repository (or any of the parent directories): .git
   at Microsoft.FSharp.Core.PrintfModule.PrintFormatToStringThenFail@1379.Invoke(String message)
   at Fake.Tools.Git.Information.shortlog(String repositoryDir) in C:\proj\FAKE\src\app\Fake.Tools.Git\Information.fs:line 94
   at Fake.Tools.Git.Information.getCurrentHash() in C:\proj\FAKE\src\app\Fake.Tools.Git\Information.fs:line 110
   at [email protected](TargetParameter _arg1)
   at Fake.Core.Target.runSingleTarget(Target target) in C:\proj\FAKE\src\app\Fake.Core.Target\Target.fs:line 449
   --- End of inner exception stack trace ---
   at Fake.Core.Target.run$cont@476(String targetName, Unit unitVar) in C:\proj\FAKE\src\app\Fake.Core.Target\Target.fs:line 543
   at Fake.Core.Target.run(String targetName) in C:\proj\FAKE\src\app\Fake.Core.Target\Target.fs:line 476
   at Fake.Core.Target.RunOrDefault(String defaultTarget) in C:\proj\FAKE\src\app\Fake.Core.Target\Target.fs:line 571
   at <StartupCode$FSI_0005>.$FSI_0005_Build$fsx.main@()
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at [email protected](Unit unitVar0) in C:\proj\FAKE\src\app\FakeLib\FSIHelper.fs:line 337
System.AggregateException: Target 'AssemblyInfo' failed. ---> System.Exception: git log --oneline failed: fatal: not a git repository (or any of the parent directories): .git
   at Microsoft.FSharp.Core.PrintfModule.PrintFormatToStringThenFail@1379.Invoke(String message)
   at Fake.Tools.Git.Information.shortlog(String repositoryDir) in C:\proj\FAKE\src\app\Fake.Tools.Git\Information.fs:line 94
   at Fake.Tools.Git.Information.getCurrentHash() in C:\proj\FAKE\src\app\Fake.Tools.Git\Information.fs:line 110
   at [email protected](TargetParameter _arg1) in D:\Projects\Test\Chauffeur-master\build.fsx:line 67
   at Fake.Core.Target.runSingleTarget(Target target) in C:\proj\FAKE\src\app\Fake.Core.Target\Target.fs:line 449
   --- End of inner exception stack trace ---
   at Fake.Core.Target.run$cont@476(String targetName, Unit unitVar) in C:\proj\FAKE\src\app\Fake.Core.Target\Target.fs:line 543
   at Fake.Core.Target.run(String targetName) in C:\proj\FAKE\src\app\Fake.Core.Target\Target.fs:line 476
   at Fake.Core.Target.RunOrDefault(String defaultTarget) in C:\proj\FAKE\src\app\Fake.Core.Target\Target.fs:line 571
   at <StartupCode$FSI_0005>.$FSI_0005_Build$fsx.main@() in D:\Projects\Test\Chauffeur-master\build.fsx:line 258
---> (Inner Exception #0) System.Exception: git log --oneline failed: fatal: not a git repository (or any of the parent directories): .git
   at Microsoft.FSharp.Core.PrintfModule.PrintFormatToStringThenFail@1379.Invoke(String message)
   at Fake.Tools.Git.Information.shortlog(String repositoryDir) in C:\proj\FAKE\src\app\Fake.Tools.Git\Information.fs:line 94
   at Fake.Tools.Git.Information.getCurrentHash() in C:\proj\FAKE\src\app\Fake.Tools.Git\Information.fs:line 110
   at [email protected](TargetParameter _arg1) in D:\Projects\Test\Chauffeur-master\build.fsx:line 67
   at Fake.Core.Target.runSingleTarget(Target target) in C:\proj\FAKE\src\app\Fake.Core.Target\Target.fs:line 449<---
Stopped due to error

Push-Location : Cannot find path 'D:\Projects\Test\Chauffeur-master\Chauffeur.Demo\bin' because it does not exist.
At D:\Projects\Test\Chauffeur-master\run-demo.ps1:4 char:1
+ Push-Location .\Chauffeur.Demo\bin
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (D:\Projects\Tes...uffeur.Demo\bin:String) [Push-Location], ItemNotFound
   Exception
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.PushLocationCommand

./chauffeur.runner.exe : The term './chauffeur.runner.exe' is not recognized as the name of a cmdlet, function, script
file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct
and try again.
At D:\Projects\Test\Chauffeur-master\run-demo.ps1:5 char:1
+ ./chauffeur.runner.exe delivery "-p:pwd=password!1"
+ ~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (./chauffeur.runner.exe:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Copied template config file 'C:\Program Files (x86)\IIS Express\AppServer\applicationhost.config' to 'C:\Users\adelboy\AppData\Local\Temp\iisexpress\applicationhost2018813110367.config'
Updated configuration file 'C:\Users\adelboy\AppData\Local\Temp\iisexpress\applicationhost2018813110367.config' with given cmd line info.
Starting IIS Express ...
Failed to register URL "http://localhost:8080/" for site "Development Web Site" application "/". Error description: Cannot create a file when that file already exists. (0x800700b7)
Registration completed
Unable to start iisexpress.

Cannot create a file when that file already exists.
For more information about the error, run iisexpress.exe with the tracing switch enabled (/trace:error).

Content-Type formatting doesn't work so well

Currently it just uses a single \t to do the indenting, which means that it falls apart pretty quickly when you don't have names or aliases of the same length.

Need to work out a better way to format it.

Deliverable Packages

With content-type you can import/export a single item, but it'd be better if you could have a more complex set of deliveries, something that could:

  • Add multiple doc types
  • Remove doc types
  • Add content
  • Add macros/data types/etc

I see this working a bit like Orchard Recipes, where you define multiple things to do in a single file, and then run that single file:

umbraco> deliver PackageName

Package deliverable error if composed doctype parent hasn't been added

Hey Aaron,

I've been banging my head off the wall with this all day. I created a custom package in Umbraco with docTypes that are composed from a base docType.

I was having trouble importing the package using Chauffeur, but it would import without an issue when using the Umbraco backoffice functionality.

The package deliverable code loops through the doctype elements in the package xml and adds them on a first-in-first-out basis, I think this may need updating to find any base types first and import those before loading the doctypes that have compositions defined.

As an arbitrary example, I've attached two package xml files, one that works and another that throws the exception. The 'RichTextPage' doctype is composed of the 'BasePage' doctype and if Chauffeur tries to load the 'RichTextPage' before the 'BasePage', the import fails (as it should). Although an arbitrary example, this was a real issue where I had a doctype that was declared in the xml before the 'BasePage' and the import failed.

Let me know if you are able to replicate it/need more info. I'll be happy to help with a solution too if needed.

Chauffeur.zip

ChauffeurRunner.exe crashes

Process to replicate

Open new project

nuget install UmbracoCMS 7.11.1
nuget install Chauffeur 1.1.1
nuget install Chauffeur.Runner 1.1.1
nuget install Chauffeur.TestingTools 1.1.1

Open PowerShell
change to root directory of project,
Run runner using .\[project_name]\bin\Chauffeur.Runner.exe

The following error came out:

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'Umbraco.Core, Version=1.0.6470.38234, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
   at Chauffeur.ShittyIoC..ctor()
   at Chauffeur.Host.UmbracoHost..ctor(TextReader reader, TextWriter writer)
   at Chauffeur.Runner.Program.Main(String[] args)
   at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, String[] args)
   at Chauffeur.Runner.Program.Main(String[] args)

Is this not meant to be run with the latest version of Umbraco? It says >= 7.7, but seems like the version of the latest assembly is 1.0.6750.39767, not what was expected above... How to get around this?

The Expected parameters for 'change-password' were not supplied

I've been using Chauffeur on my 7.2.8 websites and its been working great, however, I've just used it in a 7.3.0-RC site and cant seem to update the default password.

It creates the default SQL CE database fine, but when I run the command "user change-password 0 default newpass" I get the error "The Expected parameters for 'change-password' were not supplied. Format Expected: change-password "

Chauffeur 0.6.3 installed via nuget

Any ideas?

Thoughts: Trying to use Chauffeur as a component builder

Hello

I have written up a way of using NuGet packages to take various components that might need to be delivered.

In NuGet packages, one should be able to 'uninstall' components as easily as install. This means that there may or should be a way to uninstall any documenttypes and templates from the system. At the moment, I may be able to get away with this, but at the very least I need to remove the 'signature' for the previously installed document types to keep testing - where would I find this, and is there a way to use chauffeur to remove components as well as add them?

Thanks

Running Chaffeur With Stacked Content and uSync

I've run into an issue with Chaffeur where we're running a deliverable that runs uSync content, but we've discovered that if you have a content change that includes a page with Stacked Content, it doesn't seem to work. The content doesn't get imported at all.

Will update issue with more details as we investigate, but running latest Umbraco/uSync/Chaffeur.

Check status of a delivery

It'd be useful to be able see if a delivery has previously been signedFor or what the status of it is on an environment. I'm thinking something like:

umbraco> delivery status 001-Delivery

Would say:

Name: 001-Delivery.delivery
Status: Signed For
Date: 10/06/2014

Allow command-line switches to the runner

Currently you have to start up Chauffeur's runner before you can execute a command.

You need to be able to launch into it without having to start the REPL, like so:

$> .\Chauffeur.Runner.exe <deliverable> ?<args>

This, linked with #2 means you could do:

c:\Demo-Website\bin> .\Chauffeur.Runner.exe deliver MyLatestUpdates

Unhandled Exception - Umbraco 7.11 and Chauffeur 1.2.0

I have installed the package as per description in the documentation. When I run it though using Chauffeur.Runner.exe command I get:
Unhandled Exception: System.ArgumentNullException: String reference not set to an instance of a String. Parameter name: s at System.Text.Encoding.GetBytes(String s) ...
error. I'm using Umbraco 7.11 and latest version of Chauffeur which is currently 1.2.0. Has anyone else experienced similar issue?

A side question. Would Chauffeur allow me to install Umbraco package from a .zip file using command prompt?

Support newer versions of umbraco

Hi,
Chauffeur looks really interesting, but doesn't work with current versions of Umbraco.

It seems like keeping one version of Chauffeur working cross different versions of umbraco 7.x will be quite hard. I'm not sure how to solve this.

Anyway, I've tried to update Chauffeur to work with 7.6 in https://github.com/slahn/Chauffeur/tree/umbraco-7.6
Still a couple of tests that don't pass - they seem to fail because of actual changes in umbraco.

Force running of a delivery

Sometimes you might want to force a delivery to run for a specific delivery pack but you don't want to hack the database, so I want a way to override the signedFor check.

Add ability for Chauffeur to handle content (optional)

It would be nice if the scaffold deliverable provided an option to include current content in the XML export of the current installation. This would also require a change to the package deliverable to process the Documents node to import this content (if included).

Support SQL CE

You can't load a SQL CE database as it is in DataDirectory|DB_Name.mdf, which maps to the App_Data in the web context, but in a console app it doesn't.

Need to work out how to solve that problem cuz at the moment you can't load a SQL CE database

Importing content type won't update properties

When you're importing a content type, either via the package or content-type import feature and you've changed a properties details they won't get updated.

The crux of the problem is that when you're doing an import it hydrades the XML using the logic in the ContentTypeCompositionBase class and when it finds properties you end up in [this method[(https://github.com/umbraco/Umbraco-CMS/blob/dev-v7/src/Umbraco.Core/Models/ContentTypeCompositionBase.cs#L218) and it'll find that the alias matches one that's already on the content type, so it'll bail out.

Digging into the uSync codebase, which doesn't have this problem, it seems that they don't use the packaging service, instead they walk the XML and update everything manually, so aren't subjected to the same problems.

I likely will need to do something similar to get it working as while I get that this is by design of the package engine in Umbraco it's not working as expected to a user.

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.