Skip Navigation
Show nav
Dev Center
  • Get Started
  • Documentation
  • Changelog
  • Search
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
    • .NET
  • Documentation
  • Changelog
  • More
    Additional Resources
    • Home
    • Elements
    • Products
    • Pricing
    • Careers
    • Help
    • Status
    • Events
    • Podcasts
    • Compliance Center
    Heroku Blog

    Heroku Blog

    Find out what's new with Heroku on our blog.

    Visit Blog
  • Log inorSign up
Hide categories

Categories

  • Heroku Architecture
    • Compute (Dynos)
      • Dyno Management
      • Dyno Concepts
      • Dyno Behavior
      • Dyno Reference
      • Dyno Troubleshooting
    • Stacks (operating system images)
    • Networking & DNS
    • Platform Policies
    • Platform Principles
  • Developer Tools
    • Command Line
    • Heroku VS Code Extension
  • Deployment
    • Deploying with Git
    • Deploying with Docker
    • Deployment Integrations
  • Continuous Delivery & Integration (Heroku Flow)
    • Continuous Integration
  • Language Support
    • Node.js
      • Troubleshooting Node.js Apps
      • Working with Node.js
      • Node.js Behavior in Heroku
    • Ruby
      • Rails Support
      • Working with Bundler
      • Working with Ruby
      • Ruby Behavior in Heroku
      • Troubleshooting Ruby Apps
    • Python
      • Working with Python
      • Background Jobs in Python
      • Python Behavior in Heroku
      • Working with Django
    • Java
      • Java Behavior in Heroku
      • Working with Java
      • Working with Maven
      • Working with Spring Boot
      • Troubleshooting Java Apps
    • PHP
      • Working with PHP
      • PHP Behavior in Heroku
    • Go
      • Go Dependency Management
    • Scala
    • Clojure
    • .NET
      • Working with .NET
  • Databases & Data Management
    • Heroku Postgres
      • Postgres Basics
      • Postgres Getting Started
      • Postgres Performance
      • Postgres Data Transfer & Preservation
      • Postgres Availability
      • Postgres Special Topics
      • Migrating to Heroku Postgres
    • Heroku Key-Value Store
    • Apache Kafka on Heroku
    • Other Data Stores
  • AI
    • Working with AI
    • Heroku Inference
      • Inference API
      • Quick Start Guides
      • Inference Essentials
      • AI Models
    • Vector Database
    • Model Context Protocol
  • Monitoring & Metrics
    • Logging
  • App Performance
  • Add-ons
    • All Add-ons
  • Collaboration
  • Security
    • App Security
    • Identities & Authentication
      • Single Sign-on (SSO)
    • Private Spaces
      • Infrastructure Networking
    • Compliance
  • Heroku Enterprise
    • Enterprise Accounts
    • Enterprise Teams
    • Heroku Connect (Salesforce sync)
      • Heroku Connect Administration
      • Heroku Connect Reference
      • Heroku Connect Troubleshooting
  • Patterns & Best Practices
  • Extending Heroku
    • Platform API
    • App Webhooks
    • Heroku Labs
    • Building Add-ons
      • Add-on Development Tasks
      • Add-on APIs
      • Add-on Guidelines & Requirements
    • Building CLI Plugins
    • Developing Buildpacks
    • Dev Center
  • Accounts & Billing
  • Troubleshooting & Support
  • Integrating with Salesforce
  • Continuous Delivery & Integration (Heroku Flow)
  • Continuous Integration
  • Heroku CI In-Dyno Databases

Heroku CI In-Dyno Databases

English — 日本語に切り替える

Last updated December 03, 2024

Table of Contents

  • In-Dyno Databases
  • Usage
  • Release Policy
  • Set Version
  • Restrictions

In-Dyno databases are a feature of Heroku CI. In-Dyno databases are temporary and non-persistent, but require less network bandwidth and are more flexible than than their production add-on counterparts, resulting in improved flexibility and performance.

