add touchless docker deploys
This commit is contained in:
@ -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
20
lib/cannery/release.ex
Normal 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
|
18
lib/cannery/repo/migrator.ex
Normal file
18
lib/cannery/repo/migrator.ex
Normal 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
|
Reference in New Issue
Block a user