mirror of
https://github.com/livebook-dev/livebook.git
synced 2025-10-18 17:35:55 +08:00
Improvements to release (#944)
* Run in interactive mode: it uses less memory and improves boot time, which is the most desired properties for a dev tool * Do not use releases/cookie, instead generate one on boot
This commit is contained in:
parent
188edfcf07
commit
c0601798f3
8 changed files with 69 additions and 43 deletions
89
mix.exs
89
mix.exs
|
@ -1,6 +1,8 @@
|
|||
defmodule Livebook.MixProject do
|
||||
use Mix.Project
|
||||
|
||||
@elixir_requirement "~> 1.13"
|
||||
@elixir_app_version "1.13.2"
|
||||
@version "0.5.1"
|
||||
@description "Interactive and collaborative code notebooks - made with Phoenix LiveView"
|
||||
|
||||
|
@ -8,7 +10,7 @@ defmodule Livebook.MixProject do
|
|||
[
|
||||
app: :livebook,
|
||||
version: @version,
|
||||
elixir: "~> 1.13",
|
||||
elixir: @elixir_requirement,
|
||||
name: "Livebook",
|
||||
description: @description,
|
||||
elixirc_paths: elixirc_paths(Mix.env()),
|
||||
|
@ -16,9 +18,9 @@ defmodule Livebook.MixProject do
|
|||
aliases: aliases(),
|
||||
deps: with_lock(target_deps(Mix.target()) ++ deps()),
|
||||
escript: escript(),
|
||||
package: package(),
|
||||
default_release: :livebook,
|
||||
releases: releases(),
|
||||
package: package()
|
||||
releases: releases()
|
||||
]
|
||||
end
|
||||
|
||||
|
@ -38,6 +40,33 @@ defmodule Livebook.MixProject do
|
|||
defp elixirc_paths(:test), do: ["lib", "test/support"]
|
||||
defp elixirc_paths(_), do: ["lib"]
|
||||
|
||||
defp package do
|
||||
[
|
||||
licenses: ["Apache-2.0"],
|
||||
links: %{
|
||||
"GitHub" => "https://github.com/livebook-dev/livebook"
|
||||
},
|
||||
files: ~w(lib static config mix.exs mix.lock README.md LICENSE CHANGELOG.md)
|
||||
]
|
||||
end
|
||||
|
||||
defp aliases do
|
||||
[
|
||||
"dev.setup": ["deps.get", "cmd npm install --prefix assets"],
|
||||
"dev.build": ["cmd npm run deploy --prefix ./assets"],
|
||||
"format.all": ["format", "cmd npm run format --prefix ./assets"]
|
||||
]
|
||||
end
|
||||
|
||||
defp escript do
|
||||
[
|
||||
main_module: LivebookCLI,
|
||||
app: nil
|
||||
]
|
||||
end
|
||||
|
||||
## Dependencies
|
||||
|
||||
# Although we use requirements here, the with_lock() function
|
||||
# below ensures we only use the locked versions. This is important
|
||||
# for two reasons:
|
||||
|
@ -92,42 +121,44 @@ defmodule Livebook.MixProject do
|
|||
end
|
||||
end
|
||||
|
||||
defp aliases do
|
||||
[
|
||||
"dev.setup": ["deps.get", "cmd npm install --prefix assets"],
|
||||
"dev.build": ["cmd npm run deploy --prefix ./assets"],
|
||||
"format.all": ["format", "cmd npm run format --prefix ./assets"]
|
||||
]
|
||||
end
|
||||
|
||||
defp escript do
|
||||
[
|
||||
main_module: LivebookCLI,
|
||||
app: nil
|
||||
]
|
||||
end
|
||||
## Releases
|
||||
|
||||
defp releases do
|
||||
[
|
||||
livebook: [
|
||||
include_executables_for: [:unix],
|
||||
include_erts: false
|
||||
include_erts: false,
|
||||
rel_templates_path: "rel/server",
|
||||
steps: [:assemble, &remove_cookie/1]
|
||||
],
|
||||
mac_app: [
|
||||
include_executables_for: [:unix],
|
||||
include_erts: false,
|
||||
rel_templates_path: "rel/app",
|
||||
steps: [:assemble, &standalone_erlang_elixir/1, &build_mac_app/1]
|
||||
steps: [:assemble, &remove_cookie/1, &standalone_erlang_elixir/1, &build_mac_app/1]
|
||||
],
|
||||
mac_app_dmg: [
|
||||
include_executables_for: [:unix],
|
||||
include_erts: false,
|
||||
rel_templates_path: "rel/app",
|
||||
steps: [:assemble, &standalone_erlang_elixir/1, &build_mac_app_dmg/1]
|
||||
steps: [:assemble, &remove_cookie/1, &standalone_erlang_elixir/1, &build_mac_app_dmg/1]
|
||||
]
|
||||
]
|
||||
end
|
||||
|
||||
defp remove_cookie(release) do
|
||||
File.rm!(Path.join(release.path, "releases/COOKIE"))
|
||||
release
|
||||
end
|
||||
|
||||
defp standalone_erlang_elixir(release) do
|
||||
Code.require_file("rel/app/standalone.exs")
|
||||
|
||||
release
|
||||
|> Standalone.copy_erlang()
|
||||
|> Standalone.copy_elixir(@elixir_app_version)
|
||||
end
|
||||
|
||||
@app_options [
|
||||
name: "Livebook",
|
||||
version: @version,
|
||||
|
@ -139,14 +170,6 @@ defmodule Livebook.MixProject do
|
|||
]
|
||||
]
|
||||
|
||||
defp standalone_erlang_elixir(release) do
|
||||
Code.require_file("rel/app/standalone.exs")
|
||||
|
||||
release
|
||||
|> Standalone.copy_erlang()
|
||||
|> Standalone.copy_elixir("1.13.2")
|
||||
end
|
||||
|
||||
defp build_mac_app(release) do
|
||||
AppBuilder.build_mac_app(release, @app_options)
|
||||
end
|
||||
|
@ -166,14 +189,4 @@ defmodule Livebook.MixProject do
|
|||
|
||||
AppBuilder.build_mac_app_dmg(release, options)
|
||||
end
|
||||
|
||||
def package do
|
||||
[
|
||||
licenses: ["Apache-2.0"],
|
||||
links: %{
|
||||
"GitHub" => "https://github.com/livebook-dev/livebook"
|
||||
},
|
||||
files: ~w(lib static config mix.exs mix.lock README.md LICENSE CHANGELOG.md)
|
||||
]
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,2 +1,6 @@
|
|||
set LIVEBOOK_ROOT_PATH=%USERPROFILE%
|
||||
set RELEASE_MODE=interactive
|
||||
set LIVEBOOK_ROOT_PATH=%USERPROFILE%
|
||||
if not defined RELEASE_COOKIE (
|
||||
for /f "skip=1" %%X in ('wmic os get localdatetime') do if not defined TIMESTAMP set TIMESTAMP=%%X
|
||||
set RELEASE_COOKIE=cookie-!TIMESTAMP:~0,11!-!RANDOM!
|
||||
)
|
|
@ -1,2 +1,3 @@
|
|||
export LIVEBOOK_ROOT_PATH=$HOME
|
||||
export RELEASE_MODE=interactive
|
||||
export LIVEBOOK_ROOT_PATH=$HOME
|
||||
export RELEASE_COOKIE="${RELEASE_COOKIE:-$(cat /dev/urandom | env LC_ALL=C tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)}"
|
||||
|
|
2
rel/app/vm.args.eex
Normal file
2
rel/app/vm.args.eex
Normal file
|
@ -0,0 +1,2 @@
|
|||
# Disable busy waiting so that we don't waste resources
|
||||
+sbwt none +sbwtdcpu none +sbwtdio none
|
5
rel/server/env.sh.bat
Normal file
5
rel/server/env.sh.bat
Normal file
|
@ -0,0 +1,5 @@
|
|||
set RELEASE_MODE=interactive
|
||||
if not defined RELEASE_COOKIE (
|
||||
for /f "skip=1" %%X in ('wmic os get localdatetime') do if not defined TIMESTAMP set TIMESTAMP=%%X
|
||||
set RELEASE_COOKIE=cookie-!TIMESTAMP:~0,11!-!RANDOM!
|
||||
)
|
2
rel/server/env.sh.eex
Normal file
2
rel/server/env.sh.eex
Normal file
|
@ -0,0 +1,2 @@
|
|||
export RELEASE_MODE=interactive
|
||||
export RELEASE_COOKIE="${RELEASE_COOKIE:-$(cat /dev/urandom | env LC_ALL=C tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)}"
|
2
rel/server/vm.args.eex
Normal file
2
rel/server/vm.args.eex
Normal file
|
@ -0,0 +1,2 @@
|
|||
# Disable busy waiting so that we don't waste resources
|
||||
+sbwt none +sbwtdcpu none +sbwtdio none
|
|
@ -1,3 +0,0 @@
|
|||
# Disable busy waiting, so that we don't waste
|
||||
# resources when running in the cloud
|
||||
+sbwt none +sbwtdcpu none +sbwtdio none
|
Loading…
Add table
Reference in a new issue