add touchless docker deploys

This commit is contained in:
2021-09-04 16:14:51 -04:00
committed by oliviasculley
parent eefde769dd
commit 6675c1dfab
12 changed files with 142 additions and 6953 deletions

View File

@ -9,6 +9,7 @@ defmodule Cannery.Application do
children = [
# Start the Ecto repository
Cannery.Repo,
Cannery.Repo.Migrator,
# Start the Telemetry supervisor
CanneryWeb.Telemetry,
# Start the PubSub system

20
lib/cannery/release.ex Normal file
View File

@ -0,0 +1,20 @@
defmodule Cannery.Release do
@app :cannery
def rollback(repo, version) do
load_app()
{:ok, _, _} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :down, to: version))
end
defp load_app do
Application.load(@app)
end
def migrate do
load_app()
for repo <- Application.fetch_env!(@app, :ecto_repos) do
{:ok, _, _} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :up, all: true))
end
end
end

View File

@ -0,0 +1,18 @@
defmodule Cannery.Repo.Migrator do
use GenServer
require Logger
def start_link(_) do
GenServer.start_link(__MODULE__, [], [])
end
def init(_) do
migrate!()
{:ok, nil}
end
def migrate! do
path = Application.app_dir(:cannery, "priv/repo/migrations")
Ecto.Migrator.run(Cannery.Repo, path, :up, all: true)
end
end