diff --git a/src/DrupalCI/Plugin/BuildSteps/dbcreate/SQLite.php b/src/DrupalCI/Plugin/BuildSteps/dbcreate/SQLite.php
new file mode 100644
index 0000000..f07f37b
--- /dev/null
+++ b/src/DrupalCI/Plugin/BuildSteps/dbcreate/SQLite.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * @file
+ * Contains \DrupalCI\Plugin\BuildSteps\dbcreate\SQLite.
+ */
+
+namespace DrupalCI\Plugin\BuildSteps\dbcreate;
+
+use DrupalCI\Plugin\BuildSteps\generic\ContainerCommand;
+use DrupalCI\Plugin\JobTypes\JobInterface;
+
+/**
+ * @PluginID("sqlite")
+ */
+class SQLite extends ContainerCommand {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function run(JobInterface $job, $data) {
+    // Nothing to do here, the SQLite database file will be created by the test
+    // runner.
+  }
+
+}
diff --git a/src/DrupalCI/Plugin/BuildSteps/environment/DbEnvironment.php b/src/DrupalCI/Plugin/BuildSteps/environment/DbEnvironment.php
index 78d9e5e..71ff269 100644
--- a/src/DrupalCI/Plugin/BuildSteps/environment/DbEnvironment.php
+++ b/src/DrupalCI/Plugin/BuildSteps/environment/DbEnvironment.php
@@ -21,6 +21,11 @@ class DbEnvironment extends EnvironmentBase {
    * {@inheritdoc}
    */
   public function run(JobInterface $job, $data) {
+    // We don't need to initialize any service container for SQLite.
+    if ($job->getBuildvar('DCI_DBTYPE') === 'sqlite') {
+      return;
+    }
+
     // Data format: 'mysql-5.5' or array('mysql-5.5', 'pgsql-9.3')
     // $data May be a string if one version required, or array if multiple
     // Normalize data to the array format, if necessary
diff --git a/src/DrupalCI/Plugin/JobTypes/JobBase.php b/src/DrupalCI/Plugin/JobTypes/JobBase.php
index 605313f..abe0798 100644
--- a/src/DrupalCI/Plugin/JobTypes/JobBase.php
+++ b/src/DrupalCI/Plugin/JobTypes/JobBase.php
@@ -114,7 +114,7 @@ class JobBase extends ContainerBase implements JobInterface {
 
   // Retrieves a single build variable for this job
   public function getBuildvar($build_var) {
-    return $this->buildVars[$build_var];
+    return isset($this->buildVars[$build_var]) ? $this->buildVars[$build_var] : NULL;
   }
 
   // Sets a single build variable for this job
diff --git a/src/DrupalCI/Plugin/Preprocess/definition/SQLite.php b/src/DrupalCI/Plugin/Preprocess/definition/SQLite.php
new file mode 100644
index 0000000..1f8601e
--- /dev/null
+++ b/src/DrupalCI/Plugin/Preprocess/definition/SQLite.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @file
+ * Contains \DrupalCI\Plugin\Preprocess\definition\SQLite.
+ */
+
+namespace DrupalCI\Plugin\Preprocess\definition;
+
+/**
+ * @PluginID("sqlite")
+ */
+class SQLite {
+
+  public function process(array &$definition, $value) {
+    // @todo For now, SQLite only supports the version installed by default on
+    // the PHP container, which is 3.8.2.
+    $definition['environment']['db'][0] = 'sqlite-3.8.2';
+  }
+
+}
diff --git a/src/DrupalCI/Plugin/Preprocess/variable/DBUrlBase.php b/src/DrupalCI/Plugin/Preprocess/variable/DBUrlBase.php
index 9fc45ba..27e0b00 100644
--- a/src/DrupalCI/Plugin/Preprocess/variable/DBUrlBase.php
+++ b/src/DrupalCI/Plugin/Preprocess/variable/DBUrlBase.php
@@ -29,11 +29,19 @@ abstract class DBUrlBase extends PluginBase implements VariableInterface {
    *   The URL part being replaced. Can be scheme, user, pass, host or path.
    * @param $value
    *   The new value of the URL part.
+   *
    * @return string
    *   The new DCI_DBURL.
    */
   protected function changeUrlPart($db_url, $part, $value) {
     $parts = parse_url($db_url);
+
+    // SQLite does not need any username or password mangling, so just return
+    // early with a valid value for --dburl.
+    if (isset($parts['scheme']) && strcmp($parts['scheme'], 'sqlite') == 0) {
+      return 'sqlite://localhost/sites/default/files/db.sqlite';
+    }
+
     $parts[$part] = $value;
     if (isset($parts['pass']) && !isset($parts['user'])) {
       $parts['user'] = 'user';
