|
|
@@ -11,7 +11,7 @@ defmodule Toy.MixProject do
|
|
|
start_permanent: Mix.env() == :prod,
|
|
|
aliases: aliases(),
|
|
|
deps: deps(),
|
|
|
- releases: [toy: [steps: [:assemble, &export_sha1/1]]]
|
|
|
+ releases: [toy: [steps: [:assemble, &export_sha1/1, &export_docker_image_tag/1]]]
|
|
|
]
|
|
|
end
|
|
|
|
|
|
@@ -78,9 +78,22 @@ defmodule Toy.MixProject do
|
|
|
with {:ok, _} <- described |> Version.parse(), do: {:ok, described}
|
|
|
end
|
|
|
|
|
|
- defp export_sha1(rel = %{version_path: path}) do
|
|
|
+ defp export_sha1(rel) when is_struct(rel, Mix.Release) do
|
|
|
with {sha1, 0} <- System.cmd("git", ["rev-parse", "HEAD"]),
|
|
|
- :ok <- path |> Path.join("git-sha1") |> File.write(sha1),
|
|
|
+ :ok <- rel |> write_in_rel_path("git-sha1", sha1),
|
|
|
do: rel
|
|
|
end
|
|
|
+
|
|
|
+ defp export_docker_image_tag(rel) when is_struct(rel, Mix.Release) do
|
|
|
+ with image_tag when not is_nil(image_tag) <- System.get_env("DOCKER_IMAGE_TAG"),
|
|
|
+ :ok <- rel |> write_in_rel_path("docker-image-tag", image_tag) do
|
|
|
+ rel
|
|
|
+ else
|
|
|
+ nil -> rel
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ defp write_in_rel_path(%{version_path: path}, file_path, content) do
|
|
|
+ path |> Path.join(file_path) |> File.write(content)
|
|
|
+ end
|
|
|
end
|