Coder Social home page Coder Social logo

acquia / blt Goto Github PK

View Code? Open in Web Editor NEW
442.0 50.0 394.0 7.96 MB

Acquia's toolset for automating Drupal 10 development, testing, and deployment.

Home Page: https://docs.acquia.com/blt/

License: GNU General Public License v2.0

Shell 2.21% PHP 97.69% Batchfile 0.04% Twig 0.07%
drupal automation ci

blt's People

Contributors

anavarre avatar arknoll avatar aweingarten avatar ba66e77 avatar bkosborne avatar bobbygryzynger avatar cashwilliams avatar christopher-hopper avatar damontgomery avatar danepowell avatar dependabot[bot] avatar dooleymatt avatar dpagini avatar geerlingguy avatar grasmash avatar greylabel avatar hugovk avatar jrbeeman avatar justinlevi avatar lcatlett avatar malikkotob avatar mikemadison13 avatar secretsayan avatar shelane avatar srowlands avatar timcosgrove avatar traviscarden avatar typhonius avatar violinist-bot avatar wu-edward 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

blt's Issues

grasmash/phing composer dependency Build Failure

Getting an error when running ./bolt.sh create -debug -verbose from with a drupal-vm ssh session @geerlingguy @grasmash

  - Installing phing/phing (dev-propertyfile-fix b23d903)                                                                                                                          
    Cloning b23d903f1d12ee615a9267fab3e2f67519805294                                                                                                                               
    b23d903f1d12ee615a9267fab3e2f67519805294 is gone (history was rewritten?)                                                                                                      


  [RuntimeException]                                                                                                                                                               
  Failed to execute git checkout 'b23d903f1d12ee615a9267fab3e2f67519805294' -- && git reset --hard 'b23d903f1d12ee615a9267fab3e2f67519805294' --                                   
  fatal: reference is not a tree: b23d903f1d12ee615a9267fab3e2f67519805294                                                                                                         


install [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--no-custom-installers] [--no-autoloader] [--no-scripts] [--no-progress] [-v|vv|vvv|--verbose] [-o|--opti
mize-autoloader] [-a|--classmap-authoritative] [--ignore-platform-reqs] [--] [<packages>]...                                                                                       


BUILD FAILED                                                                                                                                                                       
BuildException: /var/www/drupalvm/bolt/build/phing/build.xml:135:112: Task exited with code 1 in /var/www/drupalvm/bolt/vendor/phing/phing/classes/phing/tasks/system/ExecTask.php:
338                                                                                                                                                                                
Stack trace:                                                                                                                                                                       
#0 /var/www/drupalvm/bolt/vendor/phing/phing/classes/phing/tasks/system/ExecTask.php(156): ExecTask->cleanup(1, Array)                                                             
#1 /var/www/drupalvm/bolt/vendor/phing/phing/classes/phing/UnknownElement.php(100): ExecTask->main()                                                                               
#2 /var/www/drupalvm/bolt/vendor/phing/phing/classes/phing/Task.php(283): UnknownElement->main()                                                                                   
#3 /var/www/drupalvm/bolt/vendor/phing/phing/classes/phing/Target.php(336): Task->perform()                                                                                        
#4 /var/www/drupalvm/bolt/vendor/phing/phing/classes/phing/Target.php(366): Target->main()                                                                                         
#5 /var/www/drupalvm/bolt/vendor/phing/phing/classes/phing/Project.php(898): Target->performTasks()                                                                                
#6 /var/www/drupalvm/bolt/vendor/phing/phing/classes/phing/Project.php(868): Project->executeTarget('create')                                                                      
#7 /var/www/drupalvm/bolt/vendor/phing/phing/classes/phing/Phing.php(706): Project->executeTargets(Array)                                                                          
#8 /var/www/drupalvm/bolt/vendor/phing/phing/classes/phing/Phing.php(196): Phing->runBuild()                                                                                       
#9 /var/www/drupalvm/bolt/vendor/phing/phing/classes/phing/Phing.php(343): Phing::start(Array, NULL)                                                                               
#10 /var/www/drupalvm/bolt/vendor/phing/phing/bin/phing.php(58): Phing::fire(Array)                                                                                                
#11 /var/www/drupalvm/bolt/vendor/phing/phing/bin/phing(14): require_once('/var/www/drupal...')                                                                                    
#12 {main}                                                                                                                                                                         

Total time: 13 minutes  0.30 seconds                                                                                                                                               

When manually trying to run composer update from within the default bolted8 directory, I'm getting a bunch of dependency requirement errors as well.

vagrant@drupalvm:/var/www/drupalvm/bolted8$ composer update
Gathering patches for root package.
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

Problem 1
- Installation request for drupal/lightning 8.1.00-rc3 -> satisfiable by drupal/lightning[8.1.00-rc3].
- drush/drush dev-master requires codegyre/robo ~1.0.0-beta1 -> satisfiable by codegyre/robo[1.0.0-beta1].
- drush/drush dev-master requires codegyre/robo ~1.0.0-beta1 -> satisfiable by codegyre/robo[1.0.0-beta1].
- Conclusion: don't install codegyre/robo 1.0.0-beta1
- Installation request for drush/drush dev-master -> satisfiable by drush/drush[dev-master].

Thought it had something to do with the repository definition being git versus vcs or the require-dev being phing/phing instead of

grasmash/phing

But, nothing seems to be working for me.

Distinction needed between 'CI' environment and 'local' environment

Currently, there are some things, like the setup tasks (specifically, setup:drupal:settings and setup:drupal:install), which are used both for local environment builds and for Travis CI (and other CI) builds.

