查看源代码 Mix.Release (Mix v1.16.2)
定义发布结构和用于组装发布的便捷方法。
概要
函数
Mix.Release 结构具有以下只读字段
将给定应用程序规范复制到发布中。
将 source
处的 ebin 目录复制到 target
,同时尊重发布选项,例如 :strip_beams
。
如果发布配置为这样做,则复制 ERTS。
将 cookie 复制到给定路径。
使用 ERTS 版本和发布版本制作 start_erl.data 文件。
制作 sys.config
结构。
查找发布的模板路径。
为发布剥离 beam 文件。
类型
@type application() :: atom()
@type mode() :: :permanent | :transient | :temporary | :load | :none
@type t() :: %Mix.Release{ applications: %{required(application()) => keyword()}, boot_scripts: %{required(atom()) => [{application(), mode()}]}, config_providers: [{module(), term()}], erts_source: charlist() | nil, erts_version: charlist(), name: atom(), options: keyword(), overlays: [String.t()], path: String.t(), steps: [(t() -> t()) | :assemble, ...], version: String.t(), version_path: String.t() }
函数
Mix.Release 结构具有以下只读字段
:name
- 发布名称,以原子表示:version
- 发布版本,以字符串表示:path
- 发布根目录的路径:version_path
- 发布版本在发布内部的路径:applications
- 包含应用程序及其定义的映射:erts_source
- ERTS 源代码,以字符列表表示(或为 nil):erts_version
- ERTS 版本,以字符列表表示
以下字段可以修改,只要它们保持定义的类型
:boot_scripts
- 包含启动脚本的映射,以启动脚本名称作为键,以包含所有应用程序及其模式的关键字列表作为值:config_providers
- 包含{config_provider, term}
元组的列表,其中第一个元素是实现Config.Provider
行为的模块,term
是在Config.Provider.init/1
上给它的值:options
- 包含所有其他用户提供的发布选项的关键字列表:overlays
- 添加到发布的额外文件的列表。如果您有一个自定义步骤将额外文件添加到发布,则可以将这些文件添加到:overlays
字段中,以便它们在进一步的命令中(例如 tar/zip)也被考虑。overlays 中的每个条目都是每个文件相对于发布根目录的相对路径:steps
- 一系列函数,这些函数接收发布并返回一个发布。还必须包含原子:assemble
,它是一个内部组装步骤。也可以包含原子:tar
,用于创建发布的 tarball。
@spec copy_app(t(), application()) :: boolean()
将给定应用程序规范复制到发布中。
它假设应用程序存在于发布中。
将 source
处的 ebin 目录复制到 target
,同时尊重发布选项,例如 :strip_beams
。
如果发布配置为这样做,则复制 ERTS。
如果发布被复制,则返回 true
,否则返回 false
。
@spec make_boot_script(t(), Path.t(), [{application(), mode()}], [String.t()]) :: :ok | {:error, String.t()}
制作启动脚本。
它接收引导文件的路径,不带扩展名,例如 releases/0.1.0/start
,此命令将把 start.rel
、start.boot
和 start.script
写入给定路径,返回 {:ok, rel_path}
或 {:error, message}
。
引导脚本使用 RELEASE_LIB 环境变量,该变量必须使用 --boot-var
设置并指向发布 lib 目录。
将 cookie 复制到给定路径。
如果给定了 cookie 选项,我们会将其与文件内容(如果有)进行比较,并询问用户是否要覆盖。
如果没有选项,我们第一次生成一个随机选项。
使用 ERTS 版本和发布版本制作 start_erl.data 文件。
@spec make_sys_config(t(), keyword(), Config.Provider.config_path()) :: :ok | {:error, String.t()}
制作 sys.config
结构。
如果有配置提供者,则会将一个值注入 sys_config
中的 :elixir
应用程序配置中,以便在引导期间读取并触发提供者。
它使用以下发布选项来自定义其行为
:reboot_system_after_config
:start_distribution_during_config
:prune_runtime_sys_config_after_boot
如果没有任何配置提供者,它不会更改 sys_config
。
查找发布的模板路径。
为发布剥离 beam 文件。
这将保留虚拟机运行所需的重要部分,丢弃文档、调试信息、编译信息等。
保留的确切部分没有记录,并且可能会在未来版本中更改。