shipfe 1.1.1 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/shipfe +0 -0
- package/package.json +5 -1
- package/.github/workflows/deploy.yml +0 -46
- package/.github/workflows/release.yml +0 -51
- package/.vscode/settings.json +0 -5
- package/README_CN.md +0 -41
- package/docs/.vitepress/cache/deps/@theme_index.js +0 -275
- package/docs/.vitepress/cache/deps/@theme_index.js.map +0 -7
- package/docs/.vitepress/cache/deps/_metadata.json +0 -40
- package/docs/.vitepress/cache/deps/chunk-BRNHR3LR.js +0 -9719
- package/docs/.vitepress/cache/deps/chunk-BRNHR3LR.js.map +0 -7
- package/docs/.vitepress/cache/deps/chunk-H6MPEGKE.js +0 -12877
- package/docs/.vitepress/cache/deps/chunk-H6MPEGKE.js.map +0 -7
- package/docs/.vitepress/cache/deps/package.json +0 -3
- package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js +0 -4505
- package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map +0 -7
- package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js +0 -583
- package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +0 -7
- package/docs/.vitepress/cache/deps/vue.js +0 -347
- package/docs/.vitepress/cache/deps/vue.js.map +0 -7
- package/docs/.vitepress/config.ts +0 -120
- package/docs/.vitepress/dist/404.html +0 -22
- package/docs/.vitepress/dist/assets/app.DZUgfPE2.js +0 -1
- package/docs/.vitepress/dist/assets/chunks/framework.BeaujayP.js +0 -19
- package/docs/.vitepress/dist/assets/chunks/theme.CNyaCki0.js +0 -1
- package/docs/.vitepress/dist/assets/commands_deploy.md.cybIRa1n.js +0 -17
- package/docs/.vitepress/dist/assets/commands_deploy.md.cybIRa1n.lean.js +0 -1
- package/docs/.vitepress/dist/assets/commands_init.md.Da652so5.js +0 -2
- package/docs/.vitepress/dist/assets/commands_init.md.Da652so5.lean.js +0 -1
- package/docs/.vitepress/dist/assets/commands_rollback.md.C0zKmFtz.js +0 -7
- package/docs/.vitepress/dist/assets/commands_rollback.md.C0zKmFtz.lean.js +0 -1
- package/docs/.vitepress/dist/assets/config_auth.md.hvDhtWY8.js +0 -56
- package/docs/.vitepress/dist/assets/config_auth.md.hvDhtWY8.lean.js +0 -1
- package/docs/.vitepress/dist/assets/config_overview.md.DAQclMJL.js +0 -34
- package/docs/.vitepress/dist/assets/config_overview.md.DAQclMJL.lean.js +0 -1
- package/docs/.vitepress/dist/assets/config_schema.md.Bv5TuD6E.js +0 -1
- package/docs/.vitepress/dist/assets/config_schema.md.Bv5TuD6E.lean.js +0 -1
- package/docs/.vitepress/dist/assets/config_sub-env.md.DSUt0Nyq.js +0 -26
- package/docs/.vitepress/dist/assets/config_sub-env.md.DSUt0Nyq.lean.js +0 -1
- package/docs/.vitepress/dist/assets/features_atomic.md.Cszqfb8O.js +0 -22
- package/docs/.vitepress/dist/assets/features_atomic.md.Cszqfb8O.lean.js +0 -1
- package/docs/.vitepress/dist/assets/features_cleanup.md.D1j3LEm1.js +0 -20
- package/docs/.vitepress/dist/assets/features_cleanup.md.D1j3LEm1.lean.js +0 -1
- package/docs/.vitepress/dist/assets/features_shared-assets.md.ChpQD81r.js +0 -26
- package/docs/.vitepress/dist/assets/features_shared-assets.md.ChpQD81r.lean.js +0 -1
- package/docs/.vitepress/dist/assets/features_snapshot.md.Bddk9nNL.js +0 -24
- package/docs/.vitepress/dist/assets/features_snapshot.md.Bddk9nNL.lean.js +0 -1
- package/docs/.vitepress/dist/assets/index.md.DqmDY2QI.js +0 -1
- package/docs/.vitepress/dist/assets/index.md.DqmDY2QI.lean.js +0 -1
- package/docs/.vitepress/dist/assets/install.md.CblrJsha.js +0 -1
- package/docs/.vitepress/dist/assets/install.md.CblrJsha.lean.js +0 -1
- package/docs/.vitepress/dist/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-italic-cyrillic.By2_1cv3.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-italic-greek-ext.1u6EdAuj.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-italic-greek.DJ8dCoTZ.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-italic-latin-ext.CN1xVJS-.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-italic-latin.C2AdPX0b.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-italic-vietnamese.BSbpV94h.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-greek.BBVDIX6e.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-vietnamese.BjW4sHH5.woff2 +0 -0
- package/docs/.vitepress/dist/assets/license.md.hVRT8__d.js +0 -1
- package/docs/.vitepress/dist/assets/license.md.hVRT8__d.lean.js +0 -1
- package/docs/.vitepress/dist/assets/quick-start.md.C06xD920.js +0 -23
- package/docs/.vitepress/dist/assets/quick-start.md.C06xD920.lean.js +0 -1
- package/docs/.vitepress/dist/assets/style.DES0mfMn.css +0 -1
- package/docs/.vitepress/dist/assets/troubleshooting.md.DLP5r-7N.js +0 -1
- package/docs/.vitepress/dist/assets/troubleshooting.md.DLP5r-7N.lean.js +0 -1
- package/docs/.vitepress/dist/assets/zh_commands_deploy.md.BbKuBIij.js +0 -9
- package/docs/.vitepress/dist/assets/zh_commands_deploy.md.BbKuBIij.lean.js +0 -1
- package/docs/.vitepress/dist/assets/zh_commands_init.md.Dc_WYD8D.js +0 -18
- package/docs/.vitepress/dist/assets/zh_commands_init.md.Dc_WYD8D.lean.js +0 -1
- package/docs/.vitepress/dist/assets/zh_commands_rollback.md.Cdvwk1lB.js +0 -6
- package/docs/.vitepress/dist/assets/zh_commands_rollback.md.Cdvwk1lB.lean.js +0 -1
- package/docs/.vitepress/dist/assets/zh_config_auth.md.BytNcdS4.js +0 -44
- package/docs/.vitepress/dist/assets/zh_config_auth.md.BytNcdS4.lean.js +0 -1
- package/docs/.vitepress/dist/assets/zh_config_overview.md.CvAKxlb5.js +0 -45
- package/docs/.vitepress/dist/assets/zh_config_overview.md.CvAKxlb5.lean.js +0 -1
- package/docs/.vitepress/dist/assets/zh_config_schema.md.CTCn0g9X.js +0 -67
- package/docs/.vitepress/dist/assets/zh_config_schema.md.CTCn0g9X.lean.js +0 -1
- package/docs/.vitepress/dist/assets/zh_config_sub-env.md.Ce3xOEsi.js +0 -167
- package/docs/.vitepress/dist/assets/zh_config_sub-env.md.Ce3xOEsi.lean.js +0 -1
- package/docs/.vitepress/dist/assets/zh_features_atomic.md.DUhJ_qq0.js +0 -42
- package/docs/.vitepress/dist/assets/zh_features_atomic.md.DUhJ_qq0.lean.js +0 -1
- package/docs/.vitepress/dist/assets/zh_features_cleanup.md.CEgw587m.js +0 -50
- package/docs/.vitepress/dist/assets/zh_features_cleanup.md.CEgw587m.lean.js +0 -1
- package/docs/.vitepress/dist/assets/zh_features_shared-assets.md.DZhvWCTp.js +0 -26
- package/docs/.vitepress/dist/assets/zh_features_shared-assets.md.DZhvWCTp.lean.js +0 -1
- package/docs/.vitepress/dist/assets/zh_features_snapshot.md.Bkqgn7lu.js +0 -39
- package/docs/.vitepress/dist/assets/zh_features_snapshot.md.Bkqgn7lu.lean.js +0 -1
- package/docs/.vitepress/dist/assets/zh_index.md.DKRf1R-g.js +0 -1
- package/docs/.vitepress/dist/assets/zh_index.md.DKRf1R-g.lean.js +0 -1
- package/docs/.vitepress/dist/assets/zh_install.md.0LCLPI3L.js +0 -41
- package/docs/.vitepress/dist/assets/zh_install.md.0LCLPI3L.lean.js +0 -1
- package/docs/.vitepress/dist/assets/zh_license.md.BUZ74dvK.js +0 -1
- package/docs/.vitepress/dist/assets/zh_license.md.BUZ74dvK.lean.js +0 -1
- package/docs/.vitepress/dist/assets/zh_quick-start.md.Bl-Larcu.js +0 -19
- package/docs/.vitepress/dist/assets/zh_quick-start.md.Bl-Larcu.lean.js +0 -1
- package/docs/.vitepress/dist/assets/zh_troubleshooting.md.DHyCAfy2.js +0 -1
- package/docs/.vitepress/dist/assets/zh_troubleshooting.md.DHyCAfy2.lean.js +0 -1
- package/docs/.vitepress/dist/commands/deploy.html +0 -41
- package/docs/.vitepress/dist/commands/init.html +0 -26
- package/docs/.vitepress/dist/commands/rollback.html +0 -31
- package/docs/.vitepress/dist/config/auth.html +0 -80
- package/docs/.vitepress/dist/config/overview.html +0 -58
- package/docs/.vitepress/dist/config/schema.html +0 -25
- package/docs/.vitepress/dist/config/sub-env.html +0 -50
- package/docs/.vitepress/dist/features/atomic.html +0 -46
- package/docs/.vitepress/dist/features/cleanup.html +0 -44
- package/docs/.vitepress/dist/features/shared-assets.html +0 -50
- package/docs/.vitepress/dist/features/snapshot.html +0 -48
- package/docs/.vitepress/dist/hashmap.json +0 -1
- package/docs/.vitepress/dist/index.html +0 -25
- package/docs/.vitepress/dist/install.html +0 -25
- package/docs/.vitepress/dist/license.html +0 -25
- package/docs/.vitepress/dist/quick-start.html +0 -47
- package/docs/.vitepress/dist/troubleshooting.html +0 -25
- package/docs/.vitepress/dist/vp-icons.css +0 -0
- package/docs/.vitepress/dist/zh/commands/deploy.html +0 -33
- package/docs/.vitepress/dist/zh/commands/init.html +0 -42
- package/docs/.vitepress/dist/zh/commands/rollback.html +0 -30
- package/docs/.vitepress/dist/zh/config/auth.html +0 -68
- package/docs/.vitepress/dist/zh/config/overview.html +0 -69
- package/docs/.vitepress/dist/zh/config/schema.html +0 -91
- package/docs/.vitepress/dist/zh/config/sub-env.html +0 -191
- package/docs/.vitepress/dist/zh/features/atomic.html +0 -66
- package/docs/.vitepress/dist/zh/features/cleanup.html +0 -74
- package/docs/.vitepress/dist/zh/features/shared-assets.html +0 -50
- package/docs/.vitepress/dist/zh/features/snapshot.html +0 -63
- package/docs/.vitepress/dist/zh/index.html +0 -25
- package/docs/.vitepress/dist/zh/install.html +0 -65
- package/docs/.vitepress/dist/zh/license.html +0 -25
- package/docs/.vitepress/dist/zh/quick-start.html +0 -43
- package/docs/.vitepress/dist/zh/troubleshooting.html +0 -25
- package/docs/commands/deploy.md +0 -46
- package/docs/commands/init.md +0 -27
- package/docs/commands/rollback.md +0 -45
- package/docs/config/auth.md +0 -112
- package/docs/config/overview.md +0 -63
- package/docs/config/schema.md +0 -52
- package/docs/config/sub-env.md +0 -62
- package/docs/features/atomic.md +0 -67
- package/docs/features/cleanup.md +0 -80
- package/docs/features/shared-assets.md +0 -72
- package/docs/features/snapshot.md +0 -58
- package/docs/index.md +0 -48
- package/docs/install.md +0 -21
- package/docs/license.md +0 -23
- package/docs/quick-start.md +0 -98
- package/docs/troubleshooting.md +0 -88
- package/docs/zh/commands/deploy.md +0 -127
- package/docs/zh/commands/init.md +0 -76
- package/docs/zh/commands/rollback.md +0 -115
- package/docs/zh/config/auth.md +0 -195
- package/docs/zh/config/overview.md +0 -153
- package/docs/zh/config/schema.md +0 -253
- package/docs/zh/config/sub-env.md +0 -293
- package/docs/zh/features/atomic.md +0 -249
- package/docs/zh/features/cleanup.md +0 -241
- package/docs/zh/features/shared-assets.md +0 -72
- package/docs/zh/features/snapshot.md +0 -186
- package/docs/zh/index.md +0 -65
- package/docs/zh/install.md +0 -160
- package/docs/zh/license.md +0 -23
- package/docs/zh/quick-start.md +0 -109
- package/docs/zh/troubleshooting.md +0 -88
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en" dir="ltr">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
6
|
-
<title>Sub-environments | Shipfe</title>
|
|
7
|
-
<meta name="description" content="A powerful, free, Rust-based web app deployment tool">
|
|
8
|
-
<meta name="generator" content="VitePress v1.6.4">
|
|
9
|
-
<link rel="preload stylesheet" href="/shipfe-rust/assets/style.DES0mfMn.css" as="style">
|
|
10
|
-
<link rel="preload stylesheet" href="/shipfe-rust/vp-icons.css" as="style">
|
|
11
|
-
|
|
12
|
-
<script type="module" src="/shipfe-rust/assets/app.DZUgfPE2.js"></script>
|
|
13
|
-
<link rel="preload" href="/shipfe-rust/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
|
|
14
|
-
<link rel="modulepreload" href="/shipfe-rust/assets/chunks/theme.CNyaCki0.js">
|
|
15
|
-
<link rel="modulepreload" href="/shipfe-rust/assets/chunks/framework.BeaujayP.js">
|
|
16
|
-
<link rel="modulepreload" href="/shipfe-rust/assets/config_sub-env.md.DSUt0Nyq.lean.js">
|
|
17
|
-
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
|
|
18
|
-
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
|
|
19
|
-
</head>
|
|
20
|
-
<body>
|
|
21
|
-
<div id="app"><div class="Layout" data-v-5d98c3a5><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0b0ada53></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0b0ada53>Skip to content</a><!--]--><!----><header class="VPNav" data-v-5d98c3a5 data-v-ae24b3ad><div class="VPNavBar" data-v-ae24b3ad data-v-6aa21345><div class="wrapper" data-v-6aa21345><div class="container" data-v-6aa21345><div class="title" data-v-6aa21345><div class="VPNavBarTitle has-sidebar" data-v-6aa21345 data-v-1168a8e4><a class="title" href="/shipfe-rust/" data-v-1168a8e4><!--[--><!--]--><!----><span data-v-1168a8e4>Shipfe</span><!--[--><!--]--></a></div></div><div class="content" data-v-6aa21345><div class="content-body" data-v-6aa21345><!--[--><!--]--><div class="VPNavBarSearch search" data-v-6aa21345><!----></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-6aa21345 data-v-dc692963><span id="main-nav-aria-label" class="visually-hidden" data-v-dc692963> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/shipfe-rust/quick-start.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>Quick Start</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/shipfe-rust/config/overview.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>Config</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/Master-Jian/shipfe-rust" target="_blank" rel="noreferrer" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>GitHub</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-6aa21345 data-v-88af2de4 data-v-cf11d7a2><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-cf11d7a2><span class="text" data-v-cf11d7a2><span class="vpi-languages option-icon" data-v-cf11d7a2></span><!----><span class="vpi-chevron-down text-icon" data-v-cf11d7a2></span></span></button><div class="menu" data-v-cf11d7a2><div class="VPMenu" data-v-cf11d7a2 data-v-b98bc113><!----><!--[--><!--[--><div class="items" data-v-88af2de4><p class="title" data-v-88af2de4>English</p><!--[--><div class="VPMenuLink" data-v-88af2de4 data-v-35975db6><a class="VPLink link" href="/shipfe-rust/zh/config/sub-env.html" data-v-35975db6><!--[--><span data-v-35975db6>中文</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-6aa21345 data-v-6c893767><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-6c893767 data-v-5337faa4 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-5337faa4></span><span class="vpi-moon moon" data-v-5337faa4></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-6aa21345 data-v-bb2aa2f0 data-v-cf11d7a2><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-cf11d7a2><span class="vpi-more-horizontal icon" data-v-cf11d7a2></span></button><div class="menu" data-v-cf11d7a2><div class="VPMenu" data-v-cf11d7a2 data-v-b98bc113><!----><!--[--><!--[--><div class="group translations" data-v-bb2aa2f0><p class="trans-title" data-v-bb2aa2f0>English</p><!--[--><div class="VPMenuLink" data-v-bb2aa2f0 data-v-35975db6><a class="VPLink link" href="/shipfe-rust/zh/config/sub-env.html" data-v-35975db6><!--[--><span data-v-35975db6>中文</span><!--]--></a></div><!--]--></div><div class="group" data-v-bb2aa2f0><div class="item appearance" data-v-bb2aa2f0><p class="label" data-v-bb2aa2f0>Appearance</p><div class="appearance-action" data-v-bb2aa2f0><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-bb2aa2f0 data-v-5337faa4 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-5337faa4></span><span class="vpi-moon moon" data-v-5337faa4></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-6aa21345 data-v-e5dd9c1c><span class="container" data-v-e5dd9c1c><span class="top" data-v-e5dd9c1c></span><span class="middle" data-v-e5dd9c1c></span><span class="bottom" data-v-e5dd9c1c></span></span></button></div></div></div></div><div class="divider" data-v-6aa21345><div class="divider-line" data-v-6aa21345></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-5d98c3a5 data-v-a6f0e41e><div class="container" data-v-a6f0e41e><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-a6f0e41e><span class="vpi-align-left menu-icon" data-v-a6f0e41e></span><span class="menu-text" data-v-a6f0e41e>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-a6f0e41e data-v-8a42e2b4><button data-v-8a42e2b4>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-5d98c3a5 data-v-319d5ca6><div class="curtain" data-v-319d5ca6></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-319d5ca6><span class="visually-hidden" id="sidebar-aria-label" data-v-319d5ca6> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Getting Started</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Introduction</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/quick-start.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Quick Start</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/install.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Installation</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Commands</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/commands/init.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>init</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/commands/deploy.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>deploy</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/commands/rollback.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>rollback</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0 has-active" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Configuration</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/config/overview.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Config Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/config/schema.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Config Schema</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/config/auth.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Authentication</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/config/sub-env.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Sub-environments</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Features</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/features/atomic.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Atomic Deployment</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/features/shared-assets.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Shared Assets</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/features/snapshot.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Snapshots</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/features/cleanup.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Cleanup</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Operations</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/troubleshooting.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Troubleshooting</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-5d98c3a5 data-v-1428d186><div class="VPDoc has-sidebar has-aside" data-v-1428d186 data-v-39a288b8><!--[--><!--]--><div class="container" data-v-39a288b8><div class="aside" data-v-39a288b8><div class="aside-curtain" data-v-39a288b8></div><div class="aside-container" data-v-39a288b8><div class="aside-content" data-v-39a288b8><div class="VPDocAside" data-v-39a288b8 data-v-3f215769><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-3f215769 data-v-a5bbad30><div class="content" data-v-a5bbad30><div class="outline-marker" data-v-a5bbad30></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-a5bbad30>On this page</div><ul class="VPDocOutlineItem root" data-v-a5bbad30 data-v-b933a997><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-3f215769></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-39a288b8><div class="content-container" data-v-39a288b8><!--[--><!--]--><main class="main" data-v-39a288b8><div style="position:relative;" class="vp-doc _shipfe-rust_config_sub-env" data-v-39a288b8><div><h1 id="sub-environments" tabindex="-1">Sub-environments <a class="header-anchor" href="#sub-environments" aria-label="Permalink to "Sub-environments""></a></h1><p>Sub-environments allow deploying multiple applications or different configurations on the same server.</p><h2 id="configuration-structure" tabindex="-1">Configuration Structure <a class="header-anchor" href="#configuration-structure" aria-label="Permalink to "Configuration Structure""></a></h2><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
|
|
22
|
-
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "environments"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
|
|
23
|
-
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "dev"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
|
|
24
|
-
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "build_command"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"npm run build"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
|
25
|
-
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "local_dist_path"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"./dist"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
|
26
|
-
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "servers"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic;">...</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span>
|
|
27
|
-
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "sub_environments"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
|
|
28
|
-
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "admin"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
|
|
29
|
-
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "build_command"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"npm run build:admin"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
|
30
|
-
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "remote_deploy_path"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"/var/www/dev/admin"</span></span>
|
|
31
|
-
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
|
32
|
-
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "shop"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
|
|
33
|
-
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "build_command"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"npm run build:shop"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
|
34
|
-
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "remote_deploy_path"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"/var/www/dev/shop"</span></span>
|
|
35
|
-
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
|
36
|
-
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
|
37
|
-
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
|
38
|
-
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
|
39
|
-
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="inheritance-rules" tabindex="-1">Inheritance Rules <a class="header-anchor" href="#inheritance-rules" aria-label="Permalink to "Inheritance Rules""></a></h2><p>Sub-environments inherit all settings from their parent environment but can override:</p><ul><li><code>build_command</code></li><li><code>local_dist_path</code></li><li><code>remote_deploy_path</code></li></ul><h2 id="deploying-sub-environments" tabindex="-1">Deploying Sub-environments <a class="header-anchor" href="#deploying-sub-environments" aria-label="Permalink to "Deploying Sub-environments""></a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Deploy single sub-environment</span></span>
|
|
40
|
-
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">shipfe</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> deploy</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --profile</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> dev-admin</span></span>
|
|
41
|
-
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">shipfe</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> deploy</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --profile</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> dev-shop</span></span>
|
|
42
|
-
<span class="line"></span>
|
|
43
|
-
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Deploy all sub-environments</span></span>
|
|
44
|
-
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">shipfe</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> deploy</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --profile</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> dev</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --all-sub</span></span></code></pre></div><h2 id="directory-structure" tabindex="-1">Directory Structure <a class="header-anchor" href="#directory-structure" aria-label="Permalink to "Directory Structure""></a></h2><p>Parent and sub-environments are deployed to different directories:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>/var/www/dev/ # Parent environment</span></span>
|
|
45
|
-
<span class="line"><span>/var/www/dev/admin/ # Sub-environment admin</span></span>
|
|
46
|
-
<span class="line"><span>/var/www/dev/shop/ # Sub-environment shop</span></span></code></pre></div><h2 id="rolling-back-sub-environments" tabindex="-1">Rolling Back Sub-environments <a class="header-anchor" href="#rolling-back-sub-environments" aria-label="Permalink to "Rolling Back Sub-environments""></a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">shipfe</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> rollback</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --profile</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> dev-admin</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --to</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 20260303_034945</span></span></code></pre></div></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-e257564d><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-e257564d><span class="visually-hidden" id="doc-footer-aria-label" data-v-e257564d>Pager</span><div class="pager" data-v-e257564d><a class="VPLink link pager-link prev" href="/shipfe-rust/config/auth.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Previous page</span><span class="title" data-v-e257564d>Authentication</span><!--]--></a></div><div class="pager" data-v-e257564d><a class="VPLink link pager-link next" href="/shipfe-rust/features/atomic.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Next page</span><span class="title" data-v-e257564d>Atomic Deployment</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
|
|
47
|
-
<script>window.__VP_HASH_MAP__=JSON.parse("{\"commands_deploy.md\":\"cybIRa1n\",\"commands_init.md\":\"Da652so5\",\"commands_rollback.md\":\"C0zKmFtz\",\"config_auth.md\":\"hvDhtWY8\",\"config_overview.md\":\"DAQclMJL\",\"config_schema.md\":\"Bv5TuD6E\",\"config_sub-env.md\":\"DSUt0Nyq\",\"features_atomic.md\":\"Cszqfb8O\",\"features_cleanup.md\":\"D1j3LEm1\",\"features_shared-assets.md\":\"ChpQD81r\",\"features_snapshot.md\":\"Bddk9nNL\",\"index.md\":\"DqmDY2QI\",\"install.md\":\"CblrJsha\",\"license.md\":\"hVRT8__d\",\"quick-start.md\":\"C06xD920\",\"troubleshooting.md\":\"DLP5r-7N\",\"zh_commands_deploy.md\":\"BbKuBIij\",\"zh_commands_init.md\":\"Dc_WYD8D\",\"zh_commands_rollback.md\":\"Cdvwk1lB\",\"zh_config_auth.md\":\"BytNcdS4\",\"zh_config_overview.md\":\"CvAKxlb5\",\"zh_config_schema.md\":\"CTCn0g9X\",\"zh_config_sub-env.md\":\"Ce3xOEsi\",\"zh_features_atomic.md\":\"DUhJ_qq0\",\"zh_features_cleanup.md\":\"CEgw587m\",\"zh_features_shared-assets.md\":\"DZhvWCTp\",\"zh_features_snapshot.md\":\"Bkqgn7lu\",\"zh_index.md\":\"DKRf1R-g\",\"zh_install.md\":\"0LCLPI3L\",\"zh_license.md\":\"BUZ74dvK\",\"zh_quick-start.md\":\"Bl-Larcu\",\"zh_troubleshooting.md\":\"DHyCAfy2\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Shipfe\",\"description\":\"A VitePress site\",\"base\":\"/shipfe-rust/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en\",\"title\":\"Shipfe\",\"description\":\"A powerful, free, Rust-based web app deployment tool\",\"themeConfig\":{\"nav\":[{\"text\":\"Quick Start\",\"link\":\"/quick-start\"},{\"text\":\"Config\",\"link\":\"/config/overview\"},{\"text\":\"GitHub\",\"link\":\"https://github.com/Master-Jian/shipfe-rust\"}],\"sidebar\":[{\"text\":\"Getting Started\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/\"},{\"text\":\"Quick Start\",\"link\":\"/quick-start\"},{\"text\":\"Installation\",\"link\":\"/install\"}]},{\"text\":\"Commands\",\"items\":[{\"text\":\"init\",\"link\":\"/commands/init\"},{\"text\":\"deploy\",\"link\":\"/commands/deploy\"},{\"text\":\"rollback\",\"link\":\"/commands/rollback\"}]},{\"text\":\"Configuration\",\"items\":[{\"text\":\"Config Overview\",\"link\":\"/config/overview\"},{\"text\":\"Config Schema\",\"link\":\"/config/schema\"},{\"text\":\"Authentication\",\"link\":\"/config/auth\"},{\"text\":\"Sub-environments\",\"link\":\"/config/sub-env\"}]},{\"text\":\"Features\",\"items\":[{\"text\":\"Atomic Deployment\",\"link\":\"/features/atomic\"},{\"text\":\"Shared Assets\",\"link\":\"/features/shared-assets\"},{\"text\":\"Snapshots\",\"link\":\"/features/snapshot\"},{\"text\":\"Cleanup\",\"link\":\"/features/cleanup\"}]},{\"text\":\"Operations\",\"items\":[{\"text\":\"Troubleshooting\",\"link\":\"/troubleshooting\"}]}]}},\"zh\":{\"label\":\"中文\",\"lang\":\"zh-CN\",\"title\":\"Shipfe\",\"description\":\"一个强大的、免费的、基于 Rust 的 Web 应用部署工具\",\"themeConfig\":{\"nav\":[{\"text\":\"快速入门\",\"link\":\"/zh/quick-start\"},{\"text\":\"配置\",\"link\":\"/zh/config/overview\"},{\"text\":\"GitHub\",\"link\":\"https://github.com/Master-Jian/shipfe-rust\"}],\"sidebar\":[{\"text\":\"开始\",\"items\":[{\"text\":\"简介\",\"link\":\"/zh/\"},{\"text\":\"快速入门\",\"link\":\"/zh/quick-start\"},{\"text\":\"安装\",\"link\":\"/zh/install\"}]},{\"text\":\"命令\",\"items\":[{\"text\":\"init\",\"link\":\"/zh/commands/init\"},{\"text\":\"deploy\",\"link\":\"/zh/commands/deploy\"},{\"text\":\"rollback\",\"link\":\"/zh/commands/rollback\"}]},{\"text\":\"配置\",\"items\":[{\"text\":\"配置概览\",\"link\":\"/zh/config/overview\"},{\"text\":\"配置项详解\",\"link\":\"/zh/config/schema\"},{\"text\":\"认证\",\"link\":\"/zh/config/auth\"},{\"text\":\"子环境\",\"link\":\"/zh/config/sub-env\"}]},{\"text\":\"功能\",\"items\":[{\"text\":\"原子部署\",\"link\":\"/zh/features/atomic\"},{\"text\":\"共享资源管理\",\"link\":\"/zh/features/shared-assets\"},{\"text\":\"资源快照\",\"link\":\"/zh/features/snapshot\"},{\"text\":\"自动清理\",\"link\":\"/zh/features/cleanup\"}]},{\"text\":\"运维\",\"items\":[{\"text\":\"故障排除\",\"link\":\"/zh/troubleshooting\"}]}]}}},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
|
|
48
|
-
|
|
49
|
-
</body>
|
|
50
|
-
</html>
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en" dir="ltr">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
6
|
-
<title>Atomic Deployment | Shipfe</title>
|
|
7
|
-
<meta name="description" content="A powerful, free, Rust-based web app deployment tool">
|
|
8
|
-
<meta name="generator" content="VitePress v1.6.4">
|
|
9
|
-
<link rel="preload stylesheet" href="/shipfe-rust/assets/style.DES0mfMn.css" as="style">
|
|
10
|
-
<link rel="preload stylesheet" href="/shipfe-rust/vp-icons.css" as="style">
|
|
11
|
-
|
|
12
|
-
<script type="module" src="/shipfe-rust/assets/app.DZUgfPE2.js"></script>
|
|
13
|
-
<link rel="preload" href="/shipfe-rust/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
|
|
14
|
-
<link rel="modulepreload" href="/shipfe-rust/assets/chunks/theme.CNyaCki0.js">
|
|
15
|
-
<link rel="modulepreload" href="/shipfe-rust/assets/chunks/framework.BeaujayP.js">
|
|
16
|
-
<link rel="modulepreload" href="/shipfe-rust/assets/features_atomic.md.Cszqfb8O.lean.js">
|
|
17
|
-
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
|
|
18
|
-
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
|
|
19
|
-
</head>
|
|
20
|
-
<body>
|
|
21
|
-
<div id="app"><div class="Layout" data-v-5d98c3a5><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0b0ada53></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0b0ada53>Skip to content</a><!--]--><!----><header class="VPNav" data-v-5d98c3a5 data-v-ae24b3ad><div class="VPNavBar" data-v-ae24b3ad data-v-6aa21345><div class="wrapper" data-v-6aa21345><div class="container" data-v-6aa21345><div class="title" data-v-6aa21345><div class="VPNavBarTitle has-sidebar" data-v-6aa21345 data-v-1168a8e4><a class="title" href="/shipfe-rust/" data-v-1168a8e4><!--[--><!--]--><!----><span data-v-1168a8e4>Shipfe</span><!--[--><!--]--></a></div></div><div class="content" data-v-6aa21345><div class="content-body" data-v-6aa21345><!--[--><!--]--><div class="VPNavBarSearch search" data-v-6aa21345><!----></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-6aa21345 data-v-dc692963><span id="main-nav-aria-label" class="visually-hidden" data-v-dc692963> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/shipfe-rust/quick-start.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>Quick Start</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/shipfe-rust/config/overview.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>Config</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/Master-Jian/shipfe-rust" target="_blank" rel="noreferrer" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>GitHub</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-6aa21345 data-v-88af2de4 data-v-cf11d7a2><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-cf11d7a2><span class="text" data-v-cf11d7a2><span class="vpi-languages option-icon" data-v-cf11d7a2></span><!----><span class="vpi-chevron-down text-icon" data-v-cf11d7a2></span></span></button><div class="menu" data-v-cf11d7a2><div class="VPMenu" data-v-cf11d7a2 data-v-b98bc113><!----><!--[--><!--[--><div class="items" data-v-88af2de4><p class="title" data-v-88af2de4>English</p><!--[--><div class="VPMenuLink" data-v-88af2de4 data-v-35975db6><a class="VPLink link" href="/shipfe-rust/zh/features/atomic.html" data-v-35975db6><!--[--><span data-v-35975db6>中文</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-6aa21345 data-v-6c893767><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-6c893767 data-v-5337faa4 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-5337faa4></span><span class="vpi-moon moon" data-v-5337faa4></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-6aa21345 data-v-bb2aa2f0 data-v-cf11d7a2><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-cf11d7a2><span class="vpi-more-horizontal icon" data-v-cf11d7a2></span></button><div class="menu" data-v-cf11d7a2><div class="VPMenu" data-v-cf11d7a2 data-v-b98bc113><!----><!--[--><!--[--><div class="group translations" data-v-bb2aa2f0><p class="trans-title" data-v-bb2aa2f0>English</p><!--[--><div class="VPMenuLink" data-v-bb2aa2f0 data-v-35975db6><a class="VPLink link" href="/shipfe-rust/zh/features/atomic.html" data-v-35975db6><!--[--><span data-v-35975db6>中文</span><!--]--></a></div><!--]--></div><div class="group" data-v-bb2aa2f0><div class="item appearance" data-v-bb2aa2f0><p class="label" data-v-bb2aa2f0>Appearance</p><div class="appearance-action" data-v-bb2aa2f0><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-bb2aa2f0 data-v-5337faa4 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-5337faa4></span><span class="vpi-moon moon" data-v-5337faa4></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-6aa21345 data-v-e5dd9c1c><span class="container" data-v-e5dd9c1c><span class="top" data-v-e5dd9c1c></span><span class="middle" data-v-e5dd9c1c></span><span class="bottom" data-v-e5dd9c1c></span></span></button></div></div></div></div><div class="divider" data-v-6aa21345><div class="divider-line" data-v-6aa21345></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-5d98c3a5 data-v-a6f0e41e><div class="container" data-v-a6f0e41e><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-a6f0e41e><span class="vpi-align-left menu-icon" data-v-a6f0e41e></span><span class="menu-text" data-v-a6f0e41e>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-a6f0e41e data-v-8a42e2b4><button data-v-8a42e2b4>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-5d98c3a5 data-v-319d5ca6><div class="curtain" data-v-319d5ca6></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-319d5ca6><span class="visually-hidden" id="sidebar-aria-label" data-v-319d5ca6> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Getting Started</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Introduction</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/quick-start.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Quick Start</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/install.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Installation</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Commands</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/commands/init.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>init</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/commands/deploy.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>deploy</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/commands/rollback.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>rollback</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Configuration</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/config/overview.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Config Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/config/schema.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Config Schema</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/config/auth.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Authentication</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/config/sub-env.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Sub-environments</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0 has-active" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Features</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/features/atomic.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Atomic Deployment</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/features/shared-assets.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Shared Assets</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/features/snapshot.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Snapshots</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/features/cleanup.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Cleanup</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Operations</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/troubleshooting.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Troubleshooting</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-5d98c3a5 data-v-1428d186><div class="VPDoc has-sidebar has-aside" data-v-1428d186 data-v-39a288b8><!--[--><!--]--><div class="container" data-v-39a288b8><div class="aside" data-v-39a288b8><div class="aside-curtain" data-v-39a288b8></div><div class="aside-container" data-v-39a288b8><div class="aside-content" data-v-39a288b8><div class="VPDocAside" data-v-39a288b8 data-v-3f215769><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-3f215769 data-v-a5bbad30><div class="content" data-v-a5bbad30><div class="outline-marker" data-v-a5bbad30></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-a5bbad30>On this page</div><ul class="VPDocOutlineItem root" data-v-a5bbad30 data-v-b933a997><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-3f215769></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-39a288b8><div class="content-container" data-v-39a288b8><!--[--><!--]--><main class="main" data-v-39a288b8><div style="position:relative;" class="vp-doc _shipfe-rust_features_atomic" data-v-39a288b8><div><h1 id="atomic-deployment" tabindex="-1">Atomic Deployment <a class="header-anchor" href="#atomic-deployment" aria-label="Permalink to "Atomic Deployment""></a></h1><p>Atomic deployment enables zero-downtime deployment through symbolic link switching for consistency.</p><h2 id="how-it-works" tabindex="-1">How It Works <a class="header-anchor" href="#how-it-works" aria-label="Permalink to "How It Works""></a></h2><p>When using <code>--atomic</code>, deployment:</p><ol><li>Creates a timestamped release directory: <code>releases/20260303_034945/</code></li><li>Uploads files to the new directory</li><li>Updates the <code>current</code> symbolic link to point to the new directory</li></ol><h2 id="directory-structure" tabindex="-1">Directory Structure <a class="header-anchor" href="#directory-structure" aria-label="Permalink to "Directory Structure""></a></h2><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>remote_deploy_path/</span></span>
|
|
22
|
-
<span class="line"><span>├── releases/</span></span>
|
|
23
|
-
<span class="line"><span>│ ├── 20260303_034945/</span></span>
|
|
24
|
-
<span class="line"><span>│ ├── 20260303_035012/</span></span>
|
|
25
|
-
<span class="line"><span>│ └── 20260303_035045/</span></span>
|
|
26
|
-
<span class="line"><span>└── current -> releases/20260303_035045</span></span></code></pre></div><h2 id="web-server-configuration" tabindex="-1">Web Server Configuration <a class="header-anchor" href="#web-server-configuration" aria-label="Permalink to "Web Server Configuration""></a></h2><p>Your web server should serve from <code>remote_deploy_path/current</code>.</p><h3 id="nginx-example" tabindex="-1">Nginx Example <a class="header-anchor" href="#nginx-example" aria-label="Permalink to "Nginx Example""></a></h3><div class="language-nginx vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">nginx</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">server</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
|
27
|
-
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> listen </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">80</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
|
28
|
-
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> server_name </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">your-domain.com;</span></span>
|
|
29
|
-
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> root </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">/var/www/prod/current;</span></span>
|
|
30
|
-
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> index </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">index.html;</span></span>
|
|
31
|
-
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </span></span>
|
|
32
|
-
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> location</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> / </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
|
|
33
|
-
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> try_files </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$uri $uri/ </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">=404</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
|
34
|
-
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
|
35
|
-
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h3 id="apache-example" tabindex="-1">Apache Example <a class="header-anchor" href="#apache-example" aria-label="Permalink to "Apache Example""></a></h3><div class="language-apache vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">apache</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">VirtualHost</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> *:80</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span>
|
|
36
|
-
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> ServerName</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> your-domain.com</span></span>
|
|
37
|
-
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> DocumentRoot</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /var/www/prod/current</span></span>
|
|
38
|
-
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">VirtualHost</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="benefits" tabindex="-1">Benefits <a class="header-anchor" href="#benefits" aria-label="Permalink to "Benefits""></a></h2><ul><li><strong>Zero Downtime</strong>: Switching happens instantly</li><li><strong>Atomicity</strong>: Either everything succeeds or everything fails</li><li><strong>Instant Rollback</strong>: Just change the symbolic link</li><li><strong>Version Isolation</strong>: Each release is stored independently</li></ul><h2 id="usage" tabindex="-1">Usage <a class="header-anchor" href="#usage" aria-label="Permalink to "Usage""></a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Atomic deployment to default environment</span></span>
|
|
39
|
-
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">shipfe</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> deploy</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --atomic</span></span>
|
|
40
|
-
<span class="line"></span>
|
|
41
|
-
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Atomic deployment to specified environment</span></span>
|
|
42
|
-
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">shipfe</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> deploy</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --profile</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> prod</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --atomic</span></span></code></pre></div></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-e257564d><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-e257564d><span class="visually-hidden" id="doc-footer-aria-label" data-v-e257564d>Pager</span><div class="pager" data-v-e257564d><a class="VPLink link pager-link prev" href="/shipfe-rust/config/sub-env.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Previous page</span><span class="title" data-v-e257564d>Sub-environments</span><!--]--></a></div><div class="pager" data-v-e257564d><a class="VPLink link pager-link next" href="/shipfe-rust/features/shared-assets.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Next page</span><span class="title" data-v-e257564d>Shared Assets</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
|
|
43
|
-
<script>window.__VP_HASH_MAP__=JSON.parse("{\"commands_deploy.md\":\"cybIRa1n\",\"commands_init.md\":\"Da652so5\",\"commands_rollback.md\":\"C0zKmFtz\",\"config_auth.md\":\"hvDhtWY8\",\"config_overview.md\":\"DAQclMJL\",\"config_schema.md\":\"Bv5TuD6E\",\"config_sub-env.md\":\"DSUt0Nyq\",\"features_atomic.md\":\"Cszqfb8O\",\"features_cleanup.md\":\"D1j3LEm1\",\"features_shared-assets.md\":\"ChpQD81r\",\"features_snapshot.md\":\"Bddk9nNL\",\"index.md\":\"DqmDY2QI\",\"install.md\":\"CblrJsha\",\"license.md\":\"hVRT8__d\",\"quick-start.md\":\"C06xD920\",\"troubleshooting.md\":\"DLP5r-7N\",\"zh_commands_deploy.md\":\"BbKuBIij\",\"zh_commands_init.md\":\"Dc_WYD8D\",\"zh_commands_rollback.md\":\"Cdvwk1lB\",\"zh_config_auth.md\":\"BytNcdS4\",\"zh_config_overview.md\":\"CvAKxlb5\",\"zh_config_schema.md\":\"CTCn0g9X\",\"zh_config_sub-env.md\":\"Ce3xOEsi\",\"zh_features_atomic.md\":\"DUhJ_qq0\",\"zh_features_cleanup.md\":\"CEgw587m\",\"zh_features_shared-assets.md\":\"DZhvWCTp\",\"zh_features_snapshot.md\":\"Bkqgn7lu\",\"zh_index.md\":\"DKRf1R-g\",\"zh_install.md\":\"0LCLPI3L\",\"zh_license.md\":\"BUZ74dvK\",\"zh_quick-start.md\":\"Bl-Larcu\",\"zh_troubleshooting.md\":\"DHyCAfy2\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Shipfe\",\"description\":\"A VitePress site\",\"base\":\"/shipfe-rust/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en\",\"title\":\"Shipfe\",\"description\":\"A powerful, free, Rust-based web app deployment tool\",\"themeConfig\":{\"nav\":[{\"text\":\"Quick Start\",\"link\":\"/quick-start\"},{\"text\":\"Config\",\"link\":\"/config/overview\"},{\"text\":\"GitHub\",\"link\":\"https://github.com/Master-Jian/shipfe-rust\"}],\"sidebar\":[{\"text\":\"Getting Started\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/\"},{\"text\":\"Quick Start\",\"link\":\"/quick-start\"},{\"text\":\"Installation\",\"link\":\"/install\"}]},{\"text\":\"Commands\",\"items\":[{\"text\":\"init\",\"link\":\"/commands/init\"},{\"text\":\"deploy\",\"link\":\"/commands/deploy\"},{\"text\":\"rollback\",\"link\":\"/commands/rollback\"}]},{\"text\":\"Configuration\",\"items\":[{\"text\":\"Config Overview\",\"link\":\"/config/overview\"},{\"text\":\"Config Schema\",\"link\":\"/config/schema\"},{\"text\":\"Authentication\",\"link\":\"/config/auth\"},{\"text\":\"Sub-environments\",\"link\":\"/config/sub-env\"}]},{\"text\":\"Features\",\"items\":[{\"text\":\"Atomic Deployment\",\"link\":\"/features/atomic\"},{\"text\":\"Shared Assets\",\"link\":\"/features/shared-assets\"},{\"text\":\"Snapshots\",\"link\":\"/features/snapshot\"},{\"text\":\"Cleanup\",\"link\":\"/features/cleanup\"}]},{\"text\":\"Operations\",\"items\":[{\"text\":\"Troubleshooting\",\"link\":\"/troubleshooting\"}]}]}},\"zh\":{\"label\":\"中文\",\"lang\":\"zh-CN\",\"title\":\"Shipfe\",\"description\":\"一个强大的、免费的、基于 Rust 的 Web 应用部署工具\",\"themeConfig\":{\"nav\":[{\"text\":\"快速入门\",\"link\":\"/zh/quick-start\"},{\"text\":\"配置\",\"link\":\"/zh/config/overview\"},{\"text\":\"GitHub\",\"link\":\"https://github.com/Master-Jian/shipfe-rust\"}],\"sidebar\":[{\"text\":\"开始\",\"items\":[{\"text\":\"简介\",\"link\":\"/zh/\"},{\"text\":\"快速入门\",\"link\":\"/zh/quick-start\"},{\"text\":\"安装\",\"link\":\"/zh/install\"}]},{\"text\":\"命令\",\"items\":[{\"text\":\"init\",\"link\":\"/zh/commands/init\"},{\"text\":\"deploy\",\"link\":\"/zh/commands/deploy\"},{\"text\":\"rollback\",\"link\":\"/zh/commands/rollback\"}]},{\"text\":\"配置\",\"items\":[{\"text\":\"配置概览\",\"link\":\"/zh/config/overview\"},{\"text\":\"配置项详解\",\"link\":\"/zh/config/schema\"},{\"text\":\"认证\",\"link\":\"/zh/config/auth\"},{\"text\":\"子环境\",\"link\":\"/zh/config/sub-env\"}]},{\"text\":\"功能\",\"items\":[{\"text\":\"原子部署\",\"link\":\"/zh/features/atomic\"},{\"text\":\"共享资源管理\",\"link\":\"/zh/features/shared-assets\"},{\"text\":\"资源快照\",\"link\":\"/zh/features/snapshot\"},{\"text\":\"自动清理\",\"link\":\"/zh/features/cleanup\"}]},{\"text\":\"运维\",\"items\":[{\"text\":\"故障排除\",\"link\":\"/zh/troubleshooting\"}]}]}}},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
|
|
44
|
-
|
|
45
|
-
</body>
|
|
46
|
-
</html>
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en" dir="ltr">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
6
|
-
<title>Automatic Cleanup | Shipfe</title>
|
|
7
|
-
<meta name="description" content="A powerful, free, Rust-based web app deployment tool">
|
|
8
|
-
<meta name="generator" content="VitePress v1.6.4">
|
|
9
|
-
<link rel="preload stylesheet" href="/shipfe-rust/assets/style.DES0mfMn.css" as="style">
|
|
10
|
-
<link rel="preload stylesheet" href="/shipfe-rust/vp-icons.css" as="style">
|
|
11
|
-
|
|
12
|
-
<script type="module" src="/shipfe-rust/assets/app.DZUgfPE2.js"></script>
|
|
13
|
-
<link rel="preload" href="/shipfe-rust/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
|
|
14
|
-
<link rel="modulepreload" href="/shipfe-rust/assets/chunks/theme.CNyaCki0.js">
|
|
15
|
-
<link rel="modulepreload" href="/shipfe-rust/assets/chunks/framework.BeaujayP.js">
|
|
16
|
-
<link rel="modulepreload" href="/shipfe-rust/assets/features_cleanup.md.D1j3LEm1.lean.js">
|
|
17
|
-
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
|
|
18
|
-
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
|
|
19
|
-
</head>
|
|
20
|
-
<body>
|
|
21
|
-
<div id="app"><div class="Layout" data-v-5d98c3a5><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0b0ada53></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0b0ada53>Skip to content</a><!--]--><!----><header class="VPNav" data-v-5d98c3a5 data-v-ae24b3ad><div class="VPNavBar" data-v-ae24b3ad data-v-6aa21345><div class="wrapper" data-v-6aa21345><div class="container" data-v-6aa21345><div class="title" data-v-6aa21345><div class="VPNavBarTitle has-sidebar" data-v-6aa21345 data-v-1168a8e4><a class="title" href="/shipfe-rust/" data-v-1168a8e4><!--[--><!--]--><!----><span data-v-1168a8e4>Shipfe</span><!--[--><!--]--></a></div></div><div class="content" data-v-6aa21345><div class="content-body" data-v-6aa21345><!--[--><!--]--><div class="VPNavBarSearch search" data-v-6aa21345><!----></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-6aa21345 data-v-dc692963><span id="main-nav-aria-label" class="visually-hidden" data-v-dc692963> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/shipfe-rust/quick-start.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>Quick Start</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/shipfe-rust/config/overview.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>Config</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/Master-Jian/shipfe-rust" target="_blank" rel="noreferrer" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>GitHub</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-6aa21345 data-v-88af2de4 data-v-cf11d7a2><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-cf11d7a2><span class="text" data-v-cf11d7a2><span class="vpi-languages option-icon" data-v-cf11d7a2></span><!----><span class="vpi-chevron-down text-icon" data-v-cf11d7a2></span></span></button><div class="menu" data-v-cf11d7a2><div class="VPMenu" data-v-cf11d7a2 data-v-b98bc113><!----><!--[--><!--[--><div class="items" data-v-88af2de4><p class="title" data-v-88af2de4>English</p><!--[--><div class="VPMenuLink" data-v-88af2de4 data-v-35975db6><a class="VPLink link" href="/shipfe-rust/zh/features/cleanup.html" data-v-35975db6><!--[--><span data-v-35975db6>中文</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-6aa21345 data-v-6c893767><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-6c893767 data-v-5337faa4 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-5337faa4></span><span class="vpi-moon moon" data-v-5337faa4></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-6aa21345 data-v-bb2aa2f0 data-v-cf11d7a2><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-cf11d7a2><span class="vpi-more-horizontal icon" data-v-cf11d7a2></span></button><div class="menu" data-v-cf11d7a2><div class="VPMenu" data-v-cf11d7a2 data-v-b98bc113><!----><!--[--><!--[--><div class="group translations" data-v-bb2aa2f0><p class="trans-title" data-v-bb2aa2f0>English</p><!--[--><div class="VPMenuLink" data-v-bb2aa2f0 data-v-35975db6><a class="VPLink link" href="/shipfe-rust/zh/features/cleanup.html" data-v-35975db6><!--[--><span data-v-35975db6>中文</span><!--]--></a></div><!--]--></div><div class="group" data-v-bb2aa2f0><div class="item appearance" data-v-bb2aa2f0><p class="label" data-v-bb2aa2f0>Appearance</p><div class="appearance-action" data-v-bb2aa2f0><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-bb2aa2f0 data-v-5337faa4 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-5337faa4></span><span class="vpi-moon moon" data-v-5337faa4></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-6aa21345 data-v-e5dd9c1c><span class="container" data-v-e5dd9c1c><span class="top" data-v-e5dd9c1c></span><span class="middle" data-v-e5dd9c1c></span><span class="bottom" data-v-e5dd9c1c></span></span></button></div></div></div></div><div class="divider" data-v-6aa21345><div class="divider-line" data-v-6aa21345></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-5d98c3a5 data-v-a6f0e41e><div class="container" data-v-a6f0e41e><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-a6f0e41e><span class="vpi-align-left menu-icon" data-v-a6f0e41e></span><span class="menu-text" data-v-a6f0e41e>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-a6f0e41e data-v-8a42e2b4><button data-v-8a42e2b4>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-5d98c3a5 data-v-319d5ca6><div class="curtain" data-v-319d5ca6></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-319d5ca6><span class="visually-hidden" id="sidebar-aria-label" data-v-319d5ca6> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Getting Started</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Introduction</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/quick-start.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Quick Start</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/install.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Installation</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Commands</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/commands/init.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>init</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/commands/deploy.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>deploy</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/commands/rollback.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>rollback</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Configuration</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/config/overview.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Config Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/config/schema.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Config Schema</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/config/auth.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Authentication</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/config/sub-env.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Sub-environments</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0 has-active" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Features</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/features/atomic.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Atomic Deployment</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/features/shared-assets.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Shared Assets</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/features/snapshot.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Snapshots</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/features/cleanup.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Cleanup</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Operations</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/troubleshooting.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Troubleshooting</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-5d98c3a5 data-v-1428d186><div class="VPDoc has-sidebar has-aside" data-v-1428d186 data-v-39a288b8><!--[--><!--]--><div class="container" data-v-39a288b8><div class="aside" data-v-39a288b8><div class="aside-curtain" data-v-39a288b8></div><div class="aside-container" data-v-39a288b8><div class="aside-content" data-v-39a288b8><div class="VPDocAside" data-v-39a288b8 data-v-3f215769><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-3f215769 data-v-a5bbad30><div class="content" data-v-a5bbad30><div class="outline-marker" data-v-a5bbad30></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-a5bbad30>On this page</div><ul class="VPDocOutlineItem root" data-v-a5bbad30 data-v-b933a997><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-3f215769></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-39a288b8><div class="content-container" data-v-39a288b8><!--[--><!--]--><main class="main" data-v-39a288b8><div style="position:relative;" class="vp-doc _shipfe-rust_features_cleanup" data-v-39a288b8><div><h1 id="automatic-cleanup" tabindex="-1">Automatic Cleanup <a class="header-anchor" href="#automatic-cleanup" aria-label="Permalink to "Automatic Cleanup""></a></h1><p>Shipfe provides configurable automatic cleanup of old releases and unused shared resources.</p><h2 id="configuration-options" tabindex="-1">Configuration Options <a class="header-anchor" href="#configuration-options" aria-label="Permalink to "Configuration Options""></a></h2><h3 id="keep-releases-recommended" tabindex="-1"><code>keep_releases</code> (Recommended) <a class="header-anchor" href="#keep-releases-recommended" aria-label="Permalink to "`keep_releases` (Recommended)""></a></h3><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
|
|
22
|
-
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "keep_releases"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">5</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
|
23
|
-
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "delete_old"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span>
|
|
24
|
-
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><ul><li>Keep the most recent 5 releases</li><li>Automatically delete old releases</li><li>Works with shared resource cleanup</li></ul><h3 id="delete-old-legacy" tabindex="-1"><code>delete_old</code> (Legacy) <a class="header-anchor" href="#delete-old-legacy" aria-label="Permalink to "`delete_old` (Legacy)""></a></h3><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
|
|
25
|
-
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "delete_old"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span>
|
|
26
|
-
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><ul><li>Delete all old releases after each deployment</li><li>Keep only the current deployment</li><li>Overrides <code>keep_releases</code> setting</li></ul><h2 id="cleanup-process" tabindex="-1">Cleanup Process <a class="header-anchor" href="#cleanup-process" aria-label="Permalink to "Cleanup Process""></a></h2><h3 id="release-cleanup" tabindex="-1">Release Cleanup <a class="header-anchor" href="#release-cleanup" aria-label="Permalink to "Release Cleanup""></a></h3><ol><li>Sort releases by modification time (newest first)</li><li>Keep the specified number of recent releases</li><li>Completely delete old release directories</li></ol><h3 id="shared-resource-cleanup-when-enable-shared-true" tabindex="-1">Shared Resource Cleanup (when <code>enable_shared: true</code>) <a class="header-anchor" href="#shared-resource-cleanup-when-enable-shared-true" aria-label="Permalink to "Shared Resource Cleanup (when `enable_shared: true`)""></a></h3><ol><li>Scan all remaining release snapshots</li><li>Collect all currently referenced hashed resources</li><li>Delete unreferenced files from <code>shared/assets/</code></li></ol><h2 id="cleanup-behavior-example" tabindex="-1">Cleanup Behavior Example <a class="header-anchor" href="#cleanup-behavior-example" aria-label="Permalink to "Cleanup Behavior Example""></a></h2><h3 id="before-cleanup-7-releases" tabindex="-1">Before Cleanup (7 releases) <a class="header-anchor" href="#before-cleanup-7-releases" aria-label="Permalink to "Before Cleanup (7 releases)""></a></h3><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>releases/</span></span>
|
|
27
|
-
<span class="line"><span>├── 20260301_100000/ (oldest)</span></span>
|
|
28
|
-
<span class="line"><span>├── 20260302_100000/</span></span>
|
|
29
|
-
<span class="line"><span>├── 20260303_100000/</span></span>
|
|
30
|
-
<span class="line"><span>├── 20260304_100000/</span></span>
|
|
31
|
-
<span class="line"><span>├── 20260305_100000/</span></span>
|
|
32
|
-
<span class="line"><span>├── 20260306_100000/</span></span>
|
|
33
|
-
<span class="line"><span>└── 20260307_100000/ (newest, current)</span></span></code></pre></div><h3 id="after-cleanup-keep-releases-3" tabindex="-1">After Cleanup (<code>keep_releases: 3</code>) <a class="header-anchor" href="#after-cleanup-keep-releases-3" aria-label="Permalink to "After Cleanup (`keep_releases: 3`)""></a></h3><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>releases/</span></span>
|
|
34
|
-
<span class="line"><span>├── 20260305_100000/ (kept)</span></span>
|
|
35
|
-
<span class="line"><span>├── 20260306_100000/ (kept)</span></span>
|
|
36
|
-
<span class="line"><span>└── 20260307_100000/ (kept, current)</span></span></code></pre></div><p><em>Old releases automatically deleted</em></p><h2 id="monitoring-cleanup" tabindex="-1">Monitoring Cleanup <a class="header-anchor" href="#monitoring-cleanup" aria-label="Permalink to "Monitoring Cleanup""></a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Check current releases</span></span>
|
|
37
|
-
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ls</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -la</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> releases/</span></span>
|
|
38
|
-
<span class="line"></span>
|
|
39
|
-
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># View cleanup logs in shipfe.log</span></span>
|
|
40
|
-
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">tail</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> shipfe.log</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> grep</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -i</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "cleanup\|remove"</span></span></code></pre></div></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-e257564d><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-e257564d><span class="visually-hidden" id="doc-footer-aria-label" data-v-e257564d>Pager</span><div class="pager" data-v-e257564d><a class="VPLink link pager-link prev" href="/shipfe-rust/features/snapshot.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Previous page</span><span class="title" data-v-e257564d>Snapshots</span><!--]--></a></div><div class="pager" data-v-e257564d><a class="VPLink link pager-link next" href="/shipfe-rust/troubleshooting.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Next page</span><span class="title" data-v-e257564d>Troubleshooting</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
|
|
41
|
-
<script>window.__VP_HASH_MAP__=JSON.parse("{\"commands_deploy.md\":\"cybIRa1n\",\"commands_init.md\":\"Da652so5\",\"commands_rollback.md\":\"C0zKmFtz\",\"config_auth.md\":\"hvDhtWY8\",\"config_overview.md\":\"DAQclMJL\",\"config_schema.md\":\"Bv5TuD6E\",\"config_sub-env.md\":\"DSUt0Nyq\",\"features_atomic.md\":\"Cszqfb8O\",\"features_cleanup.md\":\"D1j3LEm1\",\"features_shared-assets.md\":\"ChpQD81r\",\"features_snapshot.md\":\"Bddk9nNL\",\"index.md\":\"DqmDY2QI\",\"install.md\":\"CblrJsha\",\"license.md\":\"hVRT8__d\",\"quick-start.md\":\"C06xD920\",\"troubleshooting.md\":\"DLP5r-7N\",\"zh_commands_deploy.md\":\"BbKuBIij\",\"zh_commands_init.md\":\"Dc_WYD8D\",\"zh_commands_rollback.md\":\"Cdvwk1lB\",\"zh_config_auth.md\":\"BytNcdS4\",\"zh_config_overview.md\":\"CvAKxlb5\",\"zh_config_schema.md\":\"CTCn0g9X\",\"zh_config_sub-env.md\":\"Ce3xOEsi\",\"zh_features_atomic.md\":\"DUhJ_qq0\",\"zh_features_cleanup.md\":\"CEgw587m\",\"zh_features_shared-assets.md\":\"DZhvWCTp\",\"zh_features_snapshot.md\":\"Bkqgn7lu\",\"zh_index.md\":\"DKRf1R-g\",\"zh_install.md\":\"0LCLPI3L\",\"zh_license.md\":\"BUZ74dvK\",\"zh_quick-start.md\":\"Bl-Larcu\",\"zh_troubleshooting.md\":\"DHyCAfy2\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Shipfe\",\"description\":\"A VitePress site\",\"base\":\"/shipfe-rust/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en\",\"title\":\"Shipfe\",\"description\":\"A powerful, free, Rust-based web app deployment tool\",\"themeConfig\":{\"nav\":[{\"text\":\"Quick Start\",\"link\":\"/quick-start\"},{\"text\":\"Config\",\"link\":\"/config/overview\"},{\"text\":\"GitHub\",\"link\":\"https://github.com/Master-Jian/shipfe-rust\"}],\"sidebar\":[{\"text\":\"Getting Started\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/\"},{\"text\":\"Quick Start\",\"link\":\"/quick-start\"},{\"text\":\"Installation\",\"link\":\"/install\"}]},{\"text\":\"Commands\",\"items\":[{\"text\":\"init\",\"link\":\"/commands/init\"},{\"text\":\"deploy\",\"link\":\"/commands/deploy\"},{\"text\":\"rollback\",\"link\":\"/commands/rollback\"}]},{\"text\":\"Configuration\",\"items\":[{\"text\":\"Config Overview\",\"link\":\"/config/overview\"},{\"text\":\"Config Schema\",\"link\":\"/config/schema\"},{\"text\":\"Authentication\",\"link\":\"/config/auth\"},{\"text\":\"Sub-environments\",\"link\":\"/config/sub-env\"}]},{\"text\":\"Features\",\"items\":[{\"text\":\"Atomic Deployment\",\"link\":\"/features/atomic\"},{\"text\":\"Shared Assets\",\"link\":\"/features/shared-assets\"},{\"text\":\"Snapshots\",\"link\":\"/features/snapshot\"},{\"text\":\"Cleanup\",\"link\":\"/features/cleanup\"}]},{\"text\":\"Operations\",\"items\":[{\"text\":\"Troubleshooting\",\"link\":\"/troubleshooting\"}]}]}},\"zh\":{\"label\":\"中文\",\"lang\":\"zh-CN\",\"title\":\"Shipfe\",\"description\":\"一个强大的、免费的、基于 Rust 的 Web 应用部署工具\",\"themeConfig\":{\"nav\":[{\"text\":\"快速入门\",\"link\":\"/zh/quick-start\"},{\"text\":\"配置\",\"link\":\"/zh/config/overview\"},{\"text\":\"GitHub\",\"link\":\"https://github.com/Master-Jian/shipfe-rust\"}],\"sidebar\":[{\"text\":\"开始\",\"items\":[{\"text\":\"简介\",\"link\":\"/zh/\"},{\"text\":\"快速入门\",\"link\":\"/zh/quick-start\"},{\"text\":\"安装\",\"link\":\"/zh/install\"}]},{\"text\":\"命令\",\"items\":[{\"text\":\"init\",\"link\":\"/zh/commands/init\"},{\"text\":\"deploy\",\"link\":\"/zh/commands/deploy\"},{\"text\":\"rollback\",\"link\":\"/zh/commands/rollback\"}]},{\"text\":\"配置\",\"items\":[{\"text\":\"配置概览\",\"link\":\"/zh/config/overview\"},{\"text\":\"配置项详解\",\"link\":\"/zh/config/schema\"},{\"text\":\"认证\",\"link\":\"/zh/config/auth\"},{\"text\":\"子环境\",\"link\":\"/zh/config/sub-env\"}]},{\"text\":\"功能\",\"items\":[{\"text\":\"原子部署\",\"link\":\"/zh/features/atomic\"},{\"text\":\"共享资源管理\",\"link\":\"/zh/features/shared-assets\"},{\"text\":\"资源快照\",\"link\":\"/zh/features/snapshot\"},{\"text\":\"自动清理\",\"link\":\"/zh/features/cleanup\"}]},{\"text\":\"运维\",\"items\":[{\"text\":\"故障排除\",\"link\":\"/zh/troubleshooting\"}]}]}}},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
|
|
42
|
-
|
|
43
|
-
</body>
|
|
44
|
-
</html>
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en" dir="ltr">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
6
|
-
<title>Shared Assets | Shipfe</title>
|
|
7
|
-
<meta name="description" content="A powerful, free, Rust-based web app deployment tool">
|
|
8
|
-
<meta name="generator" content="VitePress v1.6.4">
|
|
9
|
-
<link rel="preload stylesheet" href="/shipfe-rust/assets/style.DES0mfMn.css" as="style">
|
|
10
|
-
<link rel="preload stylesheet" href="/shipfe-rust/vp-icons.css" as="style">
|
|
11
|
-
|
|
12
|
-
<script type="module" src="/shipfe-rust/assets/app.DZUgfPE2.js"></script>
|
|
13
|
-
<link rel="preload" href="/shipfe-rust/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
|
|
14
|
-
<link rel="modulepreload" href="/shipfe-rust/assets/chunks/theme.CNyaCki0.js">
|
|
15
|
-
<link rel="modulepreload" href="/shipfe-rust/assets/chunks/framework.BeaujayP.js">
|
|
16
|
-
<link rel="modulepreload" href="/shipfe-rust/assets/features_shared-assets.md.ChpQD81r.lean.js">
|
|
17
|
-
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
|
|
18
|
-
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
|
|
19
|
-
</head>
|
|
20
|
-
<body>
|
|
21
|
-
<div id="app"><div class="Layout" data-v-5d98c3a5><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0b0ada53></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0b0ada53>Skip to content</a><!--]--><!----><header class="VPNav" data-v-5d98c3a5 data-v-ae24b3ad><div class="VPNavBar" data-v-ae24b3ad data-v-6aa21345><div class="wrapper" data-v-6aa21345><div class="container" data-v-6aa21345><div class="title" data-v-6aa21345><div class="VPNavBarTitle has-sidebar" data-v-6aa21345 data-v-1168a8e4><a class="title" href="/shipfe-rust/" data-v-1168a8e4><!--[--><!--]--><!----><span data-v-1168a8e4>Shipfe</span><!--[--><!--]--></a></div></div><div class="content" data-v-6aa21345><div class="content-body" data-v-6aa21345><!--[--><!--]--><div class="VPNavBarSearch search" data-v-6aa21345><!----></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-6aa21345 data-v-dc692963><span id="main-nav-aria-label" class="visually-hidden" data-v-dc692963> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/shipfe-rust/quick-start.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>Quick Start</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/shipfe-rust/config/overview.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>Config</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/Master-Jian/shipfe-rust" target="_blank" rel="noreferrer" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>GitHub</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-6aa21345 data-v-88af2de4 data-v-cf11d7a2><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-cf11d7a2><span class="text" data-v-cf11d7a2><span class="vpi-languages option-icon" data-v-cf11d7a2></span><!----><span class="vpi-chevron-down text-icon" data-v-cf11d7a2></span></span></button><div class="menu" data-v-cf11d7a2><div class="VPMenu" data-v-cf11d7a2 data-v-b98bc113><!----><!--[--><!--[--><div class="items" data-v-88af2de4><p class="title" data-v-88af2de4>English</p><!--[--><div class="VPMenuLink" data-v-88af2de4 data-v-35975db6><a class="VPLink link" href="/shipfe-rust/zh/features/shared-assets.html" data-v-35975db6><!--[--><span data-v-35975db6>中文</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-6aa21345 data-v-6c893767><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-6c893767 data-v-5337faa4 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-5337faa4></span><span class="vpi-moon moon" data-v-5337faa4></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-6aa21345 data-v-bb2aa2f0 data-v-cf11d7a2><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-cf11d7a2><span class="vpi-more-horizontal icon" data-v-cf11d7a2></span></button><div class="menu" data-v-cf11d7a2><div class="VPMenu" data-v-cf11d7a2 data-v-b98bc113><!----><!--[--><!--[--><div class="group translations" data-v-bb2aa2f0><p class="trans-title" data-v-bb2aa2f0>English</p><!--[--><div class="VPMenuLink" data-v-bb2aa2f0 data-v-35975db6><a class="VPLink link" href="/shipfe-rust/zh/features/shared-assets.html" data-v-35975db6><!--[--><span data-v-35975db6>中文</span><!--]--></a></div><!--]--></div><div class="group" data-v-bb2aa2f0><div class="item appearance" data-v-bb2aa2f0><p class="label" data-v-bb2aa2f0>Appearance</p><div class="appearance-action" data-v-bb2aa2f0><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-bb2aa2f0 data-v-5337faa4 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-5337faa4></span><span class="vpi-moon moon" data-v-5337faa4></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-6aa21345 data-v-e5dd9c1c><span class="container" data-v-e5dd9c1c><span class="top" data-v-e5dd9c1c></span><span class="middle" data-v-e5dd9c1c></span><span class="bottom" data-v-e5dd9c1c></span></span></button></div></div></div></div><div class="divider" data-v-6aa21345><div class="divider-line" data-v-6aa21345></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-5d98c3a5 data-v-a6f0e41e><div class="container" data-v-a6f0e41e><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-a6f0e41e><span class="vpi-align-left menu-icon" data-v-a6f0e41e></span><span class="menu-text" data-v-a6f0e41e>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-a6f0e41e data-v-8a42e2b4><button data-v-8a42e2b4>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-5d98c3a5 data-v-319d5ca6><div class="curtain" data-v-319d5ca6></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-319d5ca6><span class="visually-hidden" id="sidebar-aria-label" data-v-319d5ca6> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Getting Started</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Introduction</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/quick-start.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Quick Start</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/install.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Installation</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Commands</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/commands/init.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>init</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/commands/deploy.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>deploy</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/commands/rollback.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>rollback</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Configuration</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/config/overview.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Config Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/config/schema.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Config Schema</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/config/auth.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Authentication</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/config/sub-env.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Sub-environments</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0 has-active" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Features</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/features/atomic.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Atomic Deployment</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/features/shared-assets.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Shared Assets</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/features/snapshot.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Snapshots</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/features/cleanup.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Cleanup</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Operations</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/troubleshooting.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Troubleshooting</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-5d98c3a5 data-v-1428d186><div class="VPDoc has-sidebar has-aside" data-v-1428d186 data-v-39a288b8><!--[--><!--]--><div class="container" data-v-39a288b8><div class="aside" data-v-39a288b8><div class="aside-curtain" data-v-39a288b8></div><div class="aside-container" data-v-39a288b8><div class="aside-content" data-v-39a288b8><div class="VPDocAside" data-v-39a288b8 data-v-3f215769><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-3f215769 data-v-a5bbad30><div class="content" data-v-a5bbad30><div class="outline-marker" data-v-a5bbad30></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-a5bbad30>On this page</div><ul class="VPDocOutlineItem root" data-v-a5bbad30 data-v-b933a997><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-3f215769></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-39a288b8><div class="content-container" data-v-39a288b8><!--[--><!--]--><main class="main" data-v-39a288b8><div style="position:relative;" class="vp-doc _shipfe-rust_features_shared-assets" data-v-39a288b8><div><h1 id="shared-assets" tabindex="-1">Shared Assets <a class="header-anchor" href="#shared-assets" aria-label="Permalink to "Shared Assets""></a></h1><p>Shared assets reduce disk usage and network transmission through file hash deduplication.</p><h2 id="enable-shared-assets" tabindex="-1">Enable Shared Assets <a class="header-anchor" href="#enable-shared-assets" aria-label="Permalink to "Enable Shared Assets""></a></h2><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
|
|
22
|
-
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "enable_shared"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
|
23
|
-
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "hashed_asset_patterns"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span></span>
|
|
24
|
-
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "**/*.js"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
|
25
|
-
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "**/*.css"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
|
26
|
-
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "**/*.png"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
|
27
|
-
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "**/*.jpg"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
|
28
|
-
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "**/*.svg"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
|
29
|
-
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "**/*.woff2"</span></span>
|
|
30
|
-
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span>
|
|
31
|
-
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="how-it-works" tabindex="-1">How It Works <a class="header-anchor" href="#how-it-works" aria-label="Permalink to "How It Works""></a></h2><ol><li><strong>File Matching</strong>: Matches files according to <code>hashed_asset_patterns</code></li><li><strong>Hash Calculation</strong>: Calculates SHA256 hash for matching files</li><li><strong>Storage Strategy</strong>: <ul><li>Same hash files are stored only once in <code>shared/assets/</code> directory</li><li>Filename format: <code>{hash}.{ext}</code>, e.g., <code>abc123def456.js</code></li></ul></li><li><strong>Link Creation</strong>: Creates hard links in release directory pointing to shared files</li><li><strong>Cleanup Mechanism</strong>: Deletes shared files no longer referenced by any release</li></ol><h2 id="shared-assets-reset" tabindex="-1">Shared Assets Reset <a class="header-anchor" href="#shared-assets-reset" aria-label="Permalink to "Shared Assets Reset""></a></h2><p>At the start of each deployment, Shipfe automatically clears all existing resources in the <code>shared/</code> directory and recreates the <code>shared/assets/</code> directory. This ensures each deployment starts from a clean state, avoiding accumulation of old resources and potential conflicts.</p><h2 id="directory-structure-example" tabindex="-1">Directory Structure Example <a class="header-anchor" href="#directory-structure-example" aria-label="Permalink to "Directory Structure Example""></a></h2><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>remote_deploy_path/</span></span>
|
|
32
|
-
<span class="line"><span>├── shared/</span></span>
|
|
33
|
-
<span class="line"><span>│ └── assets/</span></span>
|
|
34
|
-
<span class="line"><span>│ ├── abc123def456.js</span></span>
|
|
35
|
-
<span class="line"><span>│ ├── def789ghi012.css</span></span>
|
|
36
|
-
<span class="line"><span>│ └── hij345klm678.png</span></span>
|
|
37
|
-
<span class="line"><span>├── releases/</span></span>
|
|
38
|
-
<span class="line"><span>│ ├── 20260304_120000/</span></span>
|
|
39
|
-
<span class="line"><span>│ │ ├── index.html</span></span>
|
|
40
|
-
<span class="line"><span>│ │ ├── app.js -> ../../shared/assets/abc123def456.js</span></span>
|
|
41
|
-
<span class="line"><span>│ │ └── styles.css -> ../../shared/assets/def789ghi012.css</span></span>
|
|
42
|
-
<span class="line"><span>│ └── 20260304_120100/</span></span>
|
|
43
|
-
<span class="line"><span>│ ├── index.html</span></span>
|
|
44
|
-
<span class="line"><span>│ ├── app.js -> ../../shared/assets/abc123def456.js</span></span>
|
|
45
|
-
<span class="line"><span>│ └── styles.css -> ../../shared/assets/def789ghi012.css</span></span>
|
|
46
|
-
<span class="line"><span>└── current -> releases/20260304_120100</span></span></code></pre></div><h2 id="benefits" tabindex="-1">Benefits <a class="header-anchor" href="#benefits" aria-label="Permalink to "Benefits""></a></h2><ul><li><strong>Reduced Disk Usage</strong>: Same files stored only once</li><li><strong>Faster Deployments</strong>: Unchanged files don't need re-uploading</li><li><strong>Bandwidth Savings</strong>: Only new or changed files are transmitted</li><li><strong>Atomic Updates</strong>: All hard links created simultaneously for consistency</li></ul><h2 id="notes" tabindex="-1">Notes <a class="header-anchor" href="#notes" aria-label="Permalink to "Notes""></a></h2><ul><li>Shared assets require hard link support on the server filesystem</li><li>First enablement hashes all matching files</li><li>Disabling shared doesn't delete existing shared files; manual cleanup required</li></ul><h2 id="use-cases" tabindex="-1">Use Cases <a class="header-anchor" href="#use-cases" aria-label="Permalink to "Use Cases""></a></h2><ul><li><strong>Enable Shared</strong>: Large apps with frequent deployments and many static resources</li><li><strong>Disable Shared</strong>: Small apps with infrequent deployments or need for simple debugging</li></ul></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-e257564d><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-e257564d><span class="visually-hidden" id="doc-footer-aria-label" data-v-e257564d>Pager</span><div class="pager" data-v-e257564d><a class="VPLink link pager-link prev" href="/shipfe-rust/features/atomic.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Previous page</span><span class="title" data-v-e257564d>Atomic Deployment</span><!--]--></a></div><div class="pager" data-v-e257564d><a class="VPLink link pager-link next" href="/shipfe-rust/features/snapshot.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Next page</span><span class="title" data-v-e257564d>Snapshots</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
|
|
47
|
-
<script>window.__VP_HASH_MAP__=JSON.parse("{\"commands_deploy.md\":\"cybIRa1n\",\"commands_init.md\":\"Da652so5\",\"commands_rollback.md\":\"C0zKmFtz\",\"config_auth.md\":\"hvDhtWY8\",\"config_overview.md\":\"DAQclMJL\",\"config_schema.md\":\"Bv5TuD6E\",\"config_sub-env.md\":\"DSUt0Nyq\",\"features_atomic.md\":\"Cszqfb8O\",\"features_cleanup.md\":\"D1j3LEm1\",\"features_shared-assets.md\":\"ChpQD81r\",\"features_snapshot.md\":\"Bddk9nNL\",\"index.md\":\"DqmDY2QI\",\"install.md\":\"CblrJsha\",\"license.md\":\"hVRT8__d\",\"quick-start.md\":\"C06xD920\",\"troubleshooting.md\":\"DLP5r-7N\",\"zh_commands_deploy.md\":\"BbKuBIij\",\"zh_commands_init.md\":\"Dc_WYD8D\",\"zh_commands_rollback.md\":\"Cdvwk1lB\",\"zh_config_auth.md\":\"BytNcdS4\",\"zh_config_overview.md\":\"CvAKxlb5\",\"zh_config_schema.md\":\"CTCn0g9X\",\"zh_config_sub-env.md\":\"Ce3xOEsi\",\"zh_features_atomic.md\":\"DUhJ_qq0\",\"zh_features_cleanup.md\":\"CEgw587m\",\"zh_features_shared-assets.md\":\"DZhvWCTp\",\"zh_features_snapshot.md\":\"Bkqgn7lu\",\"zh_index.md\":\"DKRf1R-g\",\"zh_install.md\":\"0LCLPI3L\",\"zh_license.md\":\"BUZ74dvK\",\"zh_quick-start.md\":\"Bl-Larcu\",\"zh_troubleshooting.md\":\"DHyCAfy2\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Shipfe\",\"description\":\"A VitePress site\",\"base\":\"/shipfe-rust/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en\",\"title\":\"Shipfe\",\"description\":\"A powerful, free, Rust-based web app deployment tool\",\"themeConfig\":{\"nav\":[{\"text\":\"Quick Start\",\"link\":\"/quick-start\"},{\"text\":\"Config\",\"link\":\"/config/overview\"},{\"text\":\"GitHub\",\"link\":\"https://github.com/Master-Jian/shipfe-rust\"}],\"sidebar\":[{\"text\":\"Getting Started\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/\"},{\"text\":\"Quick Start\",\"link\":\"/quick-start\"},{\"text\":\"Installation\",\"link\":\"/install\"}]},{\"text\":\"Commands\",\"items\":[{\"text\":\"init\",\"link\":\"/commands/init\"},{\"text\":\"deploy\",\"link\":\"/commands/deploy\"},{\"text\":\"rollback\",\"link\":\"/commands/rollback\"}]},{\"text\":\"Configuration\",\"items\":[{\"text\":\"Config Overview\",\"link\":\"/config/overview\"},{\"text\":\"Config Schema\",\"link\":\"/config/schema\"},{\"text\":\"Authentication\",\"link\":\"/config/auth\"},{\"text\":\"Sub-environments\",\"link\":\"/config/sub-env\"}]},{\"text\":\"Features\",\"items\":[{\"text\":\"Atomic Deployment\",\"link\":\"/features/atomic\"},{\"text\":\"Shared Assets\",\"link\":\"/features/shared-assets\"},{\"text\":\"Snapshots\",\"link\":\"/features/snapshot\"},{\"text\":\"Cleanup\",\"link\":\"/features/cleanup\"}]},{\"text\":\"Operations\",\"items\":[{\"text\":\"Troubleshooting\",\"link\":\"/troubleshooting\"}]}]}},\"zh\":{\"label\":\"中文\",\"lang\":\"zh-CN\",\"title\":\"Shipfe\",\"description\":\"一个强大的、免费的、基于 Rust 的 Web 应用部署工具\",\"themeConfig\":{\"nav\":[{\"text\":\"快速入门\",\"link\":\"/zh/quick-start\"},{\"text\":\"配置\",\"link\":\"/zh/config/overview\"},{\"text\":\"GitHub\",\"link\":\"https://github.com/Master-Jian/shipfe-rust\"}],\"sidebar\":[{\"text\":\"开始\",\"items\":[{\"text\":\"简介\",\"link\":\"/zh/\"},{\"text\":\"快速入门\",\"link\":\"/zh/quick-start\"},{\"text\":\"安装\",\"link\":\"/zh/install\"}]},{\"text\":\"命令\",\"items\":[{\"text\":\"init\",\"link\":\"/zh/commands/init\"},{\"text\":\"deploy\",\"link\":\"/zh/commands/deploy\"},{\"text\":\"rollback\",\"link\":\"/zh/commands/rollback\"}]},{\"text\":\"配置\",\"items\":[{\"text\":\"配置概览\",\"link\":\"/zh/config/overview\"},{\"text\":\"配置项详解\",\"link\":\"/zh/config/schema\"},{\"text\":\"认证\",\"link\":\"/zh/config/auth\"},{\"text\":\"子环境\",\"link\":\"/zh/config/sub-env\"}]},{\"text\":\"功能\",\"items\":[{\"text\":\"原子部署\",\"link\":\"/zh/features/atomic\"},{\"text\":\"共享资源管理\",\"link\":\"/zh/features/shared-assets\"},{\"text\":\"资源快照\",\"link\":\"/zh/features/snapshot\"},{\"text\":\"自动清理\",\"link\":\"/zh/features/cleanup\"}]},{\"text\":\"运维\",\"items\":[{\"text\":\"故障排除\",\"link\":\"/zh/troubleshooting\"}]}]}}},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
|
|
48
|
-
|
|
49
|
-
</body>
|
|
50
|
-
</html>
|