From ac73c20ceac29b8687c6ae50141f44d4ad7b26af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=BCdiger=20Diedrich?= Date: Tue, 9 May 2023 12:06:24 +0200 Subject: [PATCH] release tooling --- .gitignore | 3 ++- lib/chicken_egg/release.ex | 28 ++++++++++++++++++++++++++++ make_release.sh | 12 ++++++++++++ sync_prod.sh | 4 ++++ 4 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 lib/chicken_egg/release.ex create mode 100755 make_release.sh create mode 100644 sync_prod.sh diff --git a/.gitignore b/.gitignore index c4194c8..650a49f 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,5 @@ erl_crash.dump *.beam /config/*.secret.exs .elixir_ls/ -/priv/static/assets \ No newline at end of file +/priv/static/ +/rel/overlays/ \ No newline at end of file diff --git a/lib/chicken_egg/release.ex b/lib/chicken_egg/release.ex new file mode 100644 index 0000000..0808b61 --- /dev/null +++ b/lib/chicken_egg/release.ex @@ -0,0 +1,28 @@ +defmodule ChickenEgg.Release do + @moduledoc """ + Used for executing DB release tasks when run in production without Mix + installed. + """ + @app :chicken_egg + + def migrate do + load_app() + + for repo <- repos() do + {:ok, _, _} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :up, all: true)) + end + end + + def rollback(repo, version) do + load_app() + {:ok, _, _} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :down, to: version)) + end + + defp repos do + Application.fetch_env!(@app, :ecto_repos) + end + + defp load_app do + Application.load(@app) + end +end diff --git a/make_release.sh b/make_release.sh new file mode 100755 index 0000000..f03340f --- /dev/null +++ b/make_release.sh @@ -0,0 +1,12 @@ +#!/bin/sh +set -e + +export SECRET_KEY_BASE=$(mix phx.gen.secret) +export DATABASE_URL=ecto://postgres:postgres@localhost/chicken_egg_dev + +mix deps.get --only prod +MIX_ENV=prod mix compile +MIX_ENV=prod mix assets.deploy +mix phx.gen.release + +MIX_ENV=prod mix release diff --git a/sync_prod.sh b/sync_prod.sh new file mode 100644 index 0000000..8d6c808 --- /dev/null +++ b/sync_prod.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -e + +rsync -vau _build/prod/rel/chicken_egg/ servi-eins:/srv/www/chicken_egg/ \ No newline at end of file