---
title: "Announcing Atlas v0.12: Cloud State Management"
authors: a8m
tags: [schema, migration, deployments, cloud]
---

import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

It has been two months since we announced the [Community Preview Plan](2023-03-13-atlas-v010.mdx) for Atlas Cloud, and today I am thrilled to announce
the next batch of features that we are releasing to open-source and to Atlas Cloud:

In summary, version v0.12 includes a few major features that are explained in detail below:

1. We have added support for importing and running migration linting on GitHub PRs for external migration
   formats, such as [Flyway](https://flywaydb.org/) and [golang-migrate](https://github.com/golang-migrate/migrate).
2. Atlas now supports reading your migration directory directly from your Atlas Cloud account.
   This eliminates the need for users to build their Docker images with the directory content and
   makes running schema migrations in production much easier.
3. By connecting Atlas CLI to Atlas Cloud, migration runs will be recorded in the cloud account, making it easier to monitor
   and troubleshoot executed migrations.
4. A new Slack integration is now available for Community Plan accounts. Organizations that connect their migration directories to
   the cloud can receive notifications to Slack channels when the schemas are updated or deployed, among
   other events.
5. A new look has been given to the CI report page. It will be enhanced with additional features in the next version.

## Remote Directory State

One of the most common complaints we received from our users is that setting up migration deployments for real-world
environments is time-consuming. For each service, users are required to build a Docker image that includes the content
of the migration directory, which ensures it is available when Atlas is executed. After this, the built image must be
pushed to a registry, and finally, the deployment process needs to be configured to use this newly created image.

Not only does this process add complexity to the setup, but it is also repetitive for each migration directory and
involves setting up a CI/CD pipeline for each service, adding another layer of complexity.

Atlas supports the concept of [_Data Sources_](/atlas-schema/projects#data-sources), which enables users to retrieve
information stored in an external service or database. In this release, we are introducing a new data source called
[`remote_dir`](/atlas-schema/projects#data-source-remote_dir). This feature allows users to configure Atlas to read
the content of the migration directory directly from their cloud account, thereby eliminating the need to build Docker
images with the directory content.

Here is an example of how to configure the `remote_dir` data source:

```hcl title="atlas.hcl" {1-15}
variable "cloud_token" {
  type = string
}

atlas {
  cloud {
    token = var.cloud_token
  }
}

data "remote_dir" "migrations" {
  // The name of the migration directory in Atlas Cloud.
  // In this example, the directory is named "graph".
  name = "graph"
}

env {
  // Set environment name dynamically based on --env value.
  name = atlas.env
  migration {
    dir = data.remote_dir.migrations.url
  }
}
```

```shell
atlas migrate apply \
  --url "<DATABASE_URL>" \
  --config file://path/to/atlas.hcl \
  --env prod \
  --var cloud_token="<ATLAS_TOKEN>"
```

## Visualizing Migration Runs

Schema migrations are an integral part of application deployments, yet the setup might vary between different applications and teams.
Some teams may prefer using init-containers, while others run migrations from CD pipeline. There are also those who opt for Helm
upgrade hooks or use our Kubernetes operator. The differences also apply to databases. Some applications work with one database,
while others manage multiple databases, often seen in [multi-tenant applications](/blog/2022/10/27/multi-tenant-support).

However, across all these scenarios, there's a shared need for a single place to view and track the progress of executed
schema migrations. This includes triggering alerts and providing the means to troubleshoot and manage recovery if
problems arise.

Starting from version v0.12, if the `cloud` configuration was set with a valid token, Atlas will log migration
runs in your cloud account. Here's a demonstration of how it looks in action:

<Tabs>
<TabItem label="Single Deployment" value="single">

[![](https://atlasgo.io/uploads/single-deployment.png)](https://gh.atlasgo.cloud/deployments/51539607558)

</TabItem>
<TabItem label="Multi-Tenant Deployment" value="mt">

[![](https://atlasgo.io/uploads/mt-deployment.png)](https://gh.atlasgo.cloud/deployments/sets/94489280523)

</TabItem>
</Tabs>

We have several new features lined up for the Community Plan in the next release. If you're interested in
them earlier, don't hesitate to reach out to me in our [Discord community](https://discord.com/invite/zZ6sWVg6NT).

## Slack Webhooks

In this release, we're making our Slack Webhooks integration available to all users, promoting better team collaboration
and providing instant alerts when issues occur. This new feature allows different groups within the organization, such
as the data engineering team, to receive notifications when the schema changes. Or, ping the on-call when deployment fails.

If you're interested in enabling this feature for your project, please check out the [documentation](/cloud/directories#slack-integration).

<details><summary>Screenshot example</summary>

![](https://atlasgo.io/uploads/images/blog-v010/manage-webhook-with-deliveries.png)

</details>

## What's next?

There's a lot more coming in the following months. Our next releases will be focused on making other database objects
such as views, triggers, and policies accessible to all Atlas users. We'll also continue to make more features from our
commercial product available to both open-source and community preview users.

As always, we value community feedback and strive to be responsive to it. Please feel free to reach out and share your
feedback with us on our [Discord](https://discord.gg/zZ6sWVg6NT) if you think something is missing or could be improved. Cheers!
