Comments (9)
I would propose the idea of making the type of deploy artifact configurable/plug-able so we can easily add support for non-Acquia hosting services that need a differently structured deploy payload.
from blt.
@danepowell Can you provide more detail around the constraints that ACSF puts on settings.php, and why the pose issues? We can then brainstorm solutions.
I agree I'd like to prevent needing multiple deployment artifacts of different types.
@greylabel We did just merge a PR that will let you more easily customize the files that are copied into the deployment artifact, and those that are ignored. Though, we don't have a well developed concept of deployment artifact "types" which I think is a bit of a rabbit hole. In what way do you need to modify the artifact?
from blt.
@grasmash That might address most of my initial concerns. I was thinking about not needing to deploy Acquia hooks
, factory-hooks
, etc to non-AH. The other case I am considering is a deployment including rather involved front-end workflows/artifacts. Let me explore this a bit more and see where I run into hard edges with the new functionality you mentioned.
Speaking of a rabbit hole...
This does touch more broadly on how environment configuration is considered throughout the project and looking at alternative approaches to how local, hosting, and CI are differentiated. To @danepowell's point, right now we address environmental differences in settings.php
, but I think this is a higher-level issue for the project and we will need to solve similar problems in many of the tasks, deployment artifacts in this case.
By not treating everything non-AH as local
, but treating all environments as high-level peers, many of BLT's tasks could be made more contextual to the environment in which they are running. Thinking there might be reasons to have commands like setup:travis
/ setup:tugboat
or deploy:acquia
/ deploy:internal-hosting
. Even if only the Acquia options are bundled with BTL, I see value in extensibility, especially with the ever-growing number or local, CI, and hosting solution out there.
from blt.
@greylabel We did introduce some commands that target local and ci environments specifically--we could expand that to more tasks. See https://github.com/acquia/blt/blob/8.x/template/build/core/phing/tasks/ci.xml.
from blt.
So ACSF actually does a checksum of settings.php to make sure that it's bit-for-bit identical to the copy it provides here:
http://cgit.drupalcode.org/acsf/tree/acsf_init/lib/sites/default/settings.php?h=8.x-1.x
It runs this verification whenever acsf_init is run. BLT runs acsf_init during deploys to put this settings.php in place, and then ACSF runs the copy of acsf_init included in your project whenever it deploys code to verify that settings.php hasn't changed.
As you can see, that settings.php will not work as-is on ACE, and there's no way at all that I can see to extend or override it out of the box. I think it will be necessary to patch the ACSF module to make settings.php more flexible. Ideally we could get this patch accepted upstream, but more likely we'd have to maintain it locally.
from blt.
@danepowell I agree that the correct path forward is to make a change in the ACSF module upstream. I'm strongly opposed to maintaining a patch. We should have a discussion with the ACSF team and agree on a mutually beneficial solution.
from blt.
In the meantime, for anyone needing to deploy to ACE and ACSF in parallel, you should define one environment (let's assume ACE) as the "default" by configuring it in project.yml
. Then create a file build/custom/phing/acsf.yml
and in it define hosting: acsf
and the git
config for ACSF. Finally, add a second deploy step to .travis.yml
and modify the BLT command like so:
./blt.sh -propertyfile build/custom/phing/acsf.yml -propertyfileoverride deploy
from blt.
@danepowell quick add to the steps you listed above: you also need to add the ACSF repo url to the ssh_known_hosts lists in .travis.yml. Otherwise the build will time out while waiting to verify the host. Otherwise this worked out well for me.
from blt.
This was resolved by #471
from blt.
Related Issues (20)
- BLT-5202: Guzzle 7 Breaks Run-server Command
- BLT-5206: Remove cache.php, no longer needed for drush HOT 5
- BLT-5207: BLT excludes drush/Commands/custom
- BLT-5208: Replace abandoned composer package 'webmozart/path-util'
- BLT-5209: [info] Waiting for non-50x response from http://localhost:9222... HOT 4
- BLT-5211: acquia blt documentation is outdated, causing crashes and installation issues HOT 6
- BLT-5213: local.settings.php is not detecting on Acquia cloud IDE. HOT 1
- BLT-5215: UserConfig Class not found HOT 3
- BLT-5216: drupal:sync:default:site requires --no-interaction during ci on pipelines HOT 1
- BLT-5217: Undefined array key "bootstrap" for Inspector when Drupal is not installed
- drupal:sync:default:site and ckeditor 4 removal and other updb issues HOT 3
- Drush Launcher busted with Drush 12 HOT 6
- Additional logging during drupal:update command
- BLT-5223: BLT build starts failing after upgrade to 13.7 with Drush 12.1 HOT 1
- BLT-5224: Add back PHP code sniffing in pre-commit hook HOT 2
- Respect PHP and Drupal error logging HOT 1
- BLT-5228: test issue
- BLT-5229: How to hook into artifact:build when using deploy command
- BLT-5231: Update assertion handling to remove use of deprecated class HOT 1
- Announcing BLT’s End of Life HOT 10
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from blt.