Building

From Things and Stuff Wiki
Revision as of 21:42, 9 December 2013 by Milk (talk | contribs) (→‎Profiles)
Jump to navigation Jump to search


See also Drush, Builds

Workflow

Aegir web user has SSL public cert. with Git repo. Pulls Distro with it's Profile, Settings, Features and Themes.

See also Aegir#Managing workflow

.build

To manage a web site project, create a base .build make file that points towards the profile and .make git repo. This allows the profile to be version controlled, plus avoids self-referentially downloading everything twice. Technique copied from mig5.

core = 7.x
api = 2
projects[drupal][type] = "core"

; Our distribution
projects[distroname][type] = "profile"
projects[distroname][download][type] = "git"
projects[distroname][download][url] = "git@gitserver.com:distroname.git"
projects[distroname][download][branch] = "dev"

Create platform using the build file path. Git --working-copy option (command-line or in Aegir) can used to build a dev site. Content can be then be migrated from live to testing. Once dev platform is updated, rebuild as live without --working-copy and migrate content back.

Site configuration is saved as Features. These and the profile themes are saved in Git also. (Optionally, keep theme in a separate repo.)

.make

.make files specify a recipe for modules, themes and libraries to be downloaded by Drush. Make files are used along with an install profile to make a distribution.

drush make-generate filename.make
  generate make from a platform/site

Examples

Projects

projects[drupal][version]  = "7.16"
projects[drupal][patch][]  = "http://drupal.org/files/1356276-base-profile-d7-39-do-not-test.patch"

projects[sasson][type] = theme
projects[sasson][version] = 3.x-dev
projects[sasson][download][type] = git
projects[sasson][download][url] = http://git.drupal.org/project/sasson.git

projects[virtualmerchant][type] = "module"
projects[virtualmerchant][download][type] = "file"
projects[virtualmerchant][download][url] = "https://drupal.org/files/uc_virtualmerchant.zip"

local files;

Libraries

.make files can specify external libraries to be downloaded using the Libraries API module.

; CKEditor
libraries[ckeditor][download][type]= "get"
libraries[ckeditor][download][url] =  "[ckeditor zip url goes here]"
libraries[ckeditor][directory_name] = "ckeditor"
libraries[ckeditor][destination] = "libraries"

Sandbox

core = 7.x
api = 2
; Sandbox module
projects[range_field][type] = module
projects[range_field][download][type] = git
projects[range_field][download][branch] = "7.x-1.x"
projects[range_field][download][url] = http://git.drupal.org/sandbox/Taran2L/1848632.git
projects[range_field][download][revision] = a1cc04da3c1dd957e6808b7e6a381c5970904863

Git

You can get things from git, specify branches, etc.

Also;

Profiles

Install Profile in Drupal 7 is actually a few files: mysite.profile, mysite.info, mysite.install.

drush vget install_profile

Patches

Profiler

The Profiler library is installed with the .make and simplifies the Install Profile system with a small custom generated .profile so an INI style .info file can be used to specify modules to be initialised, including site sections/etc. from the Features module, plus configuration settings via the Strongarm or similar module.

Aegir Provision will create a shared Platform distro install for Sites to be built upon.

Profiler Builder

  • Profiler Builder is a module for automating the creation of installation profiles and distributions. It has support for the Profiler installation profile simplifier library but is able to run independent of it (1.0-RC4+). This module creates a downloadable tar package that gives you a well made installation profile and associated drush make file based on the site its installed on.

Can be used to take a snapshot of the site.

Drupal.org distro projects

My profiles

Features

Features provides a UI and API for taking different site building components from modules with exportables and bundling them together in a single feature module. A feature module is like any other Drupal module except that it declares its components (e.g. views, contexts, CCK fields, etc.) in its .info file so that it can be checked, updated, or reverted programmatically.

Installation

You use Features like Modules. They can downloaded using Drush or be called by a distros .make and .info. Features can also be sourced from a Feature Server.

Install from a Feature Server:

drush dl feature --source=http://www.darrenmothersele.com/fserver
or drush dl features_links --source=http://community.featureservers.org/fserver