This makes trying to have a different configuration for CI and local environments difficult (and close to impossible, if you don't know where to adjust drush aliases, drush overrides for phing, mysql settings, etc.).

We need to be able to have Phing use CI environment targets (and maybe a ci Drush alias instead of local/remote) that are able to be different than local targets. The main things that are different in my case:

  • I had to set drush.root to '' in my build/phing/custom/phing/build.yml override file, so I could control the docroot via Drush aliases.
  • I added two drush aliases to drush/aliases/aliases.drushrc.php: [subname].ci (for Travis environment), and [subname].local (for Local env).
  • I also had to include some travis-ci environment overrides so I could have different MySQL database connection settings for Drupal (thanks to @aweingarten for this suggestion!).

Added travis.settings.php file:

<?php

if (getenv('TRAVIS')) {
  $databases = array(
    'default' => array(
      'default' => array(
        'database' => 'subname',
        'username' => 'root',
        'password' => '',
        'host' => 'localhost',
        'port' => '3306',
        'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
        'driver' => 'mysql',
        'prefix' => '',
      ),
    ),
  );

  $base_url = 'http://127.0.0.1:8888';
}

(Loaded by adding the following to default.local.settings.php):

<?php
/**
 * Load Travis CI overrides.
 */
if (file_exists(DRUPAL_ROOT . '/sites/default/settings/travis.settings.php')) {
  require DRUPAL_ROOT . '/sites/default/settings/travis.settings.php';
}

Updated Drush alias file that's checked in and shared with the team:

<?php
$aliases['subname.ci'] = array(
  'root' => '/home/travis/build/organization/repo/docroot',
  'uri' => 'http://127.0.0.1:8888',
);

$aliases['subname.local'] = array(
  'root' => '/var/www/organization/docroot',
  'uri' => 'local.repo.com',
  'remote-host' => 'local.repo.com',
  'remote-user' => 'vagrant',
  'ssh-options' => '-i ~/.vagrant.d/insecure_private_key',
);

ACSF does not get hash salt set

Since acsf-init blows away hash salt, we need to find a way to generate a file that gets put in pre-settings.php in factory-hooks that loads this variable in.

Add Twig syntax check to Git pre-commit hook

Symfony2 provides a console command for syntax checking Twig templates:

# You can check by filename:
$ php bin/console lint:twig app/Resources/views/article/recent_list.html.twig

# or by directory:
$ php bin/console lint:twig app/Resources/views

We should consider adding this check to the Git pre-commit hook (and anywhere else we do linting).

Running setup:bolt:update has error

A    build/core/phing/tasks/filesets.xml
A    build/core/phing/tasks/frontend.xml
A    build/core/phing/tasks/local-sync.xml
A    build/core/phing/tasks/properties.xml
A    build/core/phing/tasks/setup.xml
A    build/core/phing/tasks/tests.xml
A    build/core/phing/tasks/validate.xml
Exported revision 41.
A    drush.wrapper
Export complete.
svn: E000002: Can't create temporary file from template 'factory-hooks/post-settings-php/svn-XXXXXX': No such file or directory

`

How do you use standard/minimal core profiles?

If I create a bolt project with standard or minimal profiles instead of the default lightning, then I get the following error when running ./bolt.sh setup:

project > setup:build:profile:

     [echo] Building make file for standard
    [drush] Executing '/Users/jeff.geerling/Sites/vendor/bin/drush --no-core --nocolor --root=/Users/jeff.geerling/Sites/docroot --yes --verbose make "/Users/jeff.geerling/Sites/docroot/profiles/contrib/standard/drupal-org.make" /Users/jeff.geerling/Sites/docroot/profiles/contrib/standard'...
Loading release_info engine.                                                                                    [notice]
file_get_contents(/Users/jeff.geerling/Sites/docroot/profiles/contrib/standard/drupal-org.make):   [warning]
failed to open stream: No such file or directory make.utilities.inc:577
Invalid or empty make file:                                                                                      [error]
/Users/jeff.geerling/Sites/docroot/profiles/contrib/standard/drupal-org.make
Beginning to build /Users/jeff.geerling/Sites/docroot/profiles/contrib/standard/drupal-org.make.        [ok]
Source directory /tmp/make_tmp_1462391008_572a50e0df292/__build__ is not readable or does not exist.             [error]
Cannot move build into place.                                                                                    [error]

Harmonize ACE and ACSF deploy artifacts

When we added ACSF deployment support, we assumed that simultaneous deployments of projects to ACE and ACSF would be an edge case. However, after discussion with several project leads, we're realizing that maintaining parallel ACE and ACSF environments may actually be a best practice.

The problem is that right now, each deploy has to specifically target ACE or ACSF, and it generates a distinct build artifact for each. This is problematic for several reasons, the biggest being the overhead for the release manager who has to manage branches and tags in repos that are pseudo-remotes of each other. This has caused me no end of confusion and grief. It also adds complexity to the entire build process.

It would be much simpler if BLT simply generated a single build artifact that could be deployed to either ACE or ACSF, instead of having to specifically target one or the other.

The biggest obstacle to this will be finding a way to work around ACSF's rigidly defined settings.php.

PHPUnit Git tests shouldn't create actual commits

Right now the Git tests attempt to create real live Git commits: https://github.com/acquia/bolt/blob/8.x/template/tests/phpunit/GitTest.php

This means that if you run unit tests on a local machine, you're unknowingly left with a contaminated Git history.

I'm not sure I see the value in running these tests at all on a continuous basis in a deployed Bolt installation... they seem more valuable for testing the initial Bolt setup. Assuming we need to keep them, think about using --dry-run or some other process to avoid creating permanent commits.

Rename build dir

build is typically reserved for build artifacts. Additionally, GitHub's file finder does not index files in the build dir, which is very annoying.

We could rename the dir to blt. Open to suggestions. The main issue here is backwards compatibility with projects who may run blt:update.

./blt.sh blt:update error - Update seems broken on Windows & Mac

I'm trying to run ./blt.sh blt:update -debug -verbose and I'm seeing the following error:

svn: E000001: Can't move 'svn-OtNgsh' to 'blt.sh': Operation not permitted

Here's the full output:

Setting user project property: phing.file -> /var/www/data/build/custom/phing/build.xml
Adding reference: phing.file -> PropertyValue
Setting user project property: phing.dir -> /var/www/data/build/custom/phing
Adding reference: phing.dir -> PropertyValue
Buildfile: /var/www/data/build/custom/phing/build.xml
Override ignored for user property phing.file
Override ignored for user property phing.dir
Adding reference: host.os -> PropertyValue
Adding reference: os.name -> PropertyValue
Adding reference: php.classpath -> PropertyValue
Adding reference: host.fstype -> PropertyValue
Adding reference: php.interpreter -> PropertyValue
Adding reference: line.separator -> PropertyValue
Adding reference: php.version -> PropertyValue
Adding reference: php.tmpdir -> PropertyValue
Adding reference: user.home -> PropertyValue
Adding reference: application.startdir -> PropertyValue
Adding reference: phing.startTime -> PropertyValue
Adding reference: host.name -> PropertyValue
Adding reference: host.arch -> PropertyValue
Adding reference: host.domain -> PropertyValue
Adding reference: host.os.release -> PropertyValue
Adding reference: host.os.version -> PropertyValue
Adding reference: phing.home -> PropertyValue
Adding reference: env.SUDO_GID -> PropertyValue
Adding reference: env.MAIL -> PropertyValue
Adding reference: env.USER -> PropertyValue
Adding reference: env.LANGUAGE -> PropertyValue
Adding reference: env.SHLVL -> PropertyValue
Adding reference: env.HOME -> PropertyValue
Adding reference: env.SUDO_UID -> PropertyValue
Adding reference: env.LOGNAME -> PropertyValue
Adding reference: env._ -> PropertyValue
Adding reference: env.TERM -> PropertyValue
Adding reference: env.USERNAME -> PropertyValue
Adding reference: env.PATH -> PropertyValue
Adding reference: env.LANG -> PropertyValue
Adding reference: env.LS_COLORS -> PropertyValue
Adding reference: env.SUDO_COMMAND -> PropertyValue
Adding reference: env.SHELL -> PropertyValue
Adding reference: env.SUDO_USER -> PropertyValue
Adding reference: env.PWD -> PropertyValue
Adding reference: env.PHP_SELF -> PropertyValue
Adding reference: env.SCRIPT_NAME -> PropertyValue
Adding reference: env.SCRIPT_FILENAME -> PropertyValue
Adding reference: env.PATH_TRANSLATED -> PropertyValue
Adding reference: env.DOCUMENT_ROOT -> PropertyValue
Adding reference: env.REQUEST_TIME_FLOAT -> PropertyValue
Adding reference: env.REQUEST_TIME -> PropertyValue
Adding reference: env.argc -> PropertyValue
  +Task definition: adhoc (phing.tasks.system.AdhocTask)
  +Task definition: adhoc-task (phing.tasks.system.AdhocTaskdefTask)
  +Task definition: adhoc-type (phing.tasks.system.AdhocTypedefTask)
  +Task definition: apply (phing.tasks.system.ApplyTask)
  +Task definition: append (phing.tasks.system.AppendTask)
  +Task definition: attrib (phing.tasks.system.AttribTask)
  +Task definition: available (phing.tasks.system.AvailableTask)
  +Task definition: blockfor (phing.tasks.system.BlockForTask)
  +Task definition: chmod (phing.tasks.system.ChmodTask)
  +Task definition: chown (phing.tasks.system.ChownTask)
  +Task definition: concat (phing.tasks.system.AppendTask)
  +Task definition: condition (phing.tasks.system.ConditionTask)
  +Task definition: copy (phing.tasks.system.CopyTask)
  +Task definition: cvs (phing.tasks.system.CvsTask)
  +Task definition: cvspass (phing.tasks.system.CvsPassTask)
  +Task definition: delete (phing.tasks.system.DeleteTask)
  +Task definition: dirname (phing.tasks.system.Dirname)
  +Task definition: echo (phing.tasks.system.EchoTask)
  +Task definition: echoproperties (phing.tasks.system.EchoProperties)
  +Task definition: exec (phing.tasks.system.ExecTask)
  +Task definition: fail (phing.tasks.system.FailTask)
  +Task definition: foreach (phing.tasks.system.ForeachTask)
  +Task definition: includepath (phing.tasks.system.IncludePathTask)
  +Task definition: input (phing.tasks.system.InputTask)
  +Task definition: mkdir (phing.tasks.system.MkdirTask)
  +Task definition: move (phing.tasks.system.MoveTask)
  +Task definition: phing (phing.tasks.system.PhingTask)
  +Task definition: phingcall (phing.tasks.system.PhingCallTask)
  +Task definition: phingversion (phing.tasks.system.condition.PhingVersion)
  +Task definition: php (phing.tasks.system.PhpEvalTask)
  +Task definition: property (phing.tasks.system.PropertyTask)
  +Task definition: propertyprompt (phing.tasks.system.PropertyPromptTask)
  +Task definition: record (phing.tasks.system.RecorderTask)
  +Task definition: reflexive (phing.tasks.system.ReflexiveTask)
  +Task definition: resolvepath (phing.tasks.system.ResolvePathTask)
  +Task definition: retry (phing.tasks.system.Retry)
  +Task definition: taskdef (phing.tasks.system.TaskdefTask)
  +Task definition: tempfile (phing.tasks.system.TempFile)
  +Task definition: touch (phing.tasks.system.TouchTask)
  +Task definition: tstamp (phing.tasks.system.TstampTask)
  +Task definition: typedef (phing.tasks.system.TypedefTask)
  +Task definition: uptodate (phing.tasks.system.UpToDateTask)
  +Task definition: xslt (phing.tasks.system.XsltTask)
  +Task definition: if (phing.tasks.system.IfTask)
  +Task definition: warn (phing.tasks.system.WarnTask)
  +Task definition: import (phing.tasks.system.ImportTask)
  +Task definition: loadfile (phing.tasks.system.LoadFileTask)
  +Task definition: switch (phing.tasks.system.SwitchTask)
  +Task definition: basename (phing.tasks.system.Basename)
  +Task definition: diagnostics (phing.tasks.system.DiagnosticsTask)
  +Task definition: pathconvert (phing.tasks.system.PathConvert)
  +Task definition: creole (phing.tasks.ext.creole.CreoleSQLExecTask)
  +Task definition: pdo (phing.tasks.ext.pdo.PDOSQLExecTask)
  +Task definition: pdosqlexec (phing.tasks.ext.pdo.PDOSQLExecTask)
  +Task definition: package-as-path (phing.tasks.ext.PackageAsPathTask)
  +Task definition: smarty (phing.tasks.ext.SmartyTask)
  +Task definition: capsule (phing.tasks.ext.CapsuleTask)
  +Task definition: tar (phing.tasks.ext.TarTask)
  +Task definition: untar (phing.tasks.ext.UntarTask)
  +Task definition: pearpkg (phing.tasks.ext.PearPackageTask)
  +Task definition: pearpkg2 (phing.tasks.ext.PearPackage2Task)
  +Task definition: mail (phing.tasks.ext.MailTask)
  +Task definition: zip (phing.tasks.ext.ZipTask)
  +Task definition: unzip (phing.tasks.ext.UnzipTask)
  +Task definition: waitfor (phing.tasks.system.WaitForTask)
  +Task definition: trycatch (phing.tasks.system.TryCatchTask)
  +Task definition: phpdoc (phing.tasks.ext.phpdoc.PhpDocumentorTask)
  +Task definition: phpdocext (phing.tasks.ext.phpdoc.PhpDocumentorExternalTask)
  +Task definition: svnlastrevision (phing.tasks.ext.svn.SvnLastRevisionTask)
  +Task definition: svncheckout (phing.tasks.ext.svn.SvnCheckoutTask)
  +Task definition: svnexport (phing.tasks.ext.svn.SvnExportTask)
  +Task definition: svnupdate (phing.tasks.ext.svn.SvnUpdateTask)
  +Task definition: svnswitch (phing.tasks.ext.svn.SvnSwitchTask)
  +Task definition: svncopy (phing.tasks.ext.svn.SvnCopyTask)
  +Task definition: svncommit (phing.tasks.ext.svn.SvnCommitTask)
  +Task definition: svnlist (phing.tasks.ext.svn.SvnListTask)
  +Task definition: svnlog (phing.tasks.ext.svn.SvnLogTask)
  +Task definition: svninfo (phing.tasks.ext.svn.SvnInfoTask)
  +Task definition: gitinit (phing.tasks.ext.git.GitInitTask)
  +Task definition: gitclone (phing.tasks.ext.git.GitCloneTask)
  +Task definition: gitgc (phing.tasks.ext.git.GitGcTask)
  +Task definition: gitbranch (phing.tasks.ext.git.GitBranchTask)
  +Task definition: gitfetch (phing.tasks.ext.git.GitFetchTask)
  +Task definition: gitmerge (phing.tasks.ext.git.GitMergeTask)
  +Task definition: gitcheckout (phing.tasks.ext.git.GitCheckoutTask)
  +Task definition: gitpull (phing.tasks.ext.git.GitPullTask)
  +Task definition: gitpush (phing.tasks.ext.git.GitPushTask)
  +Task definition: gitlog (phing.tasks.ext.git.GitLogTask)
  +Task definition: gittag (phing.tasks.ext.git.GitTagTask)
  +Task definition: gitcommit (phing.tasks.ext.git.GitCommitTask)
  +Task definition: gitdescribe (phing.tasks.ext.git.GitDescribeTask)
  +Task definition: phpunit3 (phing.tasks.ext.phpunit.PHPUnitTask)
  +Task definition: phpunit3report (phing.tasks.ext.phpunit.PHPUnitReportTask)
  +Task definition: phpunit (phing.tasks.ext.phpunit.PHPUnitTask)
  +Task definition: phpunitreport (phing.tasks.ext.phpunit.PHPUnitReportTask)
  +Task definition: coverage-setup (phing.tasks.ext.coverage.CoverageSetupTask)
  +Task definition: coverage-merger (phing.tasks.ext.coverage.CoverageMergerTask)
  +Task definition: coverage-report (phing.tasks.ext.coverage.CoverageReportTask)
  +Task definition: coverage-threshold (phing.tasks.ext.coverage.CoverageThresholdTask)
  +Task definition: ioncubeencoder (phing.tasks.ext.ioncube.IoncubeEncoderTask)
  +Task definition: ioncubelicense (phing.tasks.ext.ioncube.IoncubeLicenseTask)
  +Task definition: simpletest (phing.tasks.ext.simpletest.SimpleTestTask)
  +Task definition: phplint (phing.tasks.ext.PhpLintTask)
  +Task definition: xmllint (phing.tasks.ext.XmlLintTask)
  +Task definition: analyze (phing.tasks.ext.ZendCodeAnalyzerTask)
  +Task definition: zendcodeanalyzer (phing.tasks.ext.ZendCodeAnalyzerTask)
  +Task definition: jshint (phing.tasks.ext.JsHintTask)
  +Task definition: jsllint (phing.tasks.ext.JslLintTask)
  +Task definition: manifest (phing.tasks.ext.ManifestTask)
  +Task definition: phpcodesniffer (phing.tasks.ext.PhpCodeSnifferTask)
  +Task definition: phpcpd (phing.tasks.ext.phpcpd.PHPCPDTask)
  +Task definition: phploc (phing.tasks.ext.phploc.PHPLocTask)
  +Task definition: phpmd (phing.tasks.ext.phpmd.PHPMDTask)
  +Task definition: phpdepend (phing.tasks.ext.pdepend.PhpDependTask)
  +Task definition: ftpdeploy (phing.tasks.ext.FtpDeployTask)
  +Task definition: phkpackage (phing.tasks.ext.phk.PhkPackageTask)
  +Task definition: pharpackage (phing.tasks.ext.phar.PharPackageTask)
  +Task definition: scp (phing.tasks.ext.ssh.ScpTask)
  +Task definition: scpsend (phing.tasks.ext.ssh.ScpTask)
  +Task definition: ssh (phing.tasks.ext.ssh.SshTask)
  +Task definition: replaceregexp (phing.tasks.ext.ReplaceRegexpTask)
  +Task definition: jsmin (phing.tasks.ext.jsmin.JsMinTask)
  +Task definition: version (phing.tasks.ext.VersionTask)
  +Task definition: filehash (phing.tasks.ext.FileHashTask)
  +Task definition: filesize (phing.tasks.ext.FileSizeTask)
  +Task definition: filesync (phing.tasks.ext.FileSyncTask)
  +Task definition: xmlproperty (phing.tasks.ext.XmlPropertyTask)
  +Task definition: exportproperties (phing.tasks.ext.ExportPropertiesTask)
  +Task definition: http-request (phing.tasks.ext.HttpRequestTask)
  +Task definition: httpget (phing.tasks.ext.HttpGetTask)
  +Task definition: patch (phing.tasks.ext.PatchTask)
  +Task definition: dbdeploy (phing.tasks.ext.dbdeploy.DbDeployTask)
  +Task definition: symlink (phing.tasks.ext.SymlinkTask)
  +Task definition: s3get (phing.tasks.ext.Service.Amazon.S3.S3GetTask)
  +Task definition: s3put (phing.tasks.ext.Service.Amazon.S3.S3PutTask)
  +Task definition: zendguardencode (phing.tasks.ext.zendguard.ZendGuardEncodeTask)
  +Task definition: zendguardlicense (phing.tasks.ext.zendguard.ZendGuardLicenseTask)
  +Task definition: phpdoc2 (phing.tasks.ext.phpdoc.PhpDocumentor2Task)
  +Task definition: inifile (phing.tasks.ext.inifile.IniFileTask)
  +Task definition: rST (phing.tasks.ext.rSTTask)
  +Task definition: apigen (phing.tasks.ext.apigen.ApiGenTask)
  +Task definition: parallel (phing.tasks.ext.ParallelTask)
  +Task definition: symfonyconsole (phing.tasks.ext.SymfonyConsole.SymfonyConsoleTask)
  +Task definition: composer (phing.tasks.ext.ComposerTask)
  +Task definition: autoloader (phing.tasks.ext.AutoloaderTask)
  +Task definition: liquibase-changelog (phing.tasks.ext.liquibase.LiquibaseChangeLogTask)
  +Task definition: liquibase-dbdoc (phing.tasks.ext.liquibase.LiquibaseDbDocTask)
  +Task definition: liquibase-diff (phing.tasks.ext.liquibase.LiquibaseDiffTask)
  +Task definition: liquibase-rollback (phing.tasks.ext.liquibase.LiquibaseRollbackTask)
  +Task definition: liquibase-tag (phing.tasks.ext.liquibase.LiquibaseTagTask)
  +Task definition: liquibase-update (phing.tasks.ext.liquibase.LiquibaseUpdateTask)
  +Task definition: liquibase (phing.tasks.ext.liquibase.LiquibaseTask)
  +Task definition: notifysend (phing.tasks.ext.NotifySendTask)
  +Task definition: growlnotify (phing.tasks.ext.GrowlNotifyTask)
  +Task definition: wikipublish (phing.tasks.ext.WikiPublishTask)
  +Task definition: stopwatch (phing.tasks.ext.StopwatchTask)
  +Task definition: throw (phing.tasks.ext.ThrowTask)
  +Task definition: pathtofileset (phing.tasks.ext.property.PathToFileSet)
  +Task definition: propertyregex (phing.tasks.ext.property.RegexTask)
  +Task definition: zsdtvalidate (phing.tasks.ext.zendserverdeploymenttool.zsdtValidateTask)
  +Task definition: zsdtpack (phing.tasks.ext.zendserverdeploymenttool.zsdtPackTask)
  +Task definition: phardata (phing.tasks.ext.phar.PharDataTask)
  +User datatype: commandline (phing.types.Commandline)
  +User datatype: fileset (phing.types.FileSet)
  +User datatype: dirset (phing.types.DirSet)
  +User datatype: filelist (phing.types.FileList)
  +User datatype: patternset (phing.types.PatternSet)
  +User datatype: mapper (phing.types.Mapper)
  +User datatype: filterchain (phing.types.FilterChain)
  +User datatype: filterreader (phing.types.PhingFilterReader)
  +User datatype: regexp (phing.types.RegularExpression)
  +User datatype: param (phing.types.Parameter)
  +User datatype: path (phing.types.Path)
  +User datatype: pearpackagefileset (phing.types.PearPackageFileSet)
  +User datatype: selector (phing.types.selectors.SelectSelector)
  +User datatype: sshconfig (phing.tasks.ext.ssh.Ssh2MethodParam)
  +User datatype: description (phing.types.Description)
Setting user project property: phing.version -> Phing 2.14.0-44-g0ef30e5
Adding reference: phing.version -> PropertyValue
Setting user project property: phing.file -> /var/www/data/build/custom/phing/build.xml
Overriding previous definition of reference to phing.file
Adding reference: phing.file -> PropertyValue
Adding reference: phing.parsing.context -> PhingXMLContext
parsing buildfile build.xml
Setting user project property: phing.file.project -> /var/www/data/build/custom/phing/build.xml
Adding reference: phing.file.project -> PropertyValue
Setting user project property: phing.dir.project -> /var/www/data/build/custom/phing
Adding reference: phing.dir.project -> PropertyValue
Setting project property: phing.project.name -> project
Adding reference: phing.project.name -> PropertyValue
Adding reference: project -> Project
Adding reference: project.basedir -> PropertyValue
Project base dir set to: /var/www/data/build/custom/phing
  +Target: 
  +Task: property
    -calling setter PropertyTask::setName()
Property ${phing.dir} => /var/www/data/build/custom/phing
    -calling setter PropertyTask::setValue()
Setting project property: core.phing.dir.relative -> /var/www/data/build/custom/phing/../../core/phing
Adding reference: core.phing.dir.relative -> PropertyValue
  +Task: resolvepath
    -calling setter ResolvePathTask::setPropertyName()
Property ${core.phing.dir.relative} => /var/www/data/build/custom/phing/../../core/phing
    -calling setter ResolvePathTask::setFile()
[resolvepath] Resolved /var/www/data/build/custom/phing/../../core/phing to /var/www/data/build/core/phing
Setting project property: core.phing.dir -> /var/www/data/build/core/phing
Adding reference: core.phing.dir -> PropertyValue
  +Task: import
Property ${core.phing.dir} => /var/www/data/build/core/phing
    -calling setter ImportTask::setFile()
   [import] Importing file from /var/www/data/build/core/phing/build.xml
parsing buildfile build.xml
Setting user project property: phing.file.blt_core -> /var/www/data/build/core/phing/build.xml
Adding reference: phing.file.blt_core -> PropertyValue
Setting user project property: phing.dir.blt_core -> /var/www/data/build/core/phing
Adding reference: phing.dir.blt_core -> PropertyValue
  +Target: list
  +Task: includepath
Property ${core.phing.dir} => /var/www/data/build/core/phing
    -calling setter IncludePathTask::setClasspath()
[includepath] Prepending new include_path components: /var/www/data/build/core/phing
  +Task: taskdef
    -calling setter TaskdefTask::setName()
    -calling setter TaskdefTask::setClassname()
  [taskdef] Task behat will be handled by class phingcludes.BehatTask
  +Task definition: behat (phingcludes.BehatTask)
  +Task: taskdef
    -calling setter TaskdefTask::setName()
    -calling setter TaskdefTask::setClassname()
  [taskdef] Task drush will be handled by class phingcludes.DrushTask
  +Task definition: drush (phingcludes.DrushTask)
  +Task: taskdef
    -calling setter TaskdefTask::setName()
    -calling setter TaskdefTask::setClassname()
  [taskdef] Task filterFileListByFileSet will be handled by class phingcludes.FilterFileListByFileSetTask
  +Task definition: filterFileListByFileSet (phingcludes.FilterFileListByFileSetTask)
  +Task: taskdef
    -calling setter TaskdefTask::setName()
    -calling setter TaskdefTask::setClassname()
  [taskdef] Task phpVariable will be handled by class phingcludes.PhpVariableTask
  +Task definition: phpVariable (phingcludes.PhpVariableTask)
  (Using TaskAdapter for: if)
  +Task: if
    -calling adder ConditionBase::addAvailable()
    -calling setter AvailableTask::setProperty()
    -calling setter AvailableTask::setExtension()
    -calling adder IfTask::addThen()
  +Task: echo
    -calling setter EchoTask::setLevel()
     [echo] You are running BLT with xdebug enabled. This has a major impact on
        runtime performance.
  +Task: import
Property ${core.phing.dir} => /var/www/data/build/core/phing
    -calling setter ImportTask::setFile()
   [import] Importing file from /var/www/data/build/core/phing/tasks/properties.xml
parsing buildfile properties.xml
Setting user project property: phing.file.properties -> /var/www/data/build/core/phing/tasks/properties.xml
Adding reference: phing.file.properties -> PropertyValue
Setting user project property: phing.dir.properties -> /var/www/data/build/core/phing/tasks
Adding reference: phing.dir.properties -> PropertyValue
  +Task: property
    -calling setter PropertyTask::setName()
Property ${core.phing.dir} => /var/www/data/build/core/phing
    -calling setter PropertyTask::setValue()
Setting project property: repo.root.relative -> /var/www/data/build/core/phing/../../..
Adding reference: repo.root.relative -> PropertyValue
  +Task: resolvepath
    -calling setter ResolvePathTask::setPropertyName()
Property ${repo.root.relative} => /var/www/data/build/core/phing/../../..
    -calling setter ResolvePathTask::setFile()
[resolvepath] Resolved /var/www/data/build/core/phing/../../.. to /var/www/data
Setting project property: repo.root -> /var/www/data
Adding reference: repo.root -> PropertyValue
  +Task: property
Property ${repo.root} => /var/www/data
    -calling setter PropertyTask::setFile()
    -calling setter PropertyTask::setOverride()
 [property] Loading /var/www/data/project.yml
Setting project property: project.vendor_name -> Winter Creative
Adding reference: project.vendor_name -> PropertyValue
Setting project property: project.machine_name -> data
Adding reference: project.machine_name -> PropertyValue
Setting project property: project.prefix -> DTA
Adding reference: project.prefix -> PropertyValue
Setting project property: project.human_name -> Data
Adding reference: project.human_name -> PropertyValue
Setting project property: project.profile.name -> standard
Adding reference: project.profile.name -> PropertyValue
Setting project property: project.profile.contrib -> 
Adding reference: project.profile.contrib -> PropertyValue
Setting project property: project.themes -> thunder
Adding reference: project.themes -> PropertyValue
Setting project property: project.hash_salt -> MszzlJ8NhuLrtNX0ac4ENAh3mwfdpHjbNtJBDPNBRxOmGR0ohPcrL5X
Adding reference: project.hash_salt -> PropertyValue
Setting project property: project.local.protocol -> http
Adding reference: project.local.protocol -> PropertyValue
Setting project property: project.local.hostname -> data.localhost
Adding reference: project.local.hostname -> PropertyValue
Setting project property: git.default_branch -> master
Adding reference: git.default_branch -> PropertyValue
Setting project property: git.remotes -> [email protected]:justinlevi/blt-standard.git
Adding reference: git.remotes -> PropertyValue
Setting project property: drush.aliases.remote -> data.test
Adding reference: drush.aliases.remote -> PropertyValue
Setting project property: drush.aliases.local -> self
Adding reference: drush.aliases.local -> PropertyValue
Setting project property: drush.aliases.ci -> self
Adding reference: drush.aliases.ci -> PropertyValue
Setting project property: drush.default_alias -> self
Adding reference: drush.default_alias -> PropertyValue
  +Task: property
Property ${core.phing.dir} => /var/www/data/build/core/phing
    -calling setter PropertyTask::setFile()
    -calling setter PropertyTask::setOverride()
 [property] Loading /var/www/data/build/core/phing/build.yml
 [property] Resolved Property "${repo.root}/tests/behat/local.yml" to "/var/www/data/tests/behat/local.yml"
 [property] Resolved Property "${docroot}/profiles,${repo.root}/tests/behat" to "${repo.root}/docroot/profiles,/var/www/data/tests/behat"
 [property] Resolved Property "${repo.root}/docroot/profiles,/var/www/data/tests/behat" to "/var/www/data/docroot/profiles,/var/www/data/tests/behat"
 [property] Resolved Property "${repo.root}/vendor/bin" to "/var/www/data/vendor/bin"
 [property] Resolved Property "${repo.root}/deploy" to "/var/www/data/deploy"
 [property] Resolved Property "${repo.root}/build/core/files/deploy-exclude.txt" to "/var/www/data/build/core/files/deploy-exclude.txt"
 [property] Resolved Property "${repo.root.relative}/docroot" to "/var/www/data/build/core/phing/../../../docroot"
 [property] Resolved Property "${repo.root}/docroot" to "/var/www/data/docroot"
 [property] Resolved Property "${composer.bin}/drush" to "/var/www/data/vendor/bin/drush"
 [property] Resolved Property "${drush.bin} @${drush.alias} -r ${docroot} -l ${multisite.name}" to "/var/www/data/vendor/bin/drush @${drush.alias} -r /var/www/data/docroot -l default"
 [property] Resolved Property "${docroot}" to "/var/www/data/docroot"
 [property] Resolved Property "${repo.root}/reports" to "/var/www/data/reports"
 [property] Resolved Property "${project.local.protocol}://${project.local.hostname}" to "http://data.localhost"
Setting project property: behat.config -> /var/www/data/tests/behat/local.yml
Adding reference: behat.config -> PropertyValue
Setting project property: behat.profile -> local
Adding reference: behat.profile -> PropertyValue
Setting project property: behat.run-server -> 
Adding reference: behat.run-server -> PropertyValue
Setting project property: behat.server-url -> http://127.0.0.1:8888
Adding reference: behat.server-url -> PropertyValue
Setting project property: behat.launch-phantom -> 1
Adding reference: behat.launch-phantom -> PropertyValue
Setting project property: behat.paths -> /var/www/data/docroot/profiles,/var/www/data/tests/behat
Adding reference: behat.paths -> PropertyValue
Setting project property: behat.tags -> ~ajax
Adding reference: behat.tags -> PropertyValue
Setting project property: composer.bin -> /var/www/data/vendor/bin
Adding reference: composer.bin -> PropertyValue
Setting project property: deploy.dir -> /var/www/data/deploy
Adding reference: deploy.dir -> PropertyValue
Setting project property: deploy.exclude_file -> /var/www/data/build/core/files/deploy-exclude.txt
Adding reference: deploy.exclude_file -> PropertyValue
Setting project property: docroot.relative -> /var/www/data/build/core/phing/../../../docroot
Adding reference: docroot.relative -> PropertyValue
Setting project property: docroot -> /var/www/data/docroot
Adding reference: docroot -> PropertyValue
Setting project property: drupal.account.name -> admin
Adding reference: drupal.account.name -> PropertyValue
Setting project property: drupal.account.password -> admin
Adding reference: drupal.account.password -> PropertyValue
Setting project property: drupal.account.mail -> [email protected]
Adding reference: drupal.account.mail -> PropertyValue
Setting project property: drush.bin -> /var/www/data/vendor/bin/drush
Adding reference: drush.bin -> PropertyValue
Property ${drush.alias} has not been set.
Property ${drush.alias} has not been set.
Property ${drush.alias} has not been set.
Property ${drush.alias} has not been set.
Property ${drush.alias} has not been set.
Setting project property: drush.cmd -> /var/www/data/vendor/bin/drush @${drush.alias} -r /var/www/data/docroot -l default
Adding reference: drush.cmd -> PropertyValue
Setting project property: drush.root -> /var/www/data/docroot
Adding reference: drush.root -> PropertyValue
Setting project property: multisite.name -> default
Adding reference: multisite.name -> PropertyValue
Setting project property: reports.localDir -> /var/www/data/reports
Adding reference: reports.localDir -> PropertyValue
Setting project property: reports.remoteDir -> reports
Adding reference: reports.remoteDir -> PropertyValue
Setting project property: project.local.uri -> http://data.localhost
Adding reference: project.local.uri -> PropertyValue
  +Task: property
    -calling setter PropertyTask::setName()
Property ${docroot} => /var/www/data/docroot
Property ${multisite.name} => default
    -calling setter PropertyTask::setValue()
Setting project property: local.settings.file -> /var/www/data/docroot/sites/default/settings/local.settings.php
Adding reference: local.settings.file -> PropertyValue
  +Task: copy
Property ${docroot} => /var/www/data/docroot
Property ${multisite.name} => default
    -calling setter CopyTask::setFile()
Property ${local.settings.file} => /var/www/data/docroot/sites/default/settings/local.settings.php
    -calling setter CopyTask::setTofile()
    -calling setter CopyTask::setOverwrite()
    -calling setter CopyTask::setVerbose()
     [copy] default.local.settings.php omitted, is up to date
  +Task: echo
Property ${multisite.name} => default
     [echo] Executing commands against multisite "default"
  +Task: echo
Property ${local.settings.file} => /var/www/data/docroot/sites/default/settings/local.settings.php
     [echo] Using settings file /var/www/data/docroot/sites/default/settings/local.settings.php
  +Task: phpvariable
Property ${repo.root} => /var/www/data
    -calling setter PhpVariableTask::setFile()
    -calling setter PhpVariableTask::setVariable()
    -calling setter PhpVariableTask::setOutputProperty()
Setting project property: local_url -> http://data.vm
Adding reference: local_url -> PropertyValue
  +Task: property
    -calling setter PropertyTask::setName()
    -calling setter PropertyTask::setValue()
    -calling setter PropertyTask::setOverride()
Override ignored for property drush.default_alias
  +Task: property
    -calling setter PropertyTask::setName()
Property ${drush.default_alias} => self
    -calling setter PropertyTask::setValue()
    -calling setter PropertyTask::setOverride()
Setting project property: drush.alias -> self
Adding reference: drush.alias -> PropertyValue
  +Task: import
Property ${core.phing.dir} => /var/www/data/build/core/phing
    -calling setter ImportTask::setFile()
   [import] Importing file from /var/www/data/build/core/phing/tasks/blt.xml
parsing buildfile blt.xml
Setting user project property: phing.file.blt -> /var/www/data/build/core/phing/tasks/blt.xml
Adding reference: phing.file.blt -> PropertyValue
Setting user project property: phing.dir.blt -> /var/www/data/build/core/phing/tasks
Adding reference: phing.dir.blt -> PropertyValue
  +Target: blt:update
  +Target: blt:alias
  +Task: import
Property ${core.phing.dir} => /var/www/data/build/core/phing
    -calling setter ImportTask::setFile()
   [import] Importing file from /var/www/data/build/core/phing/tasks/ci.xml
parsing buildfile ci.xml
Setting user project property: phing.file.ci -> /var/www/data/build/core/phing/tasks/ci.xml
Adding reference: phing.file.ci -> PropertyValue
Setting user project property: phing.dir.ci -> /var/www/data/build/core/phing/tasks
Adding reference: phing.dir.ci -> PropertyValue
  +Target: ci:build:test
  +Target: ci:build:validate:test
  +Target: ci:setup
  +Target: ci:tugboat:init
  +Target: ci:update
  +Task: import
Property ${core.phing.dir} => /var/www/data/build/core/phing
    -calling setter ImportTask::setFile()
   [import] Importing file from /var/www/data/build/core/phing/tasks/validate.xml
parsing buildfile validate.xml
Setting user project property: phing.file.validate -> /var/www/data/build/core/phing/tasks/validate.xml
Adding reference: phing.file.validate -> PropertyValue
Setting user project property: phing.dir.validate -> /var/www/data/build/core/phing/tasks
Adding reference: phing.dir.validate -> PropertyValue
  +Target: validate:all
  +Target: validate:composer
  +Target: validate:lint
  +Target: validate:phpcs:files
  +Target: validate:phpcs:file
  +Target: validate:phpcs
  +Task: import
Property ${core.phing.dir} => /var/www/data/build/core/phing
    -calling setter ImportTask::setFile()
   [import] Importing file from /var/www/data/build/core/phing/tasks/tests.xml
parsing buildfile tests.xml
Setting user project property: phing.file.tests -> /var/www/data/build/core/phing/tasks/tests.xml
Adding reference: phing.file.tests -> PropertyValue
Setting user project property: phing.dir.tests -> /var/www/data/build/core/phing/tasks
Adding reference: phing.dir.tests -> PropertyValue
  +Target: tests:all
  +Target: tests:behat
  +Target: tests:behat:execute
  +Target: tests:phantomjs:launch
  +Target: tests:phantomjs:kill
  +Target: tests:phpunit
  +Target: rsync-results
  +Target: tests:run-server
  +Target: tests:security-updates
  +Task: import
Property ${core.phing.dir} => /var/www/data/build/core/phing
    -calling setter ImportTask::setFile()
   [import] Importing file from /var/www/data/build/core/phing/tasks/setup.xml
parsing buildfile setup.xml
Setting user project property: phing.file.setup -> /var/www/data/build/core/phing/tasks/setup.xml
Adding reference: phing.file.setup -> PropertyValue
Setting user project property: phing.dir.setup -> /var/www/data/build/core/phing/tasks
Adding reference: phing.dir.setup -> PropertyValue
  +Target: setup
  +Target: setup:behat
  +Target: setup:build:all
  +Target: setup:build:profile
  +Target: setup:clean
  +Target: setup:composer:install
  +Target: setup:drupal:settings
  +Target: setup:drupal:install
  +Target: setup:git-hooks
  +Target: setup:update
  +Task: import
Property ${core.phing.dir} => /var/www/data/build/core/phing
    -calling setter ImportTask::setFile()
   [import] Importing file from /var/www/data/build/core/phing/tasks/filesets.xml
parsing buildfile filesets.xml
Setting user project property: phing.file.filesets -> /var/www/data/build/core/phing/tasks/filesets.xml
Adding reference: phing.file.filesets -> PropertyValue
Setting user project property: phing.dir.filesets -> /var/www/data/build/core/phing/tasks
Adding reference: phing.dir.filesets -> PropertyValue
Adding reference: files.php -> UnknownElement
Adding reference: files.frontend -> UnknownElement
Adding reference: files.php.all -> UnknownElement
Adding reference: files.php.custom.modules -> UnknownElement
Adding reference: files.php.custom.themes -> UnknownElement
Adding reference: files.php.custom.settings -> UnknownElement
Adding reference: files.php.tests -> UnknownElement
Adding reference: files.frontend.custom.themes -> UnknownElement
  +Type: patternset
Overriding previous definition of reference to files.php
Adding reference: files.php -> PatternSet
    -calling creator PatternSet::createInclude()
    -calling setter PatternSetNameEntry::setName()
    -calling creator PatternSet::createInclude()
    -calling setter PatternSetNameEntry::setName()
    -calling creator PatternSet::createInclude()
    -calling setter PatternSetNameEntry::setName()
    -calling creator PatternSet::createInclude()
    -calling setter PatternSetNameEntry::setName()
    -calling creator PatternSet::createInclude()
    -calling setter PatternSetNameEntry::setName()
    -calling creator PatternSet::createInclude()
    -calling setter PatternSetNameEntry::setName()
    -calling creator PatternSet::createExclude()
    -calling setter PatternSetNameEntry::setName()
  +Type: patternset
Overriding previous definition of reference to files.frontend
Adding reference: files.frontend -> PatternSet
    -calling creator PatternSet::createInclude()
    -calling setter PatternSetNameEntry::setName()
    -calling creator PatternSet::createExclude()
    -calling setter PatternSetNameEntry::setName()
    -calling creator PatternSet::createExclude()
    -calling setter PatternSetNameEntry::setName()
    -calling creator PatternSet::createExclude()
    -calling setter PatternSetNameEntry::setName()
    -calling creator PatternSet::createExclude()
    -calling setter PatternSetNameEntry::setName()
    -calling creator PatternSet::createExclude()
    -calling setter PatternSetNameEntry::setName()
    -calling creator PatternSet::createExclude()
    -calling setter PatternSetNameEntry::setName()
    -calling creator PatternSet::createExclude()
    -calling setter PatternSetNameEntry::setName()
    -calling creator PatternSet::createExclude()
    -calling setter PatternSetNameEntry::setName()
    -calling creator PatternSet::createExclude()
    -calling setter PatternSetNameEntry::setName()
  +Type: fileset
Property ${repo.root} => /var/www/data
    -calling setter AbstractFileSet::setDir()
Overriding previous definition of reference to files.php.all
Adding reference: files.php.all -> FileSet
    -calling creator AbstractFileSet::createPatternSet()
    -calling setter PatternSet::setRefid()
  +Type: fileset
Property ${docroot} => /var/www/data/docroot
    -calling setter AbstractFileSet::setDir()
Overriding previous definition of reference to files.php.custom.modules
Adding reference: files.php.custom.modules -> FileSet
    -calling creator AbstractFileSet::createPatternSet()
    -calling setter PatternSet::setRefid()
  +Type: fileset
Property ${docroot} => /var/www/data/docroot
    -calling setter AbstractFileSet::setDir()
Overriding previous definition of reference to files.php.custom.themes
Adding reference: files.php.custom.themes -> FileSet
    -calling creator AbstractFileSet::createPatternSet()
    -calling setter PatternSet::setRefid()
  +Type: fileset
Property ${docroot} => /var/www/data/docroot
    -calling setter AbstractFileSet::setDir()
    -calling setter AbstractFileSet::setExpandSymbolicLinks()
Overriding previous definition of reference to files.php.custom.settings
Adding reference: files.php.custom.settings -> FileSet
    -calling creator AbstractFileSet::createPatternSet()
    -calling setter PatternSet::setRefid()
  +Type: fileset
Property ${repo.root} => /var/www/data
    -calling setter AbstractFileSet::setDir()
    -calling setter AbstractFileSet::setExpandSymbolicLinks()
Overriding previous definition of reference to files.php.tests
Adding reference: files.php.tests -> FileSet
    -calling creator AbstractFileSet::createPatternSet()
    -calling setter PatternSet::setRefid()
  +Type: fileset
Property ${docroot} => /var/www/data/docroot
    -calling setter AbstractFileSet::setDir()
    -calling setter AbstractFileSet::setExpandSymbolicLinks()
Overriding previous definition of reference to files.frontend.custom.themes
Adding reference: files.frontend.custom.themes -> FileSet
    -calling creator AbstractFileSet::createPatternSet()
    -calling setter PatternSet::setRefid()
  +Task: import
Property ${core.phing.dir} => /var/www/data/build/core/phing
    -calling setter ImportTask::setFile()
   [import] Importing file from /var/www/data/build/core/phing/tasks/deploy.xml
parsing buildfile deploy.xml
Setting user project property: phing.file.deploy -> /var/www/data/build/core/phing/tasks/deploy.xml
Adding reference: phing.file.deploy -> PropertyValue
Setting user project property: phing.dir.deploy -> /var/www/data/build/core/phing/tasks
Adding reference: phing.dir.deploy -> PropertyValue
  +Target: deploy:artifact
  +Target: deploy:artifact:remote:add
  +Target: deploy:artifact:remote:pull
  +Target: deploy:artifact:add-remotes
  +Target: deploy:artifact:build
  +Target: deploy:artifact:commit
  +Target: deploy:artifact:composer:install
  +Target: deploy:artifact:profile:make
  +Target: deploy:artifact:copy
  +Target: deploy:artifact:prepare-dir
  +Target: deploy:artifact:push-all
  +Target: deploy:artifact:push-remote
  +Target: deploy:artifact:sanitize
  +Target: deploy:acsf:init
  +Task: import
Property ${core.phing.dir} => /var/www/data/build/core/phing
    -calling setter ImportTask::setFile()
   [import] Importing file from /var/www/data/build/core/phing/tasks/frontend.xml
parsing buildfile frontend.xml
Setting user project property: phing.file.frontend -> /var/www/data/build/core/phing/tasks/frontend.xml
Adding reference: phing.file.frontend -> PropertyValue
Setting user project property: phing.dir.frontend -> /var/www/data/build/core/phing/tasks
Adding reference: phing.dir.frontend -> PropertyValue
  +Target: frontend:build
  +Target: frontend:build:run
  +Target: frontend:install
  +Target: frontend:install:run
  +Task: import
Property ${core.phing.dir} => /var/www/data/build/core/phing
    -calling setter ImportTask::setFile()
   [import] Importing file from /var/www/data/build/core/phing/tasks/local-sync.xml
parsing buildfile local-sync.xml
Setting user project property: phing.file.local -> /var/www/data/build/core/phing/tasks/local-sync.xml
Adding reference: phing.file.local -> PropertyValue
Setting user project property: phing.dir.local -> /var/www/data/build/core/phing/tasks
Adding reference: phing.dir.local -> PropertyValue
  +Target: local:drupal:install
  +Target: local:refresh
  +Target: local:setup
  +Target: local:sync
  +Target: local:update
  +Task: import
Property ${core.phing.dir} => /var/www/data/build/core/phing
    -calling setter ImportTask::setFile()
   [import] Importing file from /var/www/data/build/core/phing/tasks/acsf.xml
parsing buildfile acsf.xml
Setting user project property: phing.file.acsf -> /var/www/data/build/core/phing/tasks/acsf.xml
Adding reference: phing.file.acsf -> PropertyValue
Setting user project property: phing.dir.acsf -> /var/www/data/build/core/phing/tasks
Adding reference: phing.dir.acsf -> PropertyValue
  +Target: acsf:init
  +Task: import
Property ${core.phing.dir} => /var/www/data/build/core/phing
    -calling setter ImportTask::setFile()
   [import] Importing file from /var/www/data/build/core/phing/tasks/vm.xml
parsing buildfile vm.xml
Setting user project property: phing.file.vm -> /var/www/data/build/core/phing/tasks/vm.xml
Adding reference: phing.file.vm -> PropertyValue
Setting user project property: phing.dir.vm -> /var/www/data/build/core/phing/tasks
Adding reference: phing.dir.vm -> PropertyValue
  +Target: vm:init
  +Task: property
Property ${project.basedir} => /var/www/data/build/custom/phing
    -calling setter PropertyTask::setFile()
    -calling setter PropertyTask::setOverride()
 [property] Loading /var/www/data/build/custom/phing/build.yml
Setting project property: example.property -> example value
Adding reference: example.property -> PropertyValue
Build sequence for target 'blt:update' is: blt:update 
Complete build sequence is: blt:update  list blt:alias ci:setup tests:security-updates tests:run-server tests:phantomjs:launch tests:behat tests:phpunit tests:all ci:build:test validate:composer validate:lint validate:phpcs validate:all ci:build:validate:test ci:tugboat:init ci:update validate:phpcs:files validate:phpcs:file tests:behat:execute tests:phantomjs:kill rsync-results setup:git-hooks setup:drupal:settings setup:behat setup:composer:install setup:build:profile frontend:install frontend:build setup:build:all setup:drupal:install setup setup:clean setup:update deploy:artifact deploy:artifact:remote:add deploy:artifact:remote:pull deploy:artifact:add-remotes deploy:artifact:copy deploy:artifact:composer:install deploy:artifact:profile:make deploy:artifact:sanitize deploy:artifact:build deploy:artifact:commit deploy:artifact:prepare-dir deploy:artifact:push-all deploy:artifact:push-remote deploy:acsf:init frontend:build:run frontend:install:run local:drupal:install local:sync local:update local:refresh local:setup acsf:init vm:init 

project > blt:update:

  +Task: echo
     [echo] You may be prompted to trust GitHub's SSL certification and to enter your GitHub password.
  +Task: echo
     [echo] If you have two factor authentication enabled for GitHub, you must use an access token in lieu of a password.
  +Task: echo
     [echo] GitHub access tokens can be generated here: https://github.com/settings/tokens
  +Task: input
    -calling setter InputTask::setMessage()
    -calling setter InputTask::setPropertyName()
Press any key to continue Setting user project property: continue -> 
Adding reference: continue -> PropertyValue
  +Task: exec
Property ${repo.root} => /var/www/data
    -calling setter ExecTask::setDir()
    -calling setter ExecTask::setCommand()
    -calling setter ExecTask::setLogoutput()
    -calling setter ExecTask::setPassthru()
    -calling setter ExecTask::setCheckreturn()
     [exec] Executing command: ./scripts/blt/update-scaffold
Copying down upstream changes to the BLT template.

svn: E000001: Can't move 'svn-YKI6B4' to 'blt.sh': Operation not permitted

BUILD FAILED
BuildException: /var/www/data/build/core/phing/tasks/blt.xml:9:121: Task exited with code 1 in /var/www/data/vendor/phing/phing/classes/phing/tasks/system/ExecTask.php:338
Stack trace:
#0 /var/www/data/vendor/phing/phing/classes/phing/tasks/system/ExecTask.php(156): ExecTask->cleanup(1, Array)
#1 /var/www/data/vendor/phing/phing/classes/phing/UnknownElement.php(100): ExecTask->main()
#2 /var/www/data/vendor/phing/phing/classes/phing/Task.php(283): UnknownElement->main()
#3 /var/www/data/vendor/phing/phing/classes/phing/Target.php(336): Task->perform()
#4 /var/www/data/vendor/phing/phing/classes/phing/Target.php(366): Target->main()
#5 /var/www/data/vendor/phing/phing/classes/phing/Project.php(898): Target->performTasks()
#6 /var/www/data/vendor/phing/phing/classes/phing/Project.php(868): Project->executeTarget('blt:update')
#7 /var/www/data/vendor/phing/phing/classes/phing/Phing.php(722): Project->executeTargets(Array)
#8 /var/www/data/vendor/phing/phing/classes/phing/Phing.php(199): Phing->runBuild()
#9 /var/www/data/vendor/phing/phing/classes/phing/Phing.php(346): Phing::start(Array, NULL)
#10 /var/www/data/vendor/phing/phing/bin/phing.php(58): Phing::fire(Array)
#11 /var/www/data/vendor/phing/phing/bin/phing(14): require_once('/var/www/data/v...')
#12 {main}
Total time: 42.4622 seconds

Simplify front end file inclusion

In filesets.xml, could we do something like this:

  <patternset id="files.frontend">
    <include name="js/**/*.js"/>
    <exclude name="**/vendor/**/*"/>
  </patternset>

So that we are going more specifically for theme js files and not ones that might exist in other folders?

Patch failures should cause composer install to fail

Currently, if a patch cannot be applied during composer install, it spits out a warning and then merrily continues on its way. This makes the patching process very fragile, as our automated tests won't catch failed patches.

There's an upstream issue to address this, but it's not going to be fixed in the current branch of composer-patches: cweagans/composer-patches#40

We can also work around it manually by tweaking our test scripts, which is the better approach in the interim:
cweagans/composer-patches#31
cweagans/composer-patches#46

However we fix it, we should submit an identical solution to Lightning.

Switch documentation to not use line breaks at 80 cols

This is a pet peeve of mine, since it makes updating documentation so unbearably hard—current docs are formatted thusly:

We highly recommend that you *do not use Windows* directly for development. 
Many development tools (e.g., drush, gulp, etc.) are not built or tested for 
Windows compatibility. Furthermore, most CI solutions (e.g., Travis CI, 
Drupal CI, etc.) do not permit testing on Windows OS.

If I were to add a few words to the first line, I would then have to spend the next minute reflowing all the rest of the text in that paragraph so it all breaks at 80 cols.

Most modern editors have line wrapping capabilities, so editing text in markdown files should still be simple/easy to do even if each paragraph is on it's own line and is not broken at 80 characters.

This will also make documentation PRs much better, since only individual text changes need to be tracked, and not line-by-line reflows. For example, see this PR: https://github.com/acquia/bolt/pull/3/files#diff-23d3084f68a11bf46e7e79b8892be209L125 — it looks like that whole paragraph was changed, when in reality only one line was changed, but all the lines had changes because of the reflow.

Installation script fails when using VM and configuration directory exists

As part of setup:drupal:install, it checks to see if configuration exists at /config/default. If it does, it attempts to perform the site installation with the config-dir option, and sets its value equal to ${repo.root}/config/default in the setup.xml (<option name="config-dir">"${repo.root}/config/default"</option>). The {repo.root} value points to the path on the host machine, but because the site installation technically takes place within the VM, it is unable to locate the config source directory:

 [drush] The config source directory does not exist.                                                                  [error]
 [drush] Command dispatch complete                                                                                   [notice]

Document using Behat with Drupal VM

Draft docs

Drupal VM and Behat tests

Using the Drupal Extension's "drupal" driver with Drupal VM

The Drupal Extension for Behat has an inherent limitation: it cannot use the 'drupal' driver to bootstrap Drupal on a remote server. If you're using Drupal VM and would like to execute Behat tests using the 'drupal' driver, you must execute them from within the VM. This is a break of the established pattern of running all BLT commands outside of the VM.

To execute Behat tests using the 'drupal' driver on a Drupal VM environment, you must do the following:

  1. Update tests/behat/local.yml with the absolute file path to your project inside the VM. I.e., find and replace all instances of host/machine/path/to/repo with /vm/path/to/repo, which should look something like var/www/[project.machine_name].
  2. SSH into the VM vagrant ssh.
  3. Change to your project directory cd /var/www/[project.machine_name].
  4. Assert that PhantomJS is installed for VM: composer run-script install-phantomjs
  5. Execute behat tests ./blt.sh tests:behat

Using the Drupal Extension's "drush" driver with Drupal VM

You may choose to write only behat tests that utilize the Drupal Extension's "drupal" driver.

Git PHPUnit tests take a reeeeally long time

I'm seeing the GitTasksTest, especially GitTasksTest::testGitHookCommitMsg, take up to 6 minutes to run on Travis. It seems to especially hang on or after this line:

Executing "git commit --amend -m 'ABC-123: This is a bad commit' 2>&1"

(where ABC is my project abbreviation)

This is happening pretty consistently as of late. Not sure why that would be.

[RFC] Change the name to avoid confusion with the CMS named Bolt.

Hi all,

This project has a name that will make people confuse it with our CMS named Bolt: https://bolt.cm . We'd appreciate it, if you'd change the name of this tool.

Some bullet points:

  • Yes, we are aware that "Bolt" being a common noun means that there are other projects / products / companies that use the name. However, Drupal and Bolt are in the same category. Bolt and Drupal both use Symfony components, composer, Twig and are written in PHP. There's a large overlap.
  • Bolt has been around for four years, 19,000 commits, 190 contributors, and is used by a ton of people.

Support alternate front end build tasks

It would be useful if the tasks called by frontend:build were configurable to support various front end build techniques. Some possible scenarios:

  • Theme uses gulp
  • Theme uses grunt
  • Theme uses npm scripts, but already has some that are different than what blt is looking for out of the box
  • Theme has no build process, just straight handwritten css and js

Provide default services.yml, including APCu config

On one of our ACE sites, we are seeing failing page loads with this error:
"Warning: apcu_store(): Unable to allocate memory for pool. in Drupal\Core\Cache\ApcuBackend->set() (line 177 of core/lib/Drupal/Core/Cache/ApcuBackend.php)."

According to support, this is due to Drupal 8 using APCu for some types of caching, which has a hardcoded memory limit that is too low.

The "strongly recommended" fix is to add the following to services.yml to tell Drupal to use the database instead of APCu for these types of caching:

services:
  cache.backend.chainedfast:
    class: Drupal\Core\Cache\ChainedFastBackendFactory
    arguments: ['@settings', 'cache.backend.database', 'cache.backend.database']
    calls:
      - [setContainer, ['@service_container']]

The long-term fix is to use Memcache, but memcache is not currently stable or recommended for D8.

Seems like Bolt should provide services.yml with this config by default.

We're testing this fix right now, and if it works will report back and try to open a PR.

Bolt should adhere to verbose options and not hardcode them

<drush command="site-install" assume="yes" verbose="TRUE" alias="${drush.aliases.local}">

Hardcodes verbose to true, It would be preferable if this could be command line based as an option.

phing uses -v for version so we can't use that.

options are:

  • -verbose (include phing verbosity, bolt's, drush, and other tasks)
  • -bv (just bolt, drush and other task's verbosity)
  • `-boltverbose) (same as above)
  • -verbose-all (all verbosity in bolt (tasks, drush, etc) except phing)
  • -verbose-bolt (just bolts verbosity)
  • -verbose-drush (just drush verbosity)
  • -verbose-tasks (all task's verbosity)

Site installs crash if files directory is not empty

On local installs, it's quite common to have files in sites/default/files even on a fresh install, since it's a pain to have to constantly be re-syncing files from a remote environment. However, these files will be owned by www-data and this will cause the site install to crash because of this line, which was added in #95.

Automated testing for conflicting and overridden features

Now that we are starting to support Features for configuration management, one of the most useful things that Bolt could provide is an automated test for overridden and conflicting features. Right now, about 25% of pull requests that I review produce a features conflict or override, but this is impossible to detect without manually installing the site and checking the Features UI.

The best approach would probably be a test that just runs drush fl, although I'm not sure how easy it is to parse state from this. It does support json output, and you can also restrict what fields to show (i.e. just state), so I'm guessing it's doable.

You could also have a behat test that just looks for "Changed", "Conflict", or "Added" on the features UI page.

One reason this is so important is the need to detect schema changes (applied via updb) in core and contrib modules. If features are perpetually overridden anyway, it's much harder to detect when a legitimate schema change has occurred.

Cannot Write Settings.php

When using the drupalvm approach to setting up my *AMP stack, everything installed and worked as i expexcted, but when i tried to run the final command from on vm, to install lightning, i get a file permissions issue. ergo it cant write it. Also, when i tried to run the command on my mac locally, it couldnt access the database.

given the issue, i am wondering where to run ./blt.sh local:setup so it will work, or what must i do to get this working.

Improve DX of project creation

To generate a new project using Bolt, you must cd into Bolt, run a few commands, and then change directories into your new project directory and run more commands. This is an unfamiliar workflow for most people and therefore confusing.

This thread exists to brainstorm ideas for a better DX.

project.acquia_subname should be defined or otherwise replaced in project.yml

Below is a snippet from the composer.json file for a BLT generated project using the default project.yml. The default project.yml should probably include an addition variable for project.description that can be used in place of project.acquia_subname, which I don't see used elsewhere in the project.

{
  "name":    "acquia/blted8",
  "license": "proprietary",
  "type":    "project",
  "description": "${project.acquia_subname}",
  "repositories": [
    {
      "type": "composer",
      "url":  "https://packagist.drupal-composer.org"
    }

Avoiding Github rate limiting

Despite all of Github's promises that anonymous API calls are no longer rate limited, we still see Travis tests fail from time to time because of throttling. Not sure who's at fault, but I do know that simply adding a personal oauth token following this guide prevents the issue.

Ideally Bolt would prompt for an oauth token on initial setup, and then automatically create .travis.composer.config.json and modify .travis.yml to accept it.

local-sync.xml tasks should use drush instead of exec and aliases

This will definitely need a bit of ironing out, but basically, I wanted to use the shipped local-sync.xml tasks (local:sync and local:update) with a VM (Drupal VM), but none of them used aliases, and the fact that exec was used instead of drush for the commands meant that aliases wouldn't load correctly.

Therefore, it would be helpful if we switched to drush and also used a @subname.[env] alias for each command.

Finally, a few of the tasks don't work at all out of the box, like fra (unless the project is using Features) and config-import, which requires a partial directory to already be present (not necessarily the case).

Here's what I have working currently with Drupal VM (though this is by not means what I think we should end up with):

<project name="local" default="local:refresh">

  <target name="local:refresh" description="Refreshes local environment from upstream testing database." depends="setup:build:all, local:sync, local:update"/>

  <target name="local:sync" description="Synchronize remote environment with local environment."
          depends="setup:drupal:settings">
    <drush command="sql-drop" assume="yes" verbose="FALSE" alias="${drush.aliases.local}" />
    <drush command="sql-sync @${drush.aliases.remote} @${drush.aliases.local}" assume="yes" verbose="FALSE">
      <option name="create-db"></option>
      <option name="structure-tables-key">lightweight</option>
    </drush>
    <drush command="cc" assume="yes" verbose="FALSE" alias="${drush.aliases.local}">
      <param>drush</param>
    </drush>
    <drush command="cr" assume="yes" verbose="FALSE" alias="${drush.aliases.local}" />
  </target>

  <target name="local:update" description="Update current database to reflect the state of the Drupal file system.">
    <drush command="updb" assume="yes" verbose="FALSE" alias="${drush.aliases.local}">
      <option name="entity-updates"></option>
    </drush>
    <!-- <drush command="config-import" assume="yes" verbose="FALSE" alias="${drush.aliases.local}">
      <param>partial</param>
    </drush> -->
    <drush command="cc" assume="yes" verbose="FALSE" alias="${drush.aliases.local}">
      <param>drush</param>
    </drush>
    <!-- <drush command="fra" assume="yes" verbose="FALSE" alias="${drush.aliases.local}" /> -->
    <!-- <exec dir="${docroot}" command="../hooks/dev/post-db-copy/dev-mode.sh" logoutput="true"/> -->
  </target>

</project>

Some files are not removed from build artifact

The following bug exists:

  • Add test.md to repo root.
  • Build deployment artifact. test.md is committed to artifact.
  • Delete test.md from repo root.
  • Build deployment artifact. test.md is not removed from artifact.

The current process for creating a deployment artifact is:

  • Delete and recreate deploy
  • git init in deploy dir.
  • Add upstream remotes and git fetch upstream changes.
  • git checkout -b <destination-branch> and git merge <source-branch>
  • review Remove specific dirs from deploy. E.g., config, docroot, hooks, factory-hooks, patches, vendor, though I understand needing to remove vendor before composer install.
  • review Copy specific files from deploy/../ to deploy. E.g., config, docroot, hooks, factory-hooks, patches (ignoring contrib dirs).
  • Execute composer install in deploy.
  • Build the make file for the active profile in deploy.
  • Build front end artifacts.
  • Sanitize deploy dir.

The whole "delete & copy" paradigm seems flawed to me.

Possible alternatives:

  • Use rsync with a delete flag.
  • ...

Move all common settings files to `sites/all/settings`

I think it makes sense to move all common settings files to sites/all/settings for the purpose of making BTL more multisite compatible. The convention of common settings residing in sites/all/settings follows more closely the convention how Drupal handles shared themes, modules, libraries, etc. Obviously includes from sites/all/settings will function correctly, but feel we should treat the default site as any other site in a multisite and not have it contain platform level config, but only its config. I find it to be much more sane when the number of sites scales and it keeps the default site isolated -- sharing config between site folders is more confusing to me personally.

Build failing on drush alias

Don't know if there were any relevant code changes when you changed bolt to BLT, but with a fresh clone of the repo, when I run ./blt.sh setup my build is now failing on setup.xml line 80. I'm not quite sure how to resolve. I am using dev desktop for my local environment.

BUILD FAILED /Users/34532/Sites/AcquiaBolt/olson-blt/build/core/phing/tasks/setup.xml:80:32: Drush exited with code 75

composer install is run twice on initial setup

Following the readme, steps are bolt.sh create, cd into project and then bolt.sh setup.

Both create and setup run composer install on the created project directory.

Is there a reason why we need to run composer install twice?

Difference between PHPUnit Tests included with Bolt versus PHPUnit tests in my custom module

I can run the PHPUnit tests that come with Bolt from within PHPStorm no problem and even throw a breakpoint in one of the methods and debug no problem.

However, I'm trying to figure out why I can't debug a PHPUnit test in one of my custom modules from within PHPStorm. When I right click on my test class in PHPStorm, I am prompted to create a test configuration for either a javascript file or a php script whereas if I click on one of the Bolt PHPUnit tests, PHPStorm just seems to "know" that it's a PHPUnit test.

I've detailed the issue further on the Drupal-VM issue queue and on stackexchange:

geerlingguy/drupal-vm#716

http://drupal.stackexchange.com/questions/203801/how-can-i-debug-phpunit-simpletests-for-a-custom-d8-module-in-phpstorm

I realize this is kind of off topic so thanks for any help. I'm just trying to debug a few instance variables in a method and would rather not print to the screen.

Drupal VM Build Failure when using deafult box/config.yml

When I initially setup my latest dev environment using blt and drupalvm. I also, updated the box/config.yml file to include https://github.com/geerlingguy/drupal-vm/blob/master/examples/acquia/acquia.config.ym. I inserted the contents of the file to the top of my box/config.yml file. When i ran vagrant up, it fails to find php-bz2. After reviewing some google pages, i found that the extra package for ubuntu 12.04 is names bzip2 (http://www.ehow.com/how_8639332_install-bzip2-ubuntu.html). Is this the extra package that is required by phantomJS, or it there a different package that I need to install for Ubuntu 12.04 so PhantomJS will be fine?

Bolt should allow deployment of tags not just branches

When working with ACSF, and not ACE, its difficult to tell if the branch you just pushed got the latest changes, or a hot fix was actually supplied.

It would be awesome if Bolt could deploy tags to circumvent this issue.

composer.json install-path for custom module hosted externally?

How can we specify another installer-path for custom modules, that reside in an external private repository, so that the module will get installed in a custom directory?

  "extra": {
    "installer-paths": {
      "docroot/core":                     ["type:drupal-core"],
      "docroot/modules/contrib/{$name}":  ["type:drupal-module"],
      "docroot/profiles/contrib/{$name}": ["type:drupal-profile"],
      "docroot/themes/contrib/{$name}":   ["type:drupal-theme"],
      "drush/contrib/{$name}":            ["type:drupal-drush"]
    },

Something like this would be helpful I think:
"docroot/modules/custom/{$name}": ["type:drupal-custom-modules"],

Update:
Doing some googling I found that you can do the following:

{
    "extra": {
        "installer-paths": {
            "sites/example.com/modules/{$name}": ["vendor/package"]
        }
    }
}

Haven't had a chance to try this yet but looks promising.I'd be happy to add something to one of the readme files. Any ideas where info like this should go?

source: https://getcomposer.org/doc/faqs/how-do-i-install-a-package-to-a-custom-path-for-my-framework.md

manual build and deploy process fails if git user.useConfigOnly option is set

When git's useConfigOnly option is set and the user.name and user.email is not set globally, running the process to create the build artifact and deploy it as defined in the deploy instructions fails with the error below.

project > deploy:artifact:commit:

fatal: user.useConfigOnly set but no name given fatal: user.useConfigOnly set but no name given

Setting the user config in the deploy directory does not successfully work around the problem since the deploy directory is wiped out each time as the first step in the deploy:artifact:prepare-dir step.

Command site-install needs a higher bootstrap level to run - you will need to invoke drush from a more functional Drupal environment to run this command.

When using the most recent version of blt and drupal vm, i get to the point where i am running ./blt.sh local:setup. during this process it errors but doenst give a good error msg so i ran the command manually to see what was happening, the result was "Command site-install needs a higher bootstrap level to run - you will need to invoke drush from a more functional Drupal environment to run this command." I think this command is being ran form the roject root when it should be ran from the docroot of th drupal site.

Permission Denied on blt bash alias creation

Create a bash alias now? (y/n) [y] ? y
./install-alias.sh: line 19: /Users/XXXXX/.bashrc: Permission denied
Added alias for blt to /Users/XXXXX/.bashrc
Restart your terminal session to use the new command.

Travis CI Automated Deployment Problems

I've made a ton of progress over the last couple of days figuring out how this project works. I'm a huge fan of pretty much everything in here and the new Drupal-VM integration is working really well for me. Also got everything working on Windows today as well which was kind of a bear...

That being said, I'm struggling with the automated deployment process. I'm deviating from the build/README.md a little just try and grok how it all works.

Here's my build: https://travis-ci.org/justinlevi/bolt/builds/139384098

I'm getting a permissions denied error with the deploy:push remote

project > deploy:push-remote:
     [exec] Warning: Permanently added the RSA host key for IP address '192.30.252.128' to the list of known hosts.
     [exec] Permission denied (publickey).
     [exec] fatal: Could not read from remote repository.
     [exec] 
     [exec] Please make sure you have the correct access rights
     [exec] and the repository exists.

I'm not sure if this is silly or just not possible, but I'm trying to push back to the develop-build branch if all tests pass successfully, on the same repository. Is this possible on the travis-ci.com (public travis)? There isn't anyplace on travis-ci.com to enter a public ssh key that I could find so I'm wondering if this just isn't possible.

If that's the case, how would someone handle this given it's just a demo and I don't own a personal private travis account? Hopefully what I'm trying to do here makes some sense...

Thanks in advance.

Referencing:
https://github.com/acquia/blt/blob/599acda7adf214d93b78d60c82d7cf44c8b129a5/template/build/README.md

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.