檢視原始碼 Mix.Release (Mix v1.16.2)
定義發行結構和組裝發行版的便利性。
摘要
函式
Mix.Release 結構具有下列唯讀欄位
將指定的應用程式規格複製到發行版中。
將 source
的 ebin 目錄複製到 target
,並尊重發行版選項,例如 :strip_beams
。
如果發行版已設定這麼做,則複製 ERTS。
將 cookie 複製到指定的路徑。
建立 start_erl.data 檔案,其中包含 ERTS 版本和發行版版本。
建立 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 選項,我們會將它與檔案內容 (如果有) 進行比較,並詢問使用者是否要覆寫。
如果沒有選項,我們會在第一次產生一個隨機的選項。
建立 start_erl.data 檔案,其中包含 ERTS 版本和發行版版本。
@spec make_sys_config(t(), keyword(), Config.Provider.config_path()) :: :ok | {:error, String.t()}
建立 sys.config
結構。
如果存在組態提供者,則會在開機期間將一個值注入到 :elixir
應用程式組態中的 sys_config
中,並觸發提供者。
它使用以下發行選項自訂其行為
:reboot_system_after_config
:start_distribution_during_config
:prune_runtime_sys_config_after_boot
如果沒有組態提供者,它不會變更 sys_config
。
尋找發行版的範本路徑。
為發行版剝離 beam 檔案。
這只會保留 VM 操作所需的重要區塊,捨棄文件、除錯資訊、編譯資訊和其他內容。
保留的確切區塊未記載,且可能會在未來版本中變更。