Modules

  • http://drupal.org/project/ftools - gives the ability to remove elements from a feature and put them back to the DB. also Adds a submit button in the recreate feature form named "auto create feature" which downloads the feature tarball, un-tars it and put the files in the right place in one click. required web server directory permissions.
  • http://drupal.org/project/uuid_features - provides a mechanism for exporting content (nodes, taxonomy, fields) into a features module. What's that you say? You thought features was only for configuration? This module is meant to be used in the cases where certain pieces of content straddle the line between pure content and configuration.
  • https://drupal.org/project/features_all - Automatically add all components of one component type to a feature module (i.e. all variables, all permissions, etc.) It is generally a bad idea to use features in this way, but a situation many have needed.

Feature Server

Feature Server (fserver)

Features

  • Dashboard Views - A collection of preconfigured Views to add to the dashboard of your Open Atrium groups. Currently includes: Book pages (with "Add Book page" link), Member Listing (including admin vs. user status), Projects (Case Tracker or Case Tracker Plus), Shoutbox
  • Ideation - A crowd-sourced suggestion box, which allows users to: suggest ideas, vote on and discuss already submitted ideas, surface most important/best ideas, as well as start discussions around ideas.

Git

Features to Git allows trusted users to write features directly to disk, commit them to git and push them to a remote. This makes it possible for site builders to be able to manage features in git without having to get their hands dirty on the command line.

Kit

Kit is a specification, a set of guidelines that facilitates building compatible and interoperable Features.

Debut

Debut is a set of baseline Drupal 7 Features designed to work independently yet integrate seamlessly together. Building on the Kit feature specification.

  • Debut Article: An article content type including media and block display.
  • Debut Bio: A user bio profile that can be displayed alongside e.g. blog posts showing the author's real name and bio.
  • Debut Blog: A Blog content type and recent blog post block display.
  • Debut Comment: Commonly needed functionality for commenting including comment notification, CAPTCHAs, and login enhancements.
  • Debut Event: An Event content type and calendar displays.
  • Debut Forum: Forum functionality integrating Drupal core Forum module and Advanced Forum.
  • Debut Highlighted: Highlight selected site content with slideshow.
  • Debut Link: A link content type and associated displays for presenting links to other sites.
  • Debut Media: media handling and display using the Media module.
  • Debut Section: Nested landing pages for the main sections of a site (using Book module).
  • Debut SEO: search engine optimizations including metatags.
  • Debut Social: A social media feature integrating some of the most commonly needed social media functionality.
  • Debut WYSIWYG: Input formats and accompanying editors, along with input formats per role.

UUID Features

Import and export


  • Deploy is used to deploy Drupal content to other Drupal sites or arbritary systems. Two concrete use cases are: using it as a content staging solution, using it to push content downstream from a main site to several sub sites
  • https://drupal.org/project/drush_ctex_bonus - Adds more functionality to the CTools drush bulk export commands. drush ctex modulename will export all known ctools exportables of a site to a module. But there are also other configurations you'd like to have in code. This project fills in that gap with extra configuration and drush commands.
  • https://drupal.org/project/data_export_import - export nodes, taxonomy terms and users to data files and then be able to import these data files into Drupal sites. There may be many uses for this module but the main one would be that it can provide a way to export data from a live Drupal site and then to import that live data into an updated version of that site.
  • https://drupal.org/project/dumper - This module aims for a quick and easy-to-use database dumper. Very useful on situations where you don't have access to command-line tools.
  • https://drupal.org/project/demo - This module allows you to take snapshots of your site. It turns a Drupal installation into a sandbox that you can use to: Try out and test new modules, configuration, etc. Set up a public demonstration site for a contributed module or theme. Develop and test update and upgrade paths.
  • https://drupal.org/project/configuration - The configuration management module enables the ability to keep track of specific configurations on a Drupal site, provides the ability to move these configurations between different environments (local, dev, qa, prod), and also move configurations between completely different sites (migrate configurations) without the use of modules with all configuration being owned by the site.

Patterns

Apps

Demo framework

Tools

Pullpush

Pullpush is a framework for developing web applications. It is designed to be used on a development server to enable a team of web developers to work together on websites and web applications. Although Pullpush has originally been developed to be used for Drupal based sites it can be extended to work with websites and web applications based on other types of websites and web applications.

Pullpush is basically a set of scripts which are put on to a (usually LAMP type) development server to help with development and deployment of web applications. Developers each have an account on the server and carry out development work directly on the server. There are also some specific user accounts set up to hold various versions of sites such as beta, livecopy etc. Once a new version of a site is ready to be deployed the scripts are used to merge live data with this latest version. This new merged site (latest beta site version merged with live data) is then made available to be the new live site.