Heroku CI is currently unavailable for Fir-generation pipelines. Subscribe to our changelog to stay informed of when we add this feature to Fir.

In-Dyno Databases

In-Dyno databases are databases that run inside your test-run’s dyno. These databases differ from the more traditional Heroku add-ons like Heroku Postgres and Heroku Key-Value Store (KVS) in a few notable ways:

  • Database queries do not pass over the network, and, as a result, finish in a more consistent and fast speed.
  • Many of the restrictions that apply to external addons (like row limits, connection limits, feature enablement, and the ability to create more database) do not apply.
  • The data is ephemeral, meaning it is not persisted, backed up, or available outside of the dyno in any way.

The primary drawback to this type of database is its ephemerality; as such, this type of database would not be appropriate for production use. However, because test runs are ephemeral themselves, the advantages of greater flexibility and speed make it a great improvement for your CI workflow.

Usage

Before you can use In-Dyno databases, you need to specify a buildpack in your app.json that reflects the language you’re testing. For example:

{
  "buildpacks": [
    { "url": "heroku/ruby" }
  ]
}

You can use In-Dyno databases for your Heroku CI test runs by using an in-dyno plan. You may specify this in your app.json. For example:

{
  "environments": {
    "test": {
      "addons": ["heroku-postgresql:in-dyno", "heroku-redis:in-dyno"]
    }
  }
}

When a test run begins, you can use the database as normal via DATABASE_URL or REDIS_URL as appropriate. These urls will point to your locally installed database.

Release Policy

The In-Dyno databases will not always align with the traditional addon release. In-Dyno databases will generally target the latest major version and release point versions as needed.

Set Version

In the event you need a specific version of Postgres for your test runs, specify a value for POSTGRESQL_VERSION in your app.json file. Note that not all releases will be available in Heroku CI. We currently support major versions of 14, 15, and 16.

{
  "environments": {
    "test": {
      "env": { "POSTGRESQL_VERSION": "16" },
      "addons": ["heroku-postgresql:in-dyno"]
    }
  }
}

Similarly, to select a specific version of KVS for your test runs, specify a value for REDIS_VERSION in your app.json file. This should either be set to a KVS major version (eg 6.2 or 7.0) or the full version string such as 6.2.10. For example:

{
  "environments": {
    "test": {
      "env": { "REDIS_VERSION": "7.0" },
      "addons": ["heroku-redis:in-dyno"]
    }
  }
}

Restrictions

  • In-Dyno databases only work in Heroku CI. They will not be provisioned for any other type of app (such as Review Apps or Heroku Button Apps).
  • Currently, in-dyno plans are only supported for the heroku-redis and heroku-postgresql addons.
  • In-Dyno Postgres instances do not support SSL connections.
  • In-Dyno Postgres support is limited to the following extensions:
    • uuid
    • libxslt
    • libxml
    • openssl
    • gssapi
    • krb5

Keep reading

  • Continuous Integration

Feedback

Log in to submit feedback.

Heroku CI: Technical Detail on Test Run Lifecycle Heroku CI Parallel Test Runs

Information & Support

  • Getting Started
  • Documentation
  • Changelog
  • Compliance Center
  • Training & Education
  • Blog
  • Support Channels
  • Status

Language Reference

  • Node.js
  • Ruby
  • Java
  • PHP
  • Python
  • Go
  • Scala
  • Clojure
  • .NET

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing
  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Github
  • LinkedIn
  • © 2025 Salesforce, Inc. All rights reserved. Various trademarks held by their respective owners. Salesforce Tower, 415 Mission Street, 3rd Floor, San Francisco, CA 94105, United States
  • heroku.com
  • Legal
  • Terms of Service
  • Privacy Information
  • Responsible Disclosure
  • Trust
  • Contact
  • Cookie Preferences
  • Your Privacy Choices