@hgdc/docs 0.4.1 → 0.4.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/package.json +1 -1
- package/src/integration.ts +8 -1
- package/src/overrides/ThemeToggle.astro +6 -6
- package/src/styles/theme.css +36 -5
- package/template/.astro/content-modules.mjs +15 -35
- package/template/.build/.well-known/llms.txt +34 -51
- package/template/.build/404.html +4 -4
- package/template/.build/_astro/Search.astro_astro_type_script_index_0_lang.VKDD8r2I.js +1 -0
- package/template/.build/_astro/common.BoKrWC_6.css +3 -0
- package/template/.build/_astro/logo-clair.BqNh6JNi.svg +1 -0
- package/template/.build/_astro/logo-sombre.BkgsFXxh.svg +1 -0
- package/template/.build/_hgdc/corpus.json +1 -1
- package/template/.build/demarrer/premiere-doc/index.html +25 -0
- package/template/.build/demarrer/premiere-doc.md +65 -0
- package/template/.build/explications/donnees/index.html +55 -0
- package/template/.build/explications/donnees.md +28 -0
- package/template/.build/explications/fonctionnement/index.html +33 -0
- package/template/.build/explications/fonctionnement.md +32 -0
- package/template/.build/guides/agents/index.html +59 -0
- package/template/.build/guides/agents.md +54 -0
- package/template/.build/guides/assistant/index.html +60 -0
- package/template/.build/guides/assistant.md +46 -0
- package/template/.build/guides/composants/index.html +38 -0
- package/template/.build/guides/composants.md +103 -0
- package/template/.build/guides/ecrire/index.html +56 -0
- package/template/.build/guides/ecrire.md +63 -0
- package/template/.build/guides/elements/index.html +1 -0
- package/template/.build/guides/navigation/index.html +30 -0
- package/template/.build/guides/navigation.md +63 -0
- package/template/.build/guides/publier/index.html +27 -0
- package/template/.build/guides/publier.md +65 -0
- package/template/.build/guides/theme/index.html +27 -0
- package/template/.build/guides/theme.md +33 -0
- package/template/.build/images/favicon.svg +1 -0
- package/template/.build/images/logo-clair.svg +1 -0
- package/template/.build/images/logo-sombre.svg +1 -0
- package/template/.build/index.html +14 -18
- package/template/.build/index.md +21 -59
- package/template/.build/llms-full.txt +515 -2331
- package/template/.build/llms.txt +34 -51
- package/template/.build/pagefind/fragment/fr-ch_1aa5706.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_21308c9.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_256be83.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_3786e05.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_3e2d7bf.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_53e6d95.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_7011e1a.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_7252d5b.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_8a5f581.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_9221692.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_a4b68e2.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_d4ef5e9.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_edaf413.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_f017e56.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_fe71cc1.pf_fragment +0 -0
- package/template/.build/pagefind/index/fr-ch_481c81a.pf_index +0 -0
- package/template/.build/pagefind/pagefind-entry.json +1 -1
- package/template/.build/pagefind/pagefind.fr-ch_46a632d8eba7e.pf_meta +0 -0
- package/template/.build/reference/api-assistant/index.html +102 -0
- package/template/.build/reference/api-assistant.md +60 -0
- package/template/.build/reference/cli/index.html +11 -153
- package/template/.build/reference/cli.md +23 -159
- package/template/.build/reference/docs-json/index.html +157 -0
- package/template/.build/reference/docs-json.md +47 -0
- package/template/.build/reference/mcp/index.html +92 -0
- package/template/.build/reference/mcp.md +49 -0
- package/template/node_modules/.vite/deps/_metadata.json +8 -8
- package/template/.astro/data-store.json +0 -1
- package/template/.astro/settings.json +0 -5
- package/template/.build/_astro/Search.astro_astro_type_script_index_0_lang.D7EcezBU.js +0 -1
- package/template/.build/_astro/common.Dx3aBIS0.css +0 -3
- package/template/.build/_astro/logo.BPu921Tp.svg +0 -1
- package/template/.build/concepts/confidentialite/index.html +0 -50
- package/template/.build/concepts/confidentialite.md +0 -38
- package/template/.build/concepts/deploiements/index.html +0 -106
- package/template/.build/concepts/deploiements.md +0 -70
- package/template/.build/concepts/organisations-et-roles/index.html +0 -83
- package/template/.build/concepts/organisations-et-roles.md +0 -39
- package/template/.build/concepts/preversion/index.html +0 -49
- package/template/.build/concepts/preversion.md +0 -52
- package/template/.build/concepts/secrets-et-coffre/index.html +0 -70
- package/template/.build/concepts/secrets-et-coffre.md +0 -54
- package/template/.build/demarrer/depuis-github/index.html +0 -34
- package/template/.build/demarrer/depuis-github.md +0 -68
- package/template/.build/demarrer/premier-site/index.html +0 -28
- package/template/.build/demarrer/premier-site.md +0 -94
- package/template/.build/guides/brancher-un-domaine/index.html +0 -91
- package/template/.build/guides/brancher-un-domaine.md +0 -81
- package/template/.build/guides/cle-d-api/index.html +0 -62
- package/template/.build/guides/cle-d-api.md +0 -78
- package/template/.build/guides/depannage/index.html +0 -64
- package/template/.build/guides/depannage.md +0 -69
- package/template/.build/guides/deployer-depuis-github/index.html +0 -45
- package/template/.build/guides/deployer-depuis-github.md +0 -70
- package/template/.build/guides/deployer-un-framework/index.html +0 -81
- package/template/.build/guides/deployer-un-framework.md +0 -74
- package/template/.build/guides/github-actions-sans-application/index.html +0 -53
- package/template/.build/guides/github-actions-sans-application.md +0 -95
- package/template/.build/guides/inviter-une-personne/index.html +0 -28
- package/template/.build/guides/inviter-une-personne.md +0 -38
- package/template/.build/guides/lire-les-logs/index.html +0 -37
- package/template/.build/guides/lire-les-logs.md +0 -48
- package/template/.build/guides/migrer-depuis-vercel/index.html +0 -25
- package/template/.build/guides/migrer-depuis-vercel.md +0 -51
- package/template/.build/guides/monorepo/index.html +0 -40
- package/template/.build/guides/monorepo.md +0 -42
- package/template/.build/guides/revenir-en-arriere/index.html +0 -39
- package/template/.build/guides/revenir-en-arriere.md +0 -50
- package/template/.build/guides/site-statique/index.html +0 -41
- package/template/.build/guides/site-statique.md +0 -59
- package/template/.build/guides/synchroniser-doppler/index.html +0 -46
- package/template/.build/guides/synchroniser-doppler.md +0 -63
- package/template/.build/guides/variables-d-environnement/index.html +0 -73
- package/template/.build/guides/variables-d-environnement.md +0 -92
- package/template/.build/images/famille/account.svg +0 -1
- package/template/.build/images/famille/analytics.svg +0 -1
- package/template/.build/images/famille/docs.svg +0 -1
- package/template/.build/images/famille/host.svg +0 -1
- package/template/.build/images/famille/mail.svg +0 -1
- package/template/.build/images/famille/portal.svg +0 -1
- package/template/.build/images/famille/status.svg +0 -1
- package/template/.build/images/logo.svg +0 -1
- package/template/.build/pagefind/fragment/fr-ch_16987e2.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_2b4c97b.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_3294a5c.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_34858c9.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_39ddba1.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_4ab1899.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_4d3a52a.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_506c187.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_5aa255a.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_6841c7d.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_6dc7a2d.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_847edff.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_8745af7.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_8aac5e6.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_916b233.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_9fd014a.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_a0808f8.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_a4e1f69.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_a80a53d.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_a9e725b.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_ac3f64c.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_af292f1.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_af3e716.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_b0689a4.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_baed996.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_c89e27a.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_cd6ca13.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_d09af09.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_d4bcea8.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_dc2a134.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_ded7ddc.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_e2528cb.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_e3cbb4e.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_e7902d9.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_f48ca47.pf_fragment +0 -0
- package/template/.build/pagefind/index/fr-ch_8a5f905.pf_index +0 -0
- package/template/.build/pagefind/index/fr-ch_fbd9c96.pf_index +0 -0
- package/template/.build/pagefind/pagefind.fr-ch_211aacbfa7f0e.pf_meta +0 -0
- package/template/.build/reference/api/deploiements/index.html +0 -326
- package/template/.build/reference/api/deploiements.md +0 -170
- package/template/.build/reference/api/erreurs/index.html +0 -102
- package/template/.build/reference/api/erreurs.md +0 -50
- package/template/.build/reference/api/fichiers/index.html +0 -82
- package/template/.build/reference/api/fichiers.md +0 -62
- package/template/.build/reference/api/introduction/index.html +0 -126
- package/template/.build/reference/api/introduction.md +0 -84
- package/template/.build/reference/api/projets/index.html +0 -184
- package/template/.build/reference/api/projets.md +0 -102
- package/template/.build/reference/api/utilisateur/index.html +0 -96
- package/template/.build/reference/api/utilisateur.md +0 -89
- package/template/.build/reference/api/variables/index.html +0 -75
- package/template/.build/reference/api/variables.md +0 -58
- package/template/.build/reference/compatibilite/index.html +0 -196
- package/template/.build/reference/compatibilite.md +0 -64
- package/template/.build/reference/domaines/index.html +0 -171
- package/template/.build/reference/domaines.md +0 -76
- package/template/.build/reference/limites/index.html +0 -159
- package/template/.build/reference/limites.md +0 -56
- package/template/.build/reference/variables/index.html +0 -164
- package/template/.build/reference/variables.md +0 -63
- package/template/.build/reference/vercel-json/index.html +0 -65
- package/template/.build/reference/vercel-json.md +0 -51
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="fr-CH" dir="ltr" data-theme="dark" data-has-toc data-has-sidebar class="astro-mxbotnn6"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>Déployer avec GitHub Actions, sans l'application | Host</title><style>:root{--sl-color-accent-low:#172544;--sl-color-accent:#4b8eff;--sl-color-accent-high:#87d3ff;--hgdc-on-accent:#000000;}:root:not([data-hd-theme="dark"]){--sl-color-accent-low:#dcf1ff;--sl-color-accent:#194ff7;--sl-color-accent-high:#0400bf;--hgdc-on-accent:#ffffff;}</style><link rel="shortcut icon" href="/docs/images/logo.svg" type="image/svg+xml"/><meta name="generator" content="Astro v7.3.8"/><meta name="generator" content="Starlight v0.42.6"/><meta property="og:title" content="Déployer avec GitHub Actions, sans l'application"/><meta property="og:type" content="article"/><meta property="og:locale" content="fr-CH"/><meta property="og:description" content="Écris ton propre workflow avec la CLI Vercel, sans passer par l'app GitHub de Host."/><meta property="og:site_name" content="Host"/><meta name="twitter:card" content="summary_large_image"/><meta name="description" content="Écris ton propre workflow avec la CLI Vercel, sans passer par l'app GitHub de Host."/><link rel="alternate" type="text/markdown" href="/docs/guides/github-actions-sans-application.md"><link rel="describedby" type="text/markdown" href="/docs/llms.txt"><script>
|
|
2
|
-
;(() => {
|
|
3
|
-
let stored = null
|
|
4
|
-
try {
|
|
5
|
-
stored = localStorage.getItem("starlight-theme")
|
|
6
|
-
} catch {}
|
|
7
|
-
const dark =
|
|
8
|
-
stored === "dark" || (stored === "auto" && matchMedia("(prefers-color-scheme: dark)").matches)
|
|
9
|
-
const theme = dark ? "dark" : "light"
|
|
10
|
-
document.documentElement.dataset.theme = theme
|
|
11
|
-
document.documentElement.dataset.hdTheme = theme
|
|
12
|
-
window.StarlightThemeProvider = { updatePickers() {} }
|
|
13
|
-
})()
|
|
14
|
-
</script><link rel="stylesheet" href="/docs/_astro/print.ehPL0gv-.css" media="print"><link rel="stylesheet" href="/docs/_astro/common.Dx3aBIS0.css"><style>@layer starlight.components{svg:where(.astro-lgqmsw3b){color:var(--sl-icon-color);font-size:var(--sl-icon-size,1em);width:1em;height:1em;overflow:visible}}
|
|
15
|
-
@layer starlight.components{starlight-tabs:where(.astro-a5blunwz){display:block}.tablist-wrapper:where(.astro-a5blunwz){overflow-x:auto}:where(.astro-a5blunwz)[role=tablist]{border-bottom:2px solid var(--sl-color-gray-5);padding:0;list-style:none;display:flex}.tab:where(.astro-a5blunwz){display:flex}.tab:where(.astro-a5blunwz)>:where(.astro-a5blunwz)[role=tab]{--sl-tab-color-border:var(--sl-color-gray-5);line-height:var(--sl-line-height-headings);box-shadow:0 2px 0 var(--sl-tab-color-border);color:var(--sl-color-gray-3);outline-offset:var(--sl-outline-offset-inside);overflow-wrap:initial;align-items:center;gap:.5rem;padding:.275rem 1.25rem;text-decoration:none;display:flex}.tab:where(.astro-a5blunwz) :where(.astro-a5blunwz)[role=tab][aria-selected=true]{--sl-tab-color-border:var(--sl-color-text-accent);color:var(--sl-color-white);font-weight:600}.tablist-wrapper:where(.astro-a5blunwz)~[role=tabpanel]{margin-top:1rem}}
|
|
16
|
-
</style><script type="module" src="/docs/_astro/page.cNngjUgL.js"></script></head><body class="astro-mxbotnn6"><a class="sl-skip-link astro-k4td3kwj" href="#_top">Aller au contenu</a><div class="hd-page"><header class="hd-topbar"><div class="hd-header"><div class="hd-header__start"><button type="button" class="hd-icon-button hd-menu-button" popovertarget="starlight__sidebar" aria-label="Menu de la documentation" aria-controls="starlight__sidebar"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M4 7h16M4 12h16M4 17h10"></path></svg></button><a class="hd-brand" href="/docs/"><span class="hd-brand__mark"><img class="hd-brand__light" src="/docs/images/logo.svg" alt="" width="24" height="24"><img class="hd-brand__dark" src="/docs/images/logo.svg" alt="" width="24" height="24"></span><span class="hd-brand__name">Host</span></a></div><div class="hd-header__end"><hd-search data-base="/docs" data-assistant><button type="button" class="hd-search-trigger" data-open aria-haspopup="dialog" aria-label="Rechercher (Ctrl K)"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M11 18a7 7 0 1 0 0-14 7 7 0 0 0 0 14Zm5-2 4 4"></path></svg><span class="hd-search-trigger__label">Rechercher</span><kbd class="hd-kbd" data-shortcut>Ctrl K</kbd></button><dialog class="hd-palette" aria-label="Rechercher dans la documentation"><div class="hd-palette__box"><div class="hd-palette__field"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M11 18a7 7 0 1 0 0-14 7 7 0 0 0 0 14Zm5-2 4 4"></path></svg><input type="search" data-input placeholder="Rechercher dans la documentation" autocomplete="off" spellcheck="false" role="combobox" aria-expanded="false" aria-controls="hd-palette-results" aria-autocomplete="list"><button type="button" class="hd-kbd hd-kbd--button" data-close>Échap</button></div><div class="hd-palette__results" id="hd-palette-results" role="listbox" aria-label="Résultats" data-results></div><p class="hd-palette__status" data-status role="status">Tape un mot pour chercher dans les pages.</p><footer class="hd-palette__hints" aria-hidden="true"><span><kbd class="hd-kbd">↑</kbd><kbd class="hd-kbd">↓</kbd> Choisir</span><span><kbd class="hd-kbd">↵</kbd> Ouvrir</span><span><kbd class="hd-kbd">Échap</kbd> Fermer</span></footer></div></dialog></hd-search><script type="module" src="/docs/_astro/Search.astro_astro_type_script_index_0_lang.D7EcezBU.js"></script><button type="button" class="hd-icon-button" data-hgdc-ask aria-label="Demander à l'assistant" title="Demander à l'assistant (Ctrl I)"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3.5 13.6 8a3 3 0 0 0 1.9 1.9L20 11.5l-4.5 1.6a3 3 0 0 0-1.9 1.9L12 19.5 10.4 15a3 3 0 0 0-1.9-1.9L4 11.5 8.5 9.9A3 3 0 0 0 10.4 8ZM19 3v3M20.5 4.5h-3"></path></svg></button><button type="button" class="hd-icon-button hd-theme-button" data-hd-theme-toggle aria-label="Passer au thème sombre"><svg class="hd-icon hd-theme-button__moon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M20 14.5A8 8 0 1 1 9.5 4a6.5 6.5 0 0 0 10.5 10.5Z"></path></svg><svg class="hd-icon hd-theme-button__sun" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 16a4 4 0 1 0 0-8 4 4 0 0 0 0 8ZM12 2.5v2M12 19.5v2M4.6 4.6 6 6M18 18l1.4 1.4M2.5 12h2M19.5 12h2M4.6 19.4 6 18M18 6l1.4-1.4"></path></svg></button><script type="module">var e=`starlight-theme`,t=()=>{try{return localStorage.getItem(e)||`light`}catch{return`light`}},n=()=>matchMedia(`(prefers-color-scheme: light)`).matches?`light`:`dark`,r=t=>{try{localStorage.setItem(e,t)}catch{}let r=t===`auto`?n():t;document.documentElement.dataset.theme=r,document.documentElement.dataset.hdTheme=r,i()},i=()=>{let e=t(),n=document.documentElement.dataset.theme===`dark`;for(let e of document.querySelectorAll(`[data-hd-theme-toggle]`))e.setAttribute(`aria-label`,n?`Passer au thème clair`:`Passer au thème sombre`);for(let t of document.querySelectorAll(`[data-hd-theme]`)){let n=t.dataset.hdTheme===e;t.setAttribute(`aria-checked`,String(n)),t.tabIndex=n?0:-1}};for(let e of document.querySelectorAll(`[data-hd-theme-toggle]`))e.addEventListener(`click`,()=>r(document.documentElement.dataset.theme===`dark`?`light`:`dark`));for(let e of document.querySelectorAll(`.hd-theme-choice`)){let t=[...e.querySelectorAll(`[data-hd-theme]`)];for(let e of t)e.addEventListener(`click`,()=>r(e.dataset.hdTheme));e.addEventListener(`keydown`,e=>{let n=e.key===`ArrowRight`||e.key===`ArrowDown`?1:e.key===`ArrowLeft`||e.key===`ArrowUp`?-1:0;if(!n)return;e.preventDefault();let i=t.findIndex(e=>e.getAttribute(`aria-checked`)===`true`),a=t[(i+n+t.length)%t.length];r(a.dataset.hdTheme),a.focus()})}matchMedia(`(prefers-color-scheme: light)`).addEventListener(`change`,()=>{t()===`auto`&&r(`auto`)}),i();</script></div></div></header><nav class="hd-sidebar" aria-label="Navigation de la documentation"><script type="module">for(let e of document.querySelectorAll(`[data-hgdc-version]`))e.addEventListener(`change`,()=>window.location.assign(e.value));var e=document.querySelector(`.sidebar-pane`);if(e){let t=`hd-sidebar-scroll`;try{let n=Number(sessionStorage.getItem(t));n&&(e.scrollTop=n)}catch{}let n=e.querySelector(`[aria-current="page"]`);if(n){let t=e.getBoundingClientRect(),r=n.getBoundingClientRect();(r.top<t.top||r.bottom>t.bottom)&&n.scrollIntoView({block:`center`})}addEventListener(`pagehide`,()=>{try{sessionStorage.setItem(t,String(e.scrollTop))}catch{}})}</script><hd-sidebar-pane popover="auto" id="starlight__sidebar" class="sidebar-pane"><div class="hd-sidebar__content"><div class="hd-mobile-only hd-sidebar-head"><a class="hd-brand" href="/docs/"><span class="hd-brand__name">Host</span></a><button type="button" class="hd-icon-button" popovertarget="starlight__sidebar" popovertargetaction="hide" aria-label="Fermer le menu"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M6 6l12 12M18 6 6 18"></path></svg></button></div><ul class="hd-nav hd-nav--depth-0"><li class="hd-nav__group"><p class="hd-nav__heading">Démarrer</p><ul class="hd-nav hd-nav--depth-1"><li><a href="/docs/" class="hd-nav__link"><span>Accueil</span></a></li><li><a href="/docs/demarrer/premier-site/" class="hd-nav__link"><span>Premier site</span></a></li><li><a href="/docs/demarrer/depuis-github/" class="hd-nav__link"><span>Depuis GitHub</span></a></li></ul></li><li class="hd-nav__group"><p class="hd-nav__heading">Guides</p><ul class="hd-nav hd-nav--depth-1"><li><a href="/docs/guides/cle-d-api/" class="hd-nav__link"><span>Clés d'API</span></a></li><li><a href="/docs/guides/deployer-depuis-github/" class="hd-nav__link"><span>Depuis GitHub</span></a></li><li><a href="/docs/guides/github-actions-sans-application/" class="hd-nav__link" aria-current="page"><span>GitHub Actions sans l'app</span></a></li><li><a href="/docs/guides/deployer-un-framework/" class="hd-nav__link"><span>Un framework</span></a></li><li><a href="/docs/guides/site-statique/" class="hd-nav__link"><span>Site statique</span></a></li><li><a href="/docs/guides/monorepo/" class="hd-nav__link"><span>Monorepo</span></a></li><li><a href="/docs/guides/brancher-un-domaine/" class="hd-nav__link"><span>Brancher un domaine</span></a></li><li><a href="/docs/guides/variables-d-environnement/" class="hd-nav__link"><span>Variables</span></a></li><li><a href="/docs/guides/synchroniser-doppler/" class="hd-nav__link"><span>Doppler</span></a></li><li><a href="/docs/guides/revenir-en-arriere/" class="hd-nav__link"><span>Revenir en arrière</span></a></li><li><a href="/docs/guides/inviter-une-personne/" class="hd-nav__link"><span>Inviter une personne</span></a></li><li><a href="/docs/guides/lire-les-logs/" class="hd-nav__link"><span>Lire les logs</span></a></li><li><a href="/docs/guides/migrer-depuis-vercel/" class="hd-nav__link"><span>Migrer depuis Vercel</span></a></li><li><a href="/docs/guides/depannage/" class="hd-nav__link"><span>Dépannage</span></a></li></ul></li><li class="hd-nav__group"><p class="hd-nav__heading">Référence</p><ul class="hd-nav hd-nav--depth-1"><li><a href="/docs/reference/cli/" class="hd-nav__link"><span>CLI</span></a></li><li><a href="/docs/reference/variables/" class="hd-nav__link"><span>Variables</span></a></li><li><a href="/docs/reference/domaines/" class="hd-nav__link"><span>Domaines</span></a></li><li><a href="/docs/reference/vercel-json/" class="hd-nav__link"><span>vercel.json</span></a></li><li><a href="/docs/reference/compatibilite/" class="hd-nav__link"><span>Compatibilité</span></a></li><li><a href="/docs/reference/limites/" class="hd-nav__link"><span>Limites</span></a></li><li><details class="hd-nav__fold" open><summary class="hd-nav__link"><span>API</span><svg class="hd-icon hd-nav__chevron" aria-hidden="true" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="m9 6 6 6-6 6"></path></svg></summary><ul class="hd-nav hd-nav--depth-2"><li><a href="/docs/reference/api/introduction/" class="hd-nav__link"><span>Introduction</span></a></li><li><a href="/docs/reference/api/erreurs/" class="hd-nav__link"><span>Erreurs</span></a></li><li><a href="/docs/reference/api/utilisateur/" class="hd-nav__link"><span>Utilisateur et organisation</span></a></li><li><a href="/docs/reference/api/projets/" class="hd-nav__link"><span>Projets</span></a></li><li><a href="/docs/reference/api/deploiements/" class="hd-nav__link"><span>Déploiements</span></a></li><li><a href="/docs/reference/api/fichiers/" class="hd-nav__link"><span>Envoyer un fichier</span></a></li><li><a href="/docs/reference/api/variables/" class="hd-nav__link"><span>Variables</span></a></li></ul></details></li></ul></li><li class="hd-nav__group"><p class="hd-nav__heading">Concepts</p><ul class="hd-nav hd-nav--depth-1"><li><a href="/docs/concepts/deploiements/" class="hd-nav__link"><span>Déploiements</span></a></li><li><a href="/docs/concepts/organisations-et-roles/" class="hd-nav__link"><span>Organisations et rôles</span></a></li><li><a href="/docs/concepts/secrets-et-coffre/" class="hd-nav__link"><span>Secrets et coffre</span></a></li><li><a href="/docs/concepts/preversion/" class="hd-nav__link"><span>Préversion</span></a></li><li><a href="/docs/concepts/confidentialite/" class="hd-nav__link"><span>Sécurité et confidentialité</span></a></li></ul></li></ul><div class="hd-mobile-only hd-sidebar-footer"><div class="hd-theme-choice" role="radiogroup" aria-label="Thème"><button type="button" role="radio" aria-checked="false" data-hd-theme="auto" aria-label="Système" title="Système"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M4 5h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1Zm4 15h8m-4-3v3"></path></svg></button><button type="button" role="radio" aria-checked="false" data-hd-theme="light" aria-label="Clair" title="Clair"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 16a4 4 0 1 0 0-8 4 4 0 0 0 0 8ZM12 2.5v2M12 19.5v2M4.6 4.6 6 6M18 18l1.4 1.4M2.5 12h2M19.5 12h2M4.6 19.4 6 18M18 6l1.4-1.4"></path></svg></button><button type="button" role="radio" aria-checked="false" data-hd-theme="dark" aria-label="Sombre" title="Sombre"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M20 14.5A8 8 0 1 1 9.5 4a6.5 6.5 0 0 0 10.5 10.5Z"></path></svg></button></div></div></div></hd-sidebar-pane></nav><div class="hd-main-frame main-frame"><script type="module">var e=document.getElementById(`starlight__sidebar`),t=e?.querySelector(`sl-sidebar-state-persist`),n=`sl-sidebar-state`,r=()=>{let r=[],i=t?.dataset.hash||``;try{let e=sessionStorage.getItem(n),t=JSON.parse(e||`{}`);Array.isArray(t.open)&&t.hash===i&&(r=t.open)}catch{}return{hash:i,open:r,scroll:e?.scrollTop||0}},i=e=>{try{sessionStorage.setItem(n,JSON.stringify(e))}catch{}},a=()=>i(r()),o=(e,t)=>{let n=r();n.open[t]=e,i(n)};t?.addEventListener(`click`,e=>{if(!(e.target instanceof Element))return;let t=e.target.closest(`summary`)?.closest(`details`);if(!t)return;let n=t.querySelector(`sl-sidebar-restore`),r=parseInt(n?.dataset.index||``);isNaN(r)||o(!t.open,r)}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&a()});</script><div class="hd-columns hd-columns--toc"><div class="hd-columns__main main-pane"><main data-pagefind-body class="astro-mxbotnn6" lang="fr-CH" dir="ltr"><div class="content-panel astro-64cflj2q"><div class="sl-container astro-64cflj2q"><div class="hd-title not-content"><p class="hd-eyebrow" data-pagefind-meta="section">Guides</p><div class="hd-title__row"><h1 id="_top">Déployer avec GitHub Actions, sans l'application</h1><div class="hd-page-actions" data-hgdc-skip data-pagefind-ignore><div class="hd-split"><button type="button" class="hd-split__main" data-hgdc-copy="/docs/guides/github-actions-sans-application.md"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M9 9h10a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1V10a1 1 0 0 1 1-1Zm-4 6H4.5A1.5 1.5 0 0 1 3 13.5v-9A1.5 1.5 0 0 1 4.5 3h9A1.5 1.5 0 0 1 15 4.5V5"></path></svg><span data-label>Copier la page</span></button><details class="hd-menu"><summary class="hd-split__more" aria-label="Autres formats de la page"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="m6 9 6 6 6-6"></path></svg></summary><ul class="hd-menu__list"><li><button type="button" data-hgdc-copy-item><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M9 9h10a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1V10a1 1 0 0 1 1-1Zm-4 6H4.5A1.5 1.5 0 0 1 3 13.5v-9A1.5 1.5 0 0 1 4.5 3h9A1.5 1.5 0 0 1 15 4.5V5"></path></svg><span><strong>Copier la page</strong><small>En Markdown, pour un LLM</small></span></button></li><li><a href="/docs/guides/github-actions-sans-application.md"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M4 6h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1Zm3 9V9l2.5 3L12 9v6m5-6v6m-2-2 2 2 2-2"></path></svg><span><strong>Voir en Markdown</strong><small>La page en texte brut</small></span></a></li><li><a data-hgdc-open="claude" href="https://claude.ai/new" target="_blank" rel="noopener"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M7 17 17 7M8 7h9v9"></path></svg><span><strong>Ouvrir dans Claude</strong><small>Poser une question sur cette page</small></span></a></li><li><a data-hgdc-open="chatgpt" href="https://chatgpt.com/" target="_blank" rel="noopener"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M7 17 17 7M8 7h9v9"></path></svg><span><strong>Ouvrir dans ChatGPT</strong><small>Poser une question sur cette page</small></span></a></li><li><a href="/docs/llms.txt"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8Zm0 0v5h5M9 13h6m-6 4h4"></path></svg><span><strong>llms.txt</strong><small>L'index de la doc pour les agents</small></span></a></li></ul></details></div><span class="sr-only" role="status" aria-live="polite" data-hgdc-copy-status></span></div></div><p class="hd-lead">Écris ton propre workflow avec la CLI Vercel, sans passer par l'app GitHub de Host.</p></div><script type="module">var e=document.querySelector(`[data-hgdc-copy-status]`),t=document.querySelector(`[data-hgdc-copy]`);async function n(){if(!t)return;let n=t.querySelector(`[data-label]`),r=t=>{n.textContent=t,e&&(e.textContent=t),setTimeout(()=>n.textContent=`Copier la page`,2e3)};try{let e=await fetch(t.dataset.hgdcCopy);if(!e.ok)throw Error(String(e.status));await navigator.clipboard.writeText(await e.text()),r(`Page copiée`)}catch{r(`Copie impossible`)}}if(t?.addEventListener(`click`,()=>void n()),document.querySelector(`[data-hgdc-copy-item]`)?.addEventListener(`click`,()=>{document.querySelector(`.hd-menu`).open=!1,n()}),t){let e=`Lis ${new URL(t.dataset.hgdcCopy,location.href).href} et réponds à mes questions sur cette page.`;for(let t of document.querySelectorAll(`[data-hgdc-open]`))t.href=`${t.dataset.hgdcOpen===`claude`?`https://claude.ai/new`:`https://chatgpt.com/`}?q=${encodeURIComponent(e)}`}for(let e of document.querySelectorAll(`.hd-menu`))document.addEventListener(`click`,t=>{e.open&&!e.contains(t.target)&&(e.open=!1)}),e.addEventListener(`keydown`,t=>{t.key===`Escape`&&e.open&&(t.stopPropagation(),e.open=!1,e.querySelector(`summary`)?.focus())});</script></div></div><div class="content-panel astro-64cflj2q"><div class="sl-container astro-64cflj2q"><div class="sl-markdown-content"><p>Tu préfères garder la main sur ton workflow, ou tu utilises une autre CI ? L’app GitHub n’est pas nécessaire : la CLI suffit. Ce guide met en place un workflow qui construit et déploie à chaque push.</p>
|
|
17
|
-
<p><strong>Résultat attendu</strong> : un push sur la branche principale publie en production, et un push sur une autre branche publie une preview.</p>
|
|
18
|
-
<p><strong>Ce que tu perds par rapport à l’app</strong> : le déploiement n’apparaît dans Host qu’à l’envoi, sans sortie de build en direct, et le statut du commit n’est pas mis à jour.</p>
|
|
19
|
-
<h2 id="relier-le-dossier-au-projet">Relier le dossier au projet</h2>
|
|
20
|
-
<ol class="hgdc-steps"><li class="hgdc-step"><p class="hgdc-step__title">Lance un premier déploiement en local</p><div class="hgdc-step__body"><p>Depuis le dossier du projet, avec ta clé d’organisation :</p><div class="expressive-code"><link rel="stylesheet" href="/docs/_astro/ec.t9qpe.css"><script type="module" src="/docs/_astro/ec.0vx5m.js"></script><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="bash"><code><div class="ec-line"><div class="code"><span style="--0:#CA212D;--1:#FF7B72">export</span><span style="--0:#1F2328;--1:#E6EDF3"> VERCEL_TOKEN</span><span style="--0:#CA212D;--1:#FF7B72">=</span><span style="--0:#1F2328;--1:#E6EDF3">ah_…</span></div></div><div class="ec-line"><div class="code"><span style="--0:#953800;--1:#FFA657">vercel</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#0550AE;--1:#79C0FF">--api</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#0A3069;--1:#A5D6FF">https://api.host.hgdc.ch</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#0A3069;--1:#A5D6FF">deploy</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#0550AE;--1:#79C0FF">--yes</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copier dans le presse-papiers" data-copied="Copié !" data-code="export VERCEL_TOKEN=ah_…vercel --api https://api.host.hgdc.ch deploy --yes"><div></div></button></div></figure></div><p>La commande crée <code>.vercel/project.json</code>, qui contient <code>orgId</code> et <code>projectId</code>.</p><p><strong>Vérification</strong> : le fichier <code>.vercel/project.json</code> existe, et le projet apparaît dans Host.</p></div></li><li class="hgdc-step"><p class="hgdc-step__title">Ajoute les secrets au dépôt</p><div class="hgdc-step__body"><p>Dans le dépôt GitHub, ouvre <strong>Settings → Secrets and variables → Actions</strong> et crée trois secrets :</p>
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
<table><thead><tr><th>Secret</th><th>Valeur</th></tr></thead><tbody><tr><td><code>VERCEL_TOKEN</code></td><td>Une clé d’API <code>ah_…</code> d’organisation</td></tr><tr><td><code>VERCEL_ORG_ID</code></td><td>La valeur <code>orgId</code> de <code>.vercel/project.json</code></td></tr><tr><td><code>VERCEL_PROJECT_ID</code></td><td>La valeur <code>projectId</code> de <code>.vercel/project.json</code></td></tr></tbody></table><p>Ne mets ni la clé ni les identifiants dans le fichier de workflow.</p></div></li><li class="hgdc-step"><p class="hgdc-step__title">Ajoute le workflow</p><div class="hgdc-step__body"><p>Crée <code>.github/workflows/deploy.yml</code> :</p><div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="yaml"><code><div class="ec-line"><div class="code"><span style="--0:#116329;--1:#7EE787">name</span><span style="--0:#1F2328;--1:#E6EDF3">: </span><span style="--0:#0A3069;--1:#A5D6FF">Déploiement</span></div></div><div class="ec-line"><div class="code">
|
|
42
|
-
</div></div><div class="ec-line"><div class="code"><span style="--0:#0550AE;--1:#79C0FF">on</span><span style="--0:#1F2328;--1:#E6EDF3">:</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#116329;--1:#7EE787">push</span><span style="--0:#1F2328;--1:#E6EDF3">:</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#116329;--1:#7EE787">branches</span><span style="--0:#1F2328;--1:#E6EDF3">: [</span><span style="--0:#0A3069;--1:#A5D6FF">main</span><span style="--0:#1F2328;--1:#E6EDF3">]</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#116329;--1:#7EE787">pull_request</span><span style="--0:#1F2328;--1:#E6EDF3">:</span></div></div><div class="ec-line"><div class="code">
|
|
43
|
-
</div></div><div class="ec-line"><div class="code"><span style="--0:#116329;--1:#7EE787">permissions</span><span style="--0:#1F2328;--1:#E6EDF3">:</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#116329;--1:#7EE787">contents</span><span style="--0:#1F2328;--1:#E6EDF3">: </span><span style="--0:#0A3069;--1:#A5D6FF">read</span></div></div><div class="ec-line"><div class="code">
|
|
44
|
-
</div></div><div class="ec-line"><div class="code"><span style="--0:#116329;--1:#7EE787">env</span><span style="--0:#1F2328;--1:#E6EDF3">:</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#116329;--1:#7EE787">VERCEL_TOKEN</span><span style="--0:#1F2328;--1:#E6EDF3">: </span><span style="--0:#0A3069;--1:#A5D6FF">${{ secrets.VERCEL_TOKEN }}</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#116329;--1:#7EE787">VERCEL_ORG_ID</span><span style="--0:#1F2328;--1:#E6EDF3">: </span><span style="--0:#0A3069;--1:#A5D6FF">${{ secrets.VERCEL_ORG_ID }}</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#116329;--1:#7EE787">VERCEL_PROJECT_ID</span><span style="--0:#1F2328;--1:#E6EDF3">: </span><span style="--0:#0A3069;--1:#A5D6FF">${{ secrets.VERCEL_PROJECT_ID }}</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#116329;--1:#7EE787">API</span><span style="--0:#1F2328;--1:#E6EDF3">: </span><span style="--0:#0A3069;--1:#A5D6FF">https://api.host.hgdc.ch</span></div></div><div class="ec-line"><div class="code">
|
|
45
|
-
</div></div><div class="ec-line"><div class="code"><span style="--0:#116329;--1:#7EE787">jobs</span><span style="--0:#1F2328;--1:#E6EDF3">:</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#116329;--1:#7EE787">deploy</span><span style="--0:#1F2328;--1:#E6EDF3">:</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#116329;--1:#7EE787">runs-on</span><span style="--0:#1F2328;--1:#E6EDF3">: </span><span style="--0:#0A3069;--1:#A5D6FF">ubuntu-latest</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#116329;--1:#7EE787">steps</span><span style="--0:#1F2328;--1:#E6EDF3">:</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#1F2328;--1:#E6EDF3"> </span></span><span style="--0:#1F2328;--1:#E6EDF3">- </span><span style="--0:#116329;--1:#7EE787">uses</span><span style="--0:#1F2328;--1:#E6EDF3">: </span><span style="--0:#0A3069;--1:#A5D6FF">actions/checkout@v7</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#1F2328;--1:#E6EDF3"> </span></span><span style="--0:#1F2328;--1:#E6EDF3">- </span><span style="--0:#116329;--1:#7EE787">uses</span><span style="--0:#1F2328;--1:#E6EDF3">: </span><span style="--0:#0A3069;--1:#A5D6FF">actions/setup-node@v7</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#116329;--1:#7EE787">with</span><span style="--0:#1F2328;--1:#E6EDF3">:</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#116329;--1:#7EE787">node-version</span><span style="--0:#1F2328;--1:#E6EDF3">: </span><span style="--0:#0550AE;--1:#79C0FF">24</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#1F2328;--1:#E6EDF3"> </span></span><span style="--0:#1F2328;--1:#E6EDF3">- </span><span style="--0:#116329;--1:#7EE787">run</span><span style="--0:#1F2328;--1:#E6EDF3">: </span><span style="--0:#0A3069;--1:#A5D6FF">npm install --global vercel@63</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#1F2328;--1:#E6EDF3"> </span></span><span style="--0:#1F2328;--1:#E6EDF3">- </span><span style="--0:#116329;--1:#7EE787">name</span><span style="--0:#1F2328;--1:#E6EDF3">: </span><span style="--0:#0A3069;--1:#A5D6FF">Production</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#116329;--1:#7EE787">if</span><span style="--0:#1F2328;--1:#E6EDF3">: </span><span style="--0:#0A3069;--1:#A5D6FF">github.ref == 'refs/heads/main'</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#116329;--1:#7EE787">run</span><span style="--0:#1F2328;--1:#E6EDF3">: </span><span style="--0:#CA212D;--1:#FF7B72">|</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#0A3069;--1:#A5D6FF"> </span></span><span style="--0:#0A3069;--1:#A5D6FF">vercel pull --yes --environment=production --api "$API"</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#0A3069;--1:#A5D6FF"> </span></span><span style="--0:#0A3069;--1:#A5D6FF">vercel build --prod --api "$API"</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#0A3069;--1:#A5D6FF"> </span></span><span style="--0:#0A3069;--1:#A5D6FF">vercel deploy --prebuilt --prod --api "$API"</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#1F2328;--1:#E6EDF3"> </span></span><span style="--0:#1F2328;--1:#E6EDF3">- </span><span style="--0:#116329;--1:#7EE787">name</span><span style="--0:#1F2328;--1:#E6EDF3">: </span><span style="--0:#0A3069;--1:#A5D6FF">Preview</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#116329;--1:#7EE787">if</span><span style="--0:#1F2328;--1:#E6EDF3">: </span><span style="--0:#0A3069;--1:#A5D6FF">github.ref != 'refs/heads/main'</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#116329;--1:#7EE787">run</span><span style="--0:#1F2328;--1:#E6EDF3">: </span><span style="--0:#CA212D;--1:#FF7B72">|</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#0A3069;--1:#A5D6FF"> </span></span><span style="--0:#0A3069;--1:#A5D6FF">vercel pull --yes --environment=preview --api "$API"</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#0A3069;--1:#A5D6FF"> </span></span><span style="--0:#0A3069;--1:#A5D6FF">vercel build --api "$API"</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#0A3069;--1:#A5D6FF"> </span></span><span style="--0:#0A3069;--1:#A5D6FF">vercel deploy --prebuilt --api "$API"</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copier dans le presse-papiers" data-copied="Copié !" data-code="name: Déploiementon: push: branches: [main] pull_request:permissions: contents: readenv: VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} API: https://api.host.hgdc.chjobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 - uses: actions/setup-node@v7 with: node-version: 24 - run: npm install --global vercel@63 - name: Production if: github.ref == 'refs/heads/main' run: | vercel pull --yes --environment=production --api "$API" vercel build --prod --api "$API" vercel deploy --prebuilt --prod --api "$API" - name: Preview if: github.ref != 'refs/heads/main' run: | vercel pull --yes --environment=preview --api "$API" vercel build --api "$API" vercel deploy --prebuilt --api "$API""><div></div></button></div></figure></div><p>La CLI lit <code>VERCEL_TOKEN</code>, <code>VERCEL_ORG_ID</code> et <code>VERCEL_PROJECT_ID</code> dans l’environnement. Le projet n’a pas besoin d’un dossier <code>.vercel</code> dans le dépôt.</p><p>Adapte <code>node-version</code> à la version de Node.js de ton projet. Pour un site qui n’a pas de build, supprime les étapes <code>vercel build</code>.</p><p><strong>Vérification</strong> : le run <strong>Déploiement</strong> apparaît dans l’onglet <strong>Actions</strong>, et son job se termine en vert. Le déploiement apparaît dans le projet Host.</p></div></li></ol>
|
|
46
|
-
<h2 id="variables-sensibles">Variables sensibles</h2>
|
|
47
|
-
<p>Une variable sensible n’est livrée qu’à une clé limitée au projet, celle que pose l’app GitHub. Avec une clé d’organisation, <code>vercel pull</code> ne la récupère pas.</p>
|
|
48
|
-
<p>Si ton build a besoin d’un secret, passe-le par un secret du dépôt, puis expose-le au build avec <code>env:</code>. Ne le mets pas dans une variable publique du projet. Voir <a href="/docs/concepts/secrets-et-coffre/">Secrets et coffre</a>.</p>
|
|
49
|
-
<h2 id="si-ça-ne-marche-pas">Si ça ne marche pas</h2>
|
|
50
|
-
<ul>
|
|
51
|
-
<li>Le job échoue sur <code>vercel pull</code> avec un <code>403</code> : la clé <code>VERCEL_TOKEN</code> est mal copiée ou révoquée. Voir <a href="/docs/guides/depannage/#la-cli-renvoie-403">Dépannage</a>.</li>
|
|
52
|
-
<li>Le job tourne, mais aucun déploiement n’apparaît : vérifie que <code>VERCEL_PROJECT_ID</code> et <code>VERCEL_ORG_ID</code> viennent bien de <code>.vercel/project.json</code>.</li>
|
|
53
|
-
</ul></div><hgdc-feedback class="hgdc-feedback not-content" data-endpoint="https://docs.hgdc.ch/api/v1/feedback" data-project="js743wp3001k1jvrdad0fwcjx18gc789" data-pagefind-ignore="true"><div data-step="ask"><p class="hgdc-feedback__question">Cette page t'a aidé ?</p><div class="hgdc-feedback__choices"><button type="button" data-helpful="true"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M7 10v11M15 5.9 14 10h5.8a2 2 0 0 1 1.9 2.5l-2.3 7A2 2 0 0 1 17.5 21H4a1 1 0 0 1-1-1v-9a1 1 0 0 1 1-1h2.8a2 2 0 0 0 1.8-1.1L12 2a3.1 3.1 0 0 1 3 3.9Z"></path></svg>Oui</button><button type="button" data-helpful="false"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M17 14V3M9 18.1 10 14H4.2a2 2 0 0 1-1.9-2.5l2.3-7A2 2 0 0 1 6.5 3H20a1 1 0 0 1 1 1v9a1 1 0 0 1-1 1h-2.8a2 2 0 0 0-1.8 1.1L12 22a3.1 3.1 0 0 1-3-3.9Z"></path></svg>Non</button></div></div><form data-step="comment" hidden><label for="hgdc-feedback-comment">Qu'est-ce qui manquait ou pourrait être plus clair ? (facultatif)</label><textarea id="hgdc-feedback-comment" name="comment" rows="3" maxlength="1000"></textarea><div class="hgdc-feedback__choices"><button type="submit">Envoyer</button><button type="button" data-skip>Passer</button></div></form><p data-step="done" class="hgdc-feedback__done" role="status" hidden>Merci, c'est noté.</p></hgdc-feedback><nav class="hd-pagination not-content" aria-label="Pages voisines" data-pagefind-ignore><a class="hd-pagination__link" href="/docs/guides/deployer-depuis-github/" rel="prev"><span class="hd-pagination__hint"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="m15 6-6 6 6 6"></path></svg>Précédent</span><span class="hd-pagination__title">Depuis GitHub</span></a><a class="hd-pagination__link hd-pagination__link--next" href="/docs/guides/deployer-un-framework/" rel="next"><span class="hd-pagination__hint">Suivant<svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="m9 6 6 6-6 6"></path></svg></span><span class="hd-pagination__title">Un framework</span></a></nav><script type="module" src="/docs/_astro/Footer.astro_astro_type_script_index_0_lang.DzCnn3OT.js"></script></div></div></main><form class="hd-askbar" data-askbar data-pagefind-ignore><label class="sr-only" for="hd-askbar-input">Pose une question à l'assistant</label><input id="hd-askbar-input" data-askbar-input type="text" maxlength="1000" placeholder="Pose une question…" autocomplete="off"><kbd class="hd-kbd" data-shortcut aria-hidden="true">Ctrl I</kbd><button type="submit" class="hd-send" aria-label="Envoyer la question"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 19V5m-6 6 6-6 6 6"></path></svg></button></form></div><aside class="hd-columns__toc" aria-label="Sur cette page"><div class="hd-toc-scroll"><starlight-toc data-min-h="2" data-max-h="3"><nav aria-labelledby="starlight__on-this-page"><h2 id="starlight__on-this-page">Sur cette page</h2><ul class="astro-jxyovztp" style="--depth: 0;"><li style="--depth: 0;" class="astro-jxyovztp"><a href="#_top" style="--depth: 0;" class="astro-jxyovztp"><span style="--depth: 0;" class="astro-jxyovztp">Vue d’ensemble</span></a></li><li style="--depth: 0;" class="astro-jxyovztp"><a href="#relier-le-dossier-au-projet" style="--depth: 0;" class="astro-jxyovztp"><span style="--depth: 0;" class="astro-jxyovztp">Relier le dossier au projet</span></a></li><li style="--depth: 0;" class="astro-jxyovztp"><a href="#variables-sensibles" style="--depth: 0;" class="astro-jxyovztp"><span style="--depth: 0;" class="astro-jxyovztp">Variables sensibles</span></a></li><li style="--depth: 0;" class="astro-jxyovztp"><a href="#si-ça-ne-marche-pas" style="--depth: 0;" class="astro-jxyovztp"><span style="--depth: 0;" class="astro-jxyovztp">Si ça ne marche pas</span></a></li></ul></nav></starlight-toc><script type="module">var e=`_top`,t=class extends HTMLElement{_current=this.querySelector(`a[aria-current="true"]`);minH=parseInt(this.dataset.minH||`2`,10);maxH=parseInt(this.dataset.maxH||`3`,10);tocHeadingSelector=`h1#${e},:where(${[...Array.from({length:1+this.maxH-this.minH}).map((e,t)=>`h${this.minH+t}`)].join()})[id]`;set current(e){e!==this._current&&(this._current&&this._current.removeAttribute(`aria-current`),e.setAttribute(`aria-current`,`true`),this._current=e)}onIdle=e=>(window.requestIdleCallback||(e=>setTimeout(e,1)))(e);constructor(){super(),this.onIdle(()=>this.init())}init=()=>{let t=[...this.querySelectorAll(`a`)],n=e=>e.matches(this.tocHeadingSelector),r=t=>{for(;t;){if(t.matches(`.sl-markdown-content, main > *`))return document.getElementById(e);if(n(t))return t;let r=t.querySelector(this.tocHeadingSelector);if(r)return r;let i=t.previousElementSibling;for(;i?.lastElementChild;)i=i.lastElementChild;t=i??t.parentElement}return null},i=e=>{for(let{isIntersecting:n,target:i}of e){if(!n)continue;let e=r(i);if(!e)continue;let a=t.find(t=>t.hash===`#`+encodeURIComponent(e.id));if(a){this.current=a;break}}},a=document.querySelectorAll([`main :where(${this.tocHeadingSelector})`,`main :where(${this.tocHeadingSelector}, .sl-heading-wrapper) ~ *:not(:has(${this.tocHeadingSelector}))`,`main .sl-markdown-content > *:not(:has(${this.tocHeadingSelector}))`,`main > *:not(:has(${this.tocHeadingSelector}))`].join()),o,s=()=>{o||(o=new IntersectionObserver(i,{rootMargin:this.getRootMargin()}),a.forEach(e=>o.observe(e)))};s();let c;window.addEventListener(`resize`,()=>{o&&=(o.disconnect(),void 0),clearTimeout(c),c=setTimeout(()=>this.onIdle(s),200)})};getRootMargin(){let e=(document.querySelector(`header`)?.getBoundingClientRect().height||0)+(this.querySelector(`summary`)?.getBoundingClientRect().height||0)+32;return`-${e}px 0% ${e+53-document.documentElement.clientHeight}px`}};customElements.define(`starlight-toc`,t);</script></div></aside></div><footer class="hd-site-footer" data-pagefind-ignore><div class="hd-site-footer__row"><a class="hd-brand hd-brand--footer" href="/docs/"><span class="hd-brand__mark"><img class="hd-brand__light" src="/docs/images/logo.svg" alt="" width="20" height="20" loading="lazy"><img class="hd-brand__dark" src="/docs/images/logo.svg" alt="" width="20" height="20" loading="lazy"></span><span class="hd-brand__name">Host</span></a></div><div class="hd-site-footer__row hd-site-footer__row--meta"><p>Ton site en ligne, déployé à chaque modification.</p><div class="hd-theme-choice" role="radiogroup" aria-label="Thème"><button type="button" role="radio" aria-checked="false" data-hd-theme="auto" aria-label="Système" title="Système"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M4 5h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1Zm4 15h8m-4-3v3"></path></svg></button><button type="button" role="radio" aria-checked="false" data-hd-theme="light" aria-label="Clair" title="Clair"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 16a4 4 0 1 0 0-8 4 4 0 0 0 0 8ZM12 2.5v2M12 19.5v2M4.6 4.6 6 6M18 18l1.4 1.4M2.5 12h2M19.5 12h2M4.6 19.4 6 18M18 6l1.4-1.4"></path></svg></button><button type="button" role="radio" aria-checked="false" data-hd-theme="dark" aria-label="Sombre" title="Sombre"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M20 14.5A8 8 0 1 1 9.5 4a6.5 6.5 0 0 0 10.5 10.5Z"></path></svg></button></div></div></footer></div><hgdc-assistant data-endpoint="https://docs.hgdc.ch/api/v1/ask" data-project="js743wp3001k1jvrdad0fwcjx18gc789" data-name="Host"><section class="hgdc-panel" role="dialog" aria-modal="false" aria-labelledby="hgdc-assistant-title" data-panel inert><div class="hgdc-panel__grip" aria-hidden="true"></div><header class="hgdc-panel__header"><h2 id="hgdc-assistant-title"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3.5 13.6 8a3 3 0 0 0 1.9 1.9L20 11.5l-4.5 1.6a3 3 0 0 0-1.9 1.9L12 19.5 10.4 15a3 3 0 0 0-1.9-1.9L4 11.5 8.5 9.9A3 3 0 0 0 10.4 8ZM19 3v3M20.5 4.5h-3"></path></svg>Assistant</h2><div class="hgdc-panel__tools"><button type="button" class="hd-icon-button" data-reset aria-label="Nouvelle conversation" title="Nouvelle conversation" hidden><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M4 12a8 8 0 1 0 2.3-5.7M4 4v4h4"></path></svg></button><button type="button" class="hd-icon-button" data-close aria-label="Fermer l'assistant" title="Fermer (Échap)"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M6 6l12 12M18 6 6 18"></path></svg></button></div></header><div class="hgdc-panel__body" data-log aria-live="polite"><div class="hgdc-empty" data-empty><p class="hgdc-empty__title">Pose ta question sur Host.</p><p>Je cherche dans les pages de cette documentation et je cite mes sources. Si la réponse n'y est pas, je te le dis.</p></div></div><form class="hgdc-panel__form" data-form><label class="sr-only" for="hgdc-question">Ta question</label><textarea id="hgdc-question" data-input rows="1" maxlength="1000" placeholder="Pose une question…" required></textarea><button type="submit" class="hd-send" data-send aria-label="Envoyer la question"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 19V5m-6 6 6-6 6 6"></path></svg></button></form><p class="hgdc-panel__note">Réponses générées par IA (Claude, d'Anthropic), à vérifier. Les questions sont conservées 90 jours pour améliorer cette documentation.</p></section></hgdc-assistant><script type="module" src="/docs/_astro/Assistant.astro_astro_type_script_index_0_lang.C1pz7yK1.js"></script></div><script type="module">var e=class extends HTMLElement{connectedCallback(){let e=matchMedia(`(min-width: 50em)`),t=()=>{e.matches&&this.matches(`:popover-open`)&&this.hidePopover(),this.popover=e.matches?null:`auto`};t(),e.addEventListener(`change`,t),this.addEventListener(`toggle`,e=>{let t=e.newState===`open`;for(let e of document.querySelectorAll(`.hd-main-frame, .hd-askbar`))e.toggleAttribute(`inert`,t);document.documentElement.toggleAttribute(`data-hd-menu`,t)}),this.addEventListener(`click`,e=>{e.target.closest(`a`)&&this.matches(`:popover-open`)&&this.hidePopover()})}};customElements.define(`hd-sidebar-pane`,e);</script></body></html>
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
# Déployer avec GitHub Actions, sans l'application
|
|
2
|
-
|
|
3
|
-
Tu préfères garder la main sur ton workflow, ou tu utilises une autre CI ? L’app GitHub n’est pas nécessaire : la CLI suffit. Ce guide met en place un workflow qui construit et déploie à chaque push.
|
|
4
|
-
|
|
5
|
-
**Résultat attendu** : un push sur la branche principale publie en production, et un push sur une autre branche publie une preview.
|
|
6
|
-
|
|
7
|
-
**Ce que tu perds par rapport à l’app** : le déploiement n’apparaît dans Host qu’à l’envoi, sans sortie de build en direct, et le statut du commit n’est pas mis à jour.
|
|
8
|
-
|
|
9
|
-
## Relier le dossier au projet
|
|
10
|
-
|
|
11
|
-
1. **Lance un premier déploiement en local**
|
|
12
|
-
|
|
13
|
-
Depuis le dossier du projet, avec ta clé d’organisation :
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
export VERCEL_TOKEN=ah_…
|
|
17
|
-
vercel --api https://api.host.hgdc.ch deploy --yes
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
La commande crée `.vercel/project.json`, qui contient `orgId` et `projectId`.
|
|
21
|
-
|
|
22
|
-
**Vérification** : le fichier `.vercel/project.json` existe, et le projet apparaît dans Host.
|
|
23
|
-
|
|
24
|
-
2. **Ajoute les secrets au dépôt**
|
|
25
|
-
|
|
26
|
-
Dans le dépôt GitHub, ouvre **Settings → Secrets and variables → Actions** et crée trois secrets :
|
|
27
|
-
|
|
28
|
-
| Secret | Valeur |
|
|
29
|
-
| ------------------- | ----------------------------------------------- |
|
|
30
|
-
| `VERCEL_TOKEN` | Une clé d’API `ah_…` d’organisation |
|
|
31
|
-
| `VERCEL_ORG_ID` | La valeur `orgId` de `.vercel/project.json` |
|
|
32
|
-
| `VERCEL_PROJECT_ID` | La valeur `projectId` de `.vercel/project.json` |
|
|
33
|
-
|
|
34
|
-
Ne mets ni la clé ni les identifiants dans le fichier de workflow.
|
|
35
|
-
|
|
36
|
-
3. **Ajoute le workflow**
|
|
37
|
-
|
|
38
|
-
Crée `.github/workflows/deploy.yml` :
|
|
39
|
-
|
|
40
|
-
```yaml
|
|
41
|
-
name: Déploiement
|
|
42
|
-
|
|
43
|
-
on:
|
|
44
|
-
push:
|
|
45
|
-
branches: [main]
|
|
46
|
-
pull_request:
|
|
47
|
-
|
|
48
|
-
permissions:
|
|
49
|
-
contents: read
|
|
50
|
-
|
|
51
|
-
env:
|
|
52
|
-
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
|
|
53
|
-
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
|
|
54
|
-
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
|
|
55
|
-
API: https://api.host.hgdc.ch
|
|
56
|
-
|
|
57
|
-
jobs:
|
|
58
|
-
deploy:
|
|
59
|
-
runs-on: ubuntu-latest
|
|
60
|
-
steps:
|
|
61
|
-
- uses: actions/checkout@v7
|
|
62
|
-
- uses: actions/setup-node@v7
|
|
63
|
-
with:
|
|
64
|
-
node-version: 24
|
|
65
|
-
- run: npm install --global vercel@63
|
|
66
|
-
- name: Production
|
|
67
|
-
if: github.ref == 'refs/heads/main'
|
|
68
|
-
run: |
|
|
69
|
-
vercel pull --yes --environment=production --api "$API"
|
|
70
|
-
vercel build --prod --api "$API"
|
|
71
|
-
vercel deploy --prebuilt --prod --api "$API"
|
|
72
|
-
- name: Preview
|
|
73
|
-
if: github.ref != 'refs/heads/main'
|
|
74
|
-
run: |
|
|
75
|
-
vercel pull --yes --environment=preview --api "$API"
|
|
76
|
-
vercel build --api "$API"
|
|
77
|
-
vercel deploy --prebuilt --api "$API"
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
La CLI lit `VERCEL_TOKEN`, `VERCEL_ORG_ID` et `VERCEL_PROJECT_ID` dans l’environnement. Le projet n’a pas besoin d’un dossier `.vercel` dans le dépôt.
|
|
81
|
-
|
|
82
|
-
Adapte `node-version` à la version de Node.js de ton projet. Pour un site qui n’a pas de build, supprime les étapes `vercel build`.
|
|
83
|
-
|
|
84
|
-
**Vérification** : le run **Déploiement** apparaît dans l’onglet **Actions**, et son job se termine en vert. Le déploiement apparaît dans le projet Host.
|
|
85
|
-
|
|
86
|
-
## Variables sensibles
|
|
87
|
-
|
|
88
|
-
Une variable sensible n’est livrée qu’à une clé limitée au projet, celle que pose l’app GitHub. Avec une clé d’organisation, `vercel pull` ne la récupère pas.
|
|
89
|
-
|
|
90
|
-
Si ton build a besoin d’un secret, passe-le par un secret du dépôt, puis expose-le au build avec `env:`. Ne le mets pas dans une variable publique du projet. Voir [Secrets et coffre](/docs/concepts/secrets-et-coffre/).
|
|
91
|
-
|
|
92
|
-
## Si ça ne marche pas
|
|
93
|
-
|
|
94
|
-
- Le job échoue sur `vercel pull` avec un `403` : la clé `VERCEL_TOKEN` est mal copiée ou révoquée. Voir [Dépannage](/docs/guides/depannage/#la-cli-renvoie-403).
|
|
95
|
-
- Le job tourne, mais aucun déploiement n’apparaît : vérifie que `VERCEL_PROJECT_ID` et `VERCEL_ORG_ID` viennent bien de `.vercel/project.json`.
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="fr-CH" dir="ltr" data-theme="dark" data-has-toc data-has-sidebar class="astro-mxbotnn6"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>Inviter une personne dans une organisation | Host</title><style>:root{--sl-color-accent-low:#172544;--sl-color-accent:#4b8eff;--sl-color-accent-high:#87d3ff;--hgdc-on-accent:#000000;}:root:not([data-hd-theme="dark"]){--sl-color-accent-low:#dcf1ff;--sl-color-accent:#194ff7;--sl-color-accent-high:#0400bf;--hgdc-on-accent:#ffffff;}</style><link rel="shortcut icon" href="/docs/images/logo.svg" type="image/svg+xml"/><meta name="generator" content="Astro v7.3.8"/><meta name="generator" content="Starlight v0.42.6"/><meta property="og:title" content="Inviter une personne dans une organisation"/><meta property="og:type" content="article"/><meta property="og:locale" content="fr-CH"/><meta property="og:description" content="Ajoute un collègue à ton organisation depuis Account, et choisis son rôle pour qu'il accède aux projets."/><meta property="og:site_name" content="Host"/><meta name="twitter:card" content="summary_large_image"/><meta name="description" content="Ajoute un collègue à ton organisation depuis Account, et choisis son rôle pour qu'il accède aux projets."/><link rel="alternate" type="text/markdown" href="/docs/guides/inviter-une-personne.md"><link rel="describedby" type="text/markdown" href="/docs/llms.txt"><script>
|
|
2
|
-
;(() => {
|
|
3
|
-
let stored = null
|
|
4
|
-
try {
|
|
5
|
-
stored = localStorage.getItem("starlight-theme")
|
|
6
|
-
} catch {}
|
|
7
|
-
const dark =
|
|
8
|
-
stored === "dark" || (stored === "auto" && matchMedia("(prefers-color-scheme: dark)").matches)
|
|
9
|
-
const theme = dark ? "dark" : "light"
|
|
10
|
-
document.documentElement.dataset.theme = theme
|
|
11
|
-
document.documentElement.dataset.hdTheme = theme
|
|
12
|
-
window.StarlightThemeProvider = { updatePickers() {} }
|
|
13
|
-
})()
|
|
14
|
-
</script><link rel="stylesheet" href="/docs/_astro/print.ehPL0gv-.css" media="print"><link rel="stylesheet" href="/docs/_astro/common.Dx3aBIS0.css"><style>@layer starlight.components{svg:where(.astro-lgqmsw3b){color:var(--sl-icon-color);font-size:var(--sl-icon-size,1em);width:1em;height:1em;overflow:visible}}
|
|
15
|
-
@layer starlight.components{starlight-tabs:where(.astro-a5blunwz){display:block}.tablist-wrapper:where(.astro-a5blunwz){overflow-x:auto}:where(.astro-a5blunwz)[role=tablist]{border-bottom:2px solid var(--sl-color-gray-5);padding:0;list-style:none;display:flex}.tab:where(.astro-a5blunwz){display:flex}.tab:where(.astro-a5blunwz)>:where(.astro-a5blunwz)[role=tab]{--sl-tab-color-border:var(--sl-color-gray-5);line-height:var(--sl-line-height-headings);box-shadow:0 2px 0 var(--sl-tab-color-border);color:var(--sl-color-gray-3);outline-offset:var(--sl-outline-offset-inside);overflow-wrap:initial;align-items:center;gap:.5rem;padding:.275rem 1.25rem;text-decoration:none;display:flex}.tab:where(.astro-a5blunwz) :where(.astro-a5blunwz)[role=tab][aria-selected=true]{--sl-tab-color-border:var(--sl-color-text-accent);color:var(--sl-color-white);font-weight:600}.tablist-wrapper:where(.astro-a5blunwz)~[role=tabpanel]{margin-top:1rem}}
|
|
16
|
-
</style><script type="module" src="/docs/_astro/page.cNngjUgL.js"></script></head><body class="astro-mxbotnn6"><a class="sl-skip-link astro-k4td3kwj" href="#_top">Aller au contenu</a><div class="hd-page"><header class="hd-topbar"><div class="hd-header"><div class="hd-header__start"><button type="button" class="hd-icon-button hd-menu-button" popovertarget="starlight__sidebar" aria-label="Menu de la documentation" aria-controls="starlight__sidebar"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M4 7h16M4 12h16M4 17h10"></path></svg></button><a class="hd-brand" href="/docs/"><span class="hd-brand__mark"><img class="hd-brand__light" src="/docs/images/logo.svg" alt="" width="24" height="24"><img class="hd-brand__dark" src="/docs/images/logo.svg" alt="" width="24" height="24"></span><span class="hd-brand__name">Host</span></a></div><div class="hd-header__end"><hd-search data-base="/docs" data-assistant><button type="button" class="hd-search-trigger" data-open aria-haspopup="dialog" aria-label="Rechercher (Ctrl K)"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M11 18a7 7 0 1 0 0-14 7 7 0 0 0 0 14Zm5-2 4 4"></path></svg><span class="hd-search-trigger__label">Rechercher</span><kbd class="hd-kbd" data-shortcut>Ctrl K</kbd></button><dialog class="hd-palette" aria-label="Rechercher dans la documentation"><div class="hd-palette__box"><div class="hd-palette__field"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M11 18a7 7 0 1 0 0-14 7 7 0 0 0 0 14Zm5-2 4 4"></path></svg><input type="search" data-input placeholder="Rechercher dans la documentation" autocomplete="off" spellcheck="false" role="combobox" aria-expanded="false" aria-controls="hd-palette-results" aria-autocomplete="list"><button type="button" class="hd-kbd hd-kbd--button" data-close>Échap</button></div><div class="hd-palette__results" id="hd-palette-results" role="listbox" aria-label="Résultats" data-results></div><p class="hd-palette__status" data-status role="status">Tape un mot pour chercher dans les pages.</p><footer class="hd-palette__hints" aria-hidden="true"><span><kbd class="hd-kbd">↑</kbd><kbd class="hd-kbd">↓</kbd> Choisir</span><span><kbd class="hd-kbd">↵</kbd> Ouvrir</span><span><kbd class="hd-kbd">Échap</kbd> Fermer</span></footer></div></dialog></hd-search><script type="module" src="/docs/_astro/Search.astro_astro_type_script_index_0_lang.D7EcezBU.js"></script><button type="button" class="hd-icon-button" data-hgdc-ask aria-label="Demander à l'assistant" title="Demander à l'assistant (Ctrl I)"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3.5 13.6 8a3 3 0 0 0 1.9 1.9L20 11.5l-4.5 1.6a3 3 0 0 0-1.9 1.9L12 19.5 10.4 15a3 3 0 0 0-1.9-1.9L4 11.5 8.5 9.9A3 3 0 0 0 10.4 8ZM19 3v3M20.5 4.5h-3"></path></svg></button><button type="button" class="hd-icon-button hd-theme-button" data-hd-theme-toggle aria-label="Passer au thème sombre"><svg class="hd-icon hd-theme-button__moon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M20 14.5A8 8 0 1 1 9.5 4a6.5 6.5 0 0 0 10.5 10.5Z"></path></svg><svg class="hd-icon hd-theme-button__sun" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 16a4 4 0 1 0 0-8 4 4 0 0 0 0 8ZM12 2.5v2M12 19.5v2M4.6 4.6 6 6M18 18l1.4 1.4M2.5 12h2M19.5 12h2M4.6 19.4 6 18M18 6l1.4-1.4"></path></svg></button><script type="module">var e=`starlight-theme`,t=()=>{try{return localStorage.getItem(e)||`light`}catch{return`light`}},n=()=>matchMedia(`(prefers-color-scheme: light)`).matches?`light`:`dark`,r=t=>{try{localStorage.setItem(e,t)}catch{}let r=t===`auto`?n():t;document.documentElement.dataset.theme=r,document.documentElement.dataset.hdTheme=r,i()},i=()=>{let e=t(),n=document.documentElement.dataset.theme===`dark`;for(let e of document.querySelectorAll(`[data-hd-theme-toggle]`))e.setAttribute(`aria-label`,n?`Passer au thème clair`:`Passer au thème sombre`);for(let t of document.querySelectorAll(`[data-hd-theme]`)){let n=t.dataset.hdTheme===e;t.setAttribute(`aria-checked`,String(n)),t.tabIndex=n?0:-1}};for(let e of document.querySelectorAll(`[data-hd-theme-toggle]`))e.addEventListener(`click`,()=>r(document.documentElement.dataset.theme===`dark`?`light`:`dark`));for(let e of document.querySelectorAll(`.hd-theme-choice`)){let t=[...e.querySelectorAll(`[data-hd-theme]`)];for(let e of t)e.addEventListener(`click`,()=>r(e.dataset.hdTheme));e.addEventListener(`keydown`,e=>{let n=e.key===`ArrowRight`||e.key===`ArrowDown`?1:e.key===`ArrowLeft`||e.key===`ArrowUp`?-1:0;if(!n)return;e.preventDefault();let i=t.findIndex(e=>e.getAttribute(`aria-checked`)===`true`),a=t[(i+n+t.length)%t.length];r(a.dataset.hdTheme),a.focus()})}matchMedia(`(prefers-color-scheme: light)`).addEventListener(`change`,()=>{t()===`auto`&&r(`auto`)}),i();</script></div></div></header><nav class="hd-sidebar" aria-label="Navigation de la documentation"><script type="module">for(let e of document.querySelectorAll(`[data-hgdc-version]`))e.addEventListener(`change`,()=>window.location.assign(e.value));var e=document.querySelector(`.sidebar-pane`);if(e){let t=`hd-sidebar-scroll`;try{let n=Number(sessionStorage.getItem(t));n&&(e.scrollTop=n)}catch{}let n=e.querySelector(`[aria-current="page"]`);if(n){let t=e.getBoundingClientRect(),r=n.getBoundingClientRect();(r.top<t.top||r.bottom>t.bottom)&&n.scrollIntoView({block:`center`})}addEventListener(`pagehide`,()=>{try{sessionStorage.setItem(t,String(e.scrollTop))}catch{}})}</script><hd-sidebar-pane popover="auto" id="starlight__sidebar" class="sidebar-pane"><div class="hd-sidebar__content"><div class="hd-mobile-only hd-sidebar-head"><a class="hd-brand" href="/docs/"><span class="hd-brand__name">Host</span></a><button type="button" class="hd-icon-button" popovertarget="starlight__sidebar" popovertargetaction="hide" aria-label="Fermer le menu"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M6 6l12 12M18 6 6 18"></path></svg></button></div><ul class="hd-nav hd-nav--depth-0"><li class="hd-nav__group"><p class="hd-nav__heading">Démarrer</p><ul class="hd-nav hd-nav--depth-1"><li><a href="/docs/" class="hd-nav__link"><span>Accueil</span></a></li><li><a href="/docs/demarrer/premier-site/" class="hd-nav__link"><span>Premier site</span></a></li><li><a href="/docs/demarrer/depuis-github/" class="hd-nav__link"><span>Depuis GitHub</span></a></li></ul></li><li class="hd-nav__group"><p class="hd-nav__heading">Guides</p><ul class="hd-nav hd-nav--depth-1"><li><a href="/docs/guides/cle-d-api/" class="hd-nav__link"><span>Clés d'API</span></a></li><li><a href="/docs/guides/deployer-depuis-github/" class="hd-nav__link"><span>Depuis GitHub</span></a></li><li><a href="/docs/guides/github-actions-sans-application/" class="hd-nav__link"><span>GitHub Actions sans l'app</span></a></li><li><a href="/docs/guides/deployer-un-framework/" class="hd-nav__link"><span>Un framework</span></a></li><li><a href="/docs/guides/site-statique/" class="hd-nav__link"><span>Site statique</span></a></li><li><a href="/docs/guides/monorepo/" class="hd-nav__link"><span>Monorepo</span></a></li><li><a href="/docs/guides/brancher-un-domaine/" class="hd-nav__link"><span>Brancher un domaine</span></a></li><li><a href="/docs/guides/variables-d-environnement/" class="hd-nav__link"><span>Variables</span></a></li><li><a href="/docs/guides/synchroniser-doppler/" class="hd-nav__link"><span>Doppler</span></a></li><li><a href="/docs/guides/revenir-en-arriere/" class="hd-nav__link"><span>Revenir en arrière</span></a></li><li><a href="/docs/guides/inviter-une-personne/" class="hd-nav__link" aria-current="page"><span>Inviter une personne</span></a></li><li><a href="/docs/guides/lire-les-logs/" class="hd-nav__link"><span>Lire les logs</span></a></li><li><a href="/docs/guides/migrer-depuis-vercel/" class="hd-nav__link"><span>Migrer depuis Vercel</span></a></li><li><a href="/docs/guides/depannage/" class="hd-nav__link"><span>Dépannage</span></a></li></ul></li><li class="hd-nav__group"><p class="hd-nav__heading">Référence</p><ul class="hd-nav hd-nav--depth-1"><li><a href="/docs/reference/cli/" class="hd-nav__link"><span>CLI</span></a></li><li><a href="/docs/reference/variables/" class="hd-nav__link"><span>Variables</span></a></li><li><a href="/docs/reference/domaines/" class="hd-nav__link"><span>Domaines</span></a></li><li><a href="/docs/reference/vercel-json/" class="hd-nav__link"><span>vercel.json</span></a></li><li><a href="/docs/reference/compatibilite/" class="hd-nav__link"><span>Compatibilité</span></a></li><li><a href="/docs/reference/limites/" class="hd-nav__link"><span>Limites</span></a></li><li><details class="hd-nav__fold" open><summary class="hd-nav__link"><span>API</span><svg class="hd-icon hd-nav__chevron" aria-hidden="true" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="m9 6 6 6-6 6"></path></svg></summary><ul class="hd-nav hd-nav--depth-2"><li><a href="/docs/reference/api/introduction/" class="hd-nav__link"><span>Introduction</span></a></li><li><a href="/docs/reference/api/erreurs/" class="hd-nav__link"><span>Erreurs</span></a></li><li><a href="/docs/reference/api/utilisateur/" class="hd-nav__link"><span>Utilisateur et organisation</span></a></li><li><a href="/docs/reference/api/projets/" class="hd-nav__link"><span>Projets</span></a></li><li><a href="/docs/reference/api/deploiements/" class="hd-nav__link"><span>Déploiements</span></a></li><li><a href="/docs/reference/api/fichiers/" class="hd-nav__link"><span>Envoyer un fichier</span></a></li><li><a href="/docs/reference/api/variables/" class="hd-nav__link"><span>Variables</span></a></li></ul></details></li></ul></li><li class="hd-nav__group"><p class="hd-nav__heading">Concepts</p><ul class="hd-nav hd-nav--depth-1"><li><a href="/docs/concepts/deploiements/" class="hd-nav__link"><span>Déploiements</span></a></li><li><a href="/docs/concepts/organisations-et-roles/" class="hd-nav__link"><span>Organisations et rôles</span></a></li><li><a href="/docs/concepts/secrets-et-coffre/" class="hd-nav__link"><span>Secrets et coffre</span></a></li><li><a href="/docs/concepts/preversion/" class="hd-nav__link"><span>Préversion</span></a></li><li><a href="/docs/concepts/confidentialite/" class="hd-nav__link"><span>Sécurité et confidentialité</span></a></li></ul></li></ul><div class="hd-mobile-only hd-sidebar-footer"><div class="hd-theme-choice" role="radiogroup" aria-label="Thème"><button type="button" role="radio" aria-checked="false" data-hd-theme="auto" aria-label="Système" title="Système"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M4 5h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1Zm4 15h8m-4-3v3"></path></svg></button><button type="button" role="radio" aria-checked="false" data-hd-theme="light" aria-label="Clair" title="Clair"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 16a4 4 0 1 0 0-8 4 4 0 0 0 0 8ZM12 2.5v2M12 19.5v2M4.6 4.6 6 6M18 18l1.4 1.4M2.5 12h2M19.5 12h2M4.6 19.4 6 18M18 6l1.4-1.4"></path></svg></button><button type="button" role="radio" aria-checked="false" data-hd-theme="dark" aria-label="Sombre" title="Sombre"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M20 14.5A8 8 0 1 1 9.5 4a6.5 6.5 0 0 0 10.5 10.5Z"></path></svg></button></div></div></div></hd-sidebar-pane></nav><div class="hd-main-frame main-frame"><script type="module">var e=document.getElementById(`starlight__sidebar`),t=e?.querySelector(`sl-sidebar-state-persist`),n=`sl-sidebar-state`,r=()=>{let r=[],i=t?.dataset.hash||``;try{let e=sessionStorage.getItem(n),t=JSON.parse(e||`{}`);Array.isArray(t.open)&&t.hash===i&&(r=t.open)}catch{}return{hash:i,open:r,scroll:e?.scrollTop||0}},i=e=>{try{sessionStorage.setItem(n,JSON.stringify(e))}catch{}},a=()=>i(r()),o=(e,t)=>{let n=r();n.open[t]=e,i(n)};t?.addEventListener(`click`,e=>{if(!(e.target instanceof Element))return;let t=e.target.closest(`summary`)?.closest(`details`);if(!t)return;let n=t.querySelector(`sl-sidebar-restore`),r=parseInt(n?.dataset.index||``);isNaN(r)||o(!t.open,r)}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&a()});</script><div class="hd-columns hd-columns--toc"><div class="hd-columns__main main-pane"><main data-pagefind-body class="astro-mxbotnn6" lang="fr-CH" dir="ltr"><div class="content-panel astro-64cflj2q"><div class="sl-container astro-64cflj2q"><div class="hd-title not-content"><p class="hd-eyebrow" data-pagefind-meta="section">Guides</p><div class="hd-title__row"><h1 id="_top">Inviter une personne dans une organisation</h1><div class="hd-page-actions" data-hgdc-skip data-pagefind-ignore><div class="hd-split"><button type="button" class="hd-split__main" data-hgdc-copy="/docs/guides/inviter-une-personne.md"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M9 9h10a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1V10a1 1 0 0 1 1-1Zm-4 6H4.5A1.5 1.5 0 0 1 3 13.5v-9A1.5 1.5 0 0 1 4.5 3h9A1.5 1.5 0 0 1 15 4.5V5"></path></svg><span data-label>Copier la page</span></button><details class="hd-menu"><summary class="hd-split__more" aria-label="Autres formats de la page"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="m6 9 6 6 6-6"></path></svg></summary><ul class="hd-menu__list"><li><button type="button" data-hgdc-copy-item><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M9 9h10a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1V10a1 1 0 0 1 1-1Zm-4 6H4.5A1.5 1.5 0 0 1 3 13.5v-9A1.5 1.5 0 0 1 4.5 3h9A1.5 1.5 0 0 1 15 4.5V5"></path></svg><span><strong>Copier la page</strong><small>En Markdown, pour un LLM</small></span></button></li><li><a href="/docs/guides/inviter-une-personne.md"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M4 6h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1Zm3 9V9l2.5 3L12 9v6m5-6v6m-2-2 2 2 2-2"></path></svg><span><strong>Voir en Markdown</strong><small>La page en texte brut</small></span></a></li><li><a data-hgdc-open="claude" href="https://claude.ai/new" target="_blank" rel="noopener"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M7 17 17 7M8 7h9v9"></path></svg><span><strong>Ouvrir dans Claude</strong><small>Poser une question sur cette page</small></span></a></li><li><a data-hgdc-open="chatgpt" href="https://chatgpt.com/" target="_blank" rel="noopener"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M7 17 17 7M8 7h9v9"></path></svg><span><strong>Ouvrir dans ChatGPT</strong><small>Poser une question sur cette page</small></span></a></li><li><a href="/docs/llms.txt"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8Zm0 0v5h5M9 13h6m-6 4h4"></path></svg><span><strong>llms.txt</strong><small>L'index de la doc pour les agents</small></span></a></li></ul></details></div><span class="sr-only" role="status" aria-live="polite" data-hgdc-copy-status></span></div></div><p class="hd-lead">Ajoute un collègue à ton organisation depuis Account, et choisis son rôle pour qu'il accède aux projets.</p></div><script type="module">var e=document.querySelector(`[data-hgdc-copy-status]`),t=document.querySelector(`[data-hgdc-copy]`);async function n(){if(!t)return;let n=t.querySelector(`[data-label]`),r=t=>{n.textContent=t,e&&(e.textContent=t),setTimeout(()=>n.textContent=`Copier la page`,2e3)};try{let e=await fetch(t.dataset.hgdcCopy);if(!e.ok)throw Error(String(e.status));await navigator.clipboard.writeText(await e.text()),r(`Page copiée`)}catch{r(`Copie impossible`)}}if(t?.addEventListener(`click`,()=>void n()),document.querySelector(`[data-hgdc-copy-item]`)?.addEventListener(`click`,()=>{document.querySelector(`.hd-menu`).open=!1,n()}),t){let e=`Lis ${new URL(t.dataset.hgdcCopy,location.href).href} et réponds à mes questions sur cette page.`;for(let t of document.querySelectorAll(`[data-hgdc-open]`))t.href=`${t.dataset.hgdcOpen===`claude`?`https://claude.ai/new`:`https://chatgpt.com/`}?q=${encodeURIComponent(e)}`}for(let e of document.querySelectorAll(`.hd-menu`))document.addEventListener(`click`,t=>{e.open&&!e.contains(t.target)&&(e.open=!1)}),e.addEventListener(`keydown`,t=>{t.key===`Escape`&&e.open&&(t.stopPropagation(),e.open=!1,e.querySelector(`summary`)?.focus())});</script></div></div><div class="content-panel astro-64cflj2q"><div class="sl-container astro-64cflj2q"><div class="sl-markdown-content"><p>Les membres d’une organisation se gèrent dans Account, pas dans Host. Ce guide invite une personne, puis vérifie qu’elle accède aux projets.</p>
|
|
17
|
-
<p><strong>Résultat attendu</strong> : la personne se connecte à Host, voit l’organisation et ses projets, avec le rôle que tu lui as donné.</p>
|
|
18
|
-
<p><strong>Avant de commencer</strong> : être propriétaire ou admin de l’organisation dans Account. Les rôles sont décrits dans <a href="/docs/concepts/organisations-et-roles/">Organisations et rôles</a>.</p>
|
|
19
|
-
<ol class="hgdc-steps"><li class="hgdc-step"><p class="hgdc-step__title">Invite depuis Account</p><div class="hgdc-step__body"><p>Ouvre la page de ton organisation dans <a href="https://account.hgdc.ch">Account</a>. Invite la personne par son adresse e-mail, et choisis son rôle : <strong>membre</strong>, <strong>admin</strong> ou <strong>propriétaire</strong>.</p><p><strong>Vérification</strong> : l’invitation apparaît dans la liste des invitations en attente d’Account.</p></div></li><li class="hgdc-step"><p class="hgdc-step__title">La personne se connecte</p><div class="hgdc-step__body"><p>La personne se connecte à Host avec <strong>Se connecter avec HGDC</strong>, avec la même adresse e-mail vérifiée. Son compte est lié à l’organisation, et ses projets restent en place.</p><p>Une personne qui n’a pas encore de compte demande d’abord un accès sur la page <strong>Demander un accès</strong> de Host. L’invitation suit.</p></div></li><li class="hgdc-step"><p class="hgdc-step__title">Vérifie l'accès</p><div class="hgdc-step__body"><p>Demande à la personne d’ouvrir son tableau de bord.</p><p><strong>Vérification</strong> : elle voit ton organisation dans le sélecteur de la barre latérale, et les projets qu’elle peut voir. Un membre n’a pas accès à l’onglet <strong>Clés d’API</strong>.</p></div></li></ol>
|
|
20
|
-
<h2 id="changer-un-rôle-ou-retirer-une-personne">Changer un rôle ou retirer une personne</h2>
|
|
21
|
-
<p>Modifie le rôle ou retire la personne dans Account. Host ne garde pas sa propre liste de membres : la liste affichée dans Host est une copie en lecture seule, mise à jour à la prochaine connexion de la personne.</p>
|
|
22
|
-
<p>Une session dure 7 jours au plus, sans prolongation. Un changement de rôle ou un retrait peut donc prendre effet jusqu’à la prochaine connexion, au plus tard à la fin de la session.</p>
|
|
23
|
-
<p>Les clés d’API créées par une personne cessent de fonctionner quand elle quitte l’organisation. Révoque-les si tu veux agir tout de suite. Voir <a href="/docs/guides/cle-d-api/">Créer et révoquer une clé d’API</a>.</p>
|
|
24
|
-
<h2 id="si-ça-ne-marche-pas">Si ça ne marche pas</h2>
|
|
25
|
-
<ul>
|
|
26
|
-
<li>L’organisation n’apparaît pas pour la personne : vérifie que l’adresse e-mail de l’invitation est la même que celle de son compte HGDC, et qu’elle est vérifiée.</li>
|
|
27
|
-
<li>La personne ne peut pas faire une action : son rôle ne le permet pas (voir le tableau des rôles). Vérifie son rôle dans Account.</li>
|
|
28
|
-
</ul></div><hgdc-feedback class="hgdc-feedback not-content" data-endpoint="https://docs.hgdc.ch/api/v1/feedback" data-project="js743wp3001k1jvrdad0fwcjx18gc789" data-pagefind-ignore="true"><div data-step="ask"><p class="hgdc-feedback__question">Cette page t'a aidé ?</p><div class="hgdc-feedback__choices"><button type="button" data-helpful="true"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M7 10v11M15 5.9 14 10h5.8a2 2 0 0 1 1.9 2.5l-2.3 7A2 2 0 0 1 17.5 21H4a1 1 0 0 1-1-1v-9a1 1 0 0 1 1-1h2.8a2 2 0 0 0 1.8-1.1L12 2a3.1 3.1 0 0 1 3 3.9Z"></path></svg>Oui</button><button type="button" data-helpful="false"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M17 14V3M9 18.1 10 14H4.2a2 2 0 0 1-1.9-2.5l2.3-7A2 2 0 0 1 6.5 3H20a1 1 0 0 1 1 1v9a1 1 0 0 1-1 1h-2.8a2 2 0 0 0-1.8 1.1L12 22a3.1 3.1 0 0 1-3-3.9Z"></path></svg>Non</button></div></div><form data-step="comment" hidden><label for="hgdc-feedback-comment">Qu'est-ce qui manquait ou pourrait être plus clair ? (facultatif)</label><textarea id="hgdc-feedback-comment" name="comment" rows="3" maxlength="1000"></textarea><div class="hgdc-feedback__choices"><button type="submit">Envoyer</button><button type="button" data-skip>Passer</button></div></form><p data-step="done" class="hgdc-feedback__done" role="status" hidden>Merci, c'est noté.</p></hgdc-feedback><nav class="hd-pagination not-content" aria-label="Pages voisines" data-pagefind-ignore><a class="hd-pagination__link" href="/docs/guides/revenir-en-arriere/" rel="prev"><span class="hd-pagination__hint"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="m15 6-6 6 6 6"></path></svg>Précédent</span><span class="hd-pagination__title">Revenir en arrière</span></a><a class="hd-pagination__link hd-pagination__link--next" href="/docs/guides/lire-les-logs/" rel="next"><span class="hd-pagination__hint">Suivant<svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="m9 6 6 6-6 6"></path></svg></span><span class="hd-pagination__title">Lire les logs</span></a></nav><script type="module" src="/docs/_astro/Footer.astro_astro_type_script_index_0_lang.DzCnn3OT.js"></script></div></div></main><form class="hd-askbar" data-askbar data-pagefind-ignore><label class="sr-only" for="hd-askbar-input">Pose une question à l'assistant</label><input id="hd-askbar-input" data-askbar-input type="text" maxlength="1000" placeholder="Pose une question…" autocomplete="off"><kbd class="hd-kbd" data-shortcut aria-hidden="true">Ctrl I</kbd><button type="submit" class="hd-send" aria-label="Envoyer la question"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 19V5m-6 6 6-6 6 6"></path></svg></button></form></div><aside class="hd-columns__toc" aria-label="Sur cette page"><div class="hd-toc-scroll"><starlight-toc data-min-h="2" data-max-h="3"><nav aria-labelledby="starlight__on-this-page"><h2 id="starlight__on-this-page">Sur cette page</h2><ul class="astro-jxyovztp" style="--depth: 0;"><li style="--depth: 0;" class="astro-jxyovztp"><a href="#_top" style="--depth: 0;" class="astro-jxyovztp"><span style="--depth: 0;" class="astro-jxyovztp">Vue d’ensemble</span></a></li><li style="--depth: 0;" class="astro-jxyovztp"><a href="#changer-un-rôle-ou-retirer-une-personne" style="--depth: 0;" class="astro-jxyovztp"><span style="--depth: 0;" class="astro-jxyovztp">Changer un rôle ou retirer une personne</span></a></li><li style="--depth: 0;" class="astro-jxyovztp"><a href="#si-ça-ne-marche-pas" style="--depth: 0;" class="astro-jxyovztp"><span style="--depth: 0;" class="astro-jxyovztp">Si ça ne marche pas</span></a></li></ul></nav></starlight-toc><script type="module">var e=`_top`,t=class extends HTMLElement{_current=this.querySelector(`a[aria-current="true"]`);minH=parseInt(this.dataset.minH||`2`,10);maxH=parseInt(this.dataset.maxH||`3`,10);tocHeadingSelector=`h1#${e},:where(${[...Array.from({length:1+this.maxH-this.minH}).map((e,t)=>`h${this.minH+t}`)].join()})[id]`;set current(e){e!==this._current&&(this._current&&this._current.removeAttribute(`aria-current`),e.setAttribute(`aria-current`,`true`),this._current=e)}onIdle=e=>(window.requestIdleCallback||(e=>setTimeout(e,1)))(e);constructor(){super(),this.onIdle(()=>this.init())}init=()=>{let t=[...this.querySelectorAll(`a`)],n=e=>e.matches(this.tocHeadingSelector),r=t=>{for(;t;){if(t.matches(`.sl-markdown-content, main > *`))return document.getElementById(e);if(n(t))return t;let r=t.querySelector(this.tocHeadingSelector);if(r)return r;let i=t.previousElementSibling;for(;i?.lastElementChild;)i=i.lastElementChild;t=i??t.parentElement}return null},i=e=>{for(let{isIntersecting:n,target:i}of e){if(!n)continue;let e=r(i);if(!e)continue;let a=t.find(t=>t.hash===`#`+encodeURIComponent(e.id));if(a){this.current=a;break}}},a=document.querySelectorAll([`main :where(${this.tocHeadingSelector})`,`main :where(${this.tocHeadingSelector}, .sl-heading-wrapper) ~ *:not(:has(${this.tocHeadingSelector}))`,`main .sl-markdown-content > *:not(:has(${this.tocHeadingSelector}))`,`main > *:not(:has(${this.tocHeadingSelector}))`].join()),o,s=()=>{o||(o=new IntersectionObserver(i,{rootMargin:this.getRootMargin()}),a.forEach(e=>o.observe(e)))};s();let c;window.addEventListener(`resize`,()=>{o&&=(o.disconnect(),void 0),clearTimeout(c),c=setTimeout(()=>this.onIdle(s),200)})};getRootMargin(){let e=(document.querySelector(`header`)?.getBoundingClientRect().height||0)+(this.querySelector(`summary`)?.getBoundingClientRect().height||0)+32;return`-${e}px 0% ${e+53-document.documentElement.clientHeight}px`}};customElements.define(`starlight-toc`,t);</script></div></aside></div><footer class="hd-site-footer" data-pagefind-ignore><div class="hd-site-footer__row"><a class="hd-brand hd-brand--footer" href="/docs/"><span class="hd-brand__mark"><img class="hd-brand__light" src="/docs/images/logo.svg" alt="" width="20" height="20" loading="lazy"><img class="hd-brand__dark" src="/docs/images/logo.svg" alt="" width="20" height="20" loading="lazy"></span><span class="hd-brand__name">Host</span></a></div><div class="hd-site-footer__row hd-site-footer__row--meta"><p>Ton site en ligne, déployé à chaque modification.</p><div class="hd-theme-choice" role="radiogroup" aria-label="Thème"><button type="button" role="radio" aria-checked="false" data-hd-theme="auto" aria-label="Système" title="Système"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M4 5h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1Zm4 15h8m-4-3v3"></path></svg></button><button type="button" role="radio" aria-checked="false" data-hd-theme="light" aria-label="Clair" title="Clair"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 16a4 4 0 1 0 0-8 4 4 0 0 0 0 8ZM12 2.5v2M12 19.5v2M4.6 4.6 6 6M18 18l1.4 1.4M2.5 12h2M19.5 12h2M4.6 19.4 6 18M18 6l1.4-1.4"></path></svg></button><button type="button" role="radio" aria-checked="false" data-hd-theme="dark" aria-label="Sombre" title="Sombre"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M20 14.5A8 8 0 1 1 9.5 4a6.5 6.5 0 0 0 10.5 10.5Z"></path></svg></button></div></div></footer></div><hgdc-assistant data-endpoint="https://docs.hgdc.ch/api/v1/ask" data-project="js743wp3001k1jvrdad0fwcjx18gc789" data-name="Host"><section class="hgdc-panel" role="dialog" aria-modal="false" aria-labelledby="hgdc-assistant-title" data-panel inert><div class="hgdc-panel__grip" aria-hidden="true"></div><header class="hgdc-panel__header"><h2 id="hgdc-assistant-title"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3.5 13.6 8a3 3 0 0 0 1.9 1.9L20 11.5l-4.5 1.6a3 3 0 0 0-1.9 1.9L12 19.5 10.4 15a3 3 0 0 0-1.9-1.9L4 11.5 8.5 9.9A3 3 0 0 0 10.4 8ZM19 3v3M20.5 4.5h-3"></path></svg>Assistant</h2><div class="hgdc-panel__tools"><button type="button" class="hd-icon-button" data-reset aria-label="Nouvelle conversation" title="Nouvelle conversation" hidden><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M4 12a8 8 0 1 0 2.3-5.7M4 4v4h4"></path></svg></button><button type="button" class="hd-icon-button" data-close aria-label="Fermer l'assistant" title="Fermer (Échap)"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M6 6l12 12M18 6 6 18"></path></svg></button></div></header><div class="hgdc-panel__body" data-log aria-live="polite"><div class="hgdc-empty" data-empty><p class="hgdc-empty__title">Pose ta question sur Host.</p><p>Je cherche dans les pages de cette documentation et je cite mes sources. Si la réponse n'y est pas, je te le dis.</p></div></div><form class="hgdc-panel__form" data-form><label class="sr-only" for="hgdc-question">Ta question</label><textarea id="hgdc-question" data-input rows="1" maxlength="1000" placeholder="Pose une question…" required></textarea><button type="submit" class="hd-send" data-send aria-label="Envoyer la question"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 19V5m-6 6 6-6 6 6"></path></svg></button></form><p class="hgdc-panel__note">Réponses générées par IA (Claude, d'Anthropic), à vérifier. Les questions sont conservées 90 jours pour améliorer cette documentation.</p></section></hgdc-assistant><script type="module" src="/docs/_astro/Assistant.astro_astro_type_script_index_0_lang.C1pz7yK1.js"></script></div><script type="module">var e=class extends HTMLElement{connectedCallback(){let e=matchMedia(`(min-width: 50em)`),t=()=>{e.matches&&this.matches(`:popover-open`)&&this.hidePopover(),this.popover=e.matches?null:`auto`};t(),e.addEventListener(`change`,t),this.addEventListener(`toggle`,e=>{let t=e.newState===`open`;for(let e of document.querySelectorAll(`.hd-main-frame, .hd-askbar`))e.toggleAttribute(`inert`,t);document.documentElement.toggleAttribute(`data-hd-menu`,t)}),this.addEventListener(`click`,e=>{e.target.closest(`a`)&&this.matches(`:popover-open`)&&this.hidePopover()})}};customElements.define(`hd-sidebar-pane`,e);</script></body></html>
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
# Inviter une personne dans une organisation
|
|
2
|
-
|
|
3
|
-
Les membres d’une organisation se gèrent dans Account, pas dans Host. Ce guide invite une personne, puis vérifie qu’elle accède aux projets.
|
|
4
|
-
|
|
5
|
-
**Résultat attendu** : la personne se connecte à Host, voit l’organisation et ses projets, avec le rôle que tu lui as donné.
|
|
6
|
-
|
|
7
|
-
**Avant de commencer** : être propriétaire ou admin de l’organisation dans Account. Les rôles sont décrits dans [Organisations et rôles](/docs/concepts/organisations-et-roles/).
|
|
8
|
-
|
|
9
|
-
1. **Invite depuis Account**
|
|
10
|
-
|
|
11
|
-
Ouvre la page de ton organisation dans [Account](https://account.hgdc.ch). Invite la personne par son adresse e-mail, et choisis son rôle : **membre**, **admin** ou **propriétaire**.
|
|
12
|
-
|
|
13
|
-
**Vérification** : l’invitation apparaît dans la liste des invitations en attente d’Account.
|
|
14
|
-
|
|
15
|
-
2. **La personne se connecte**
|
|
16
|
-
|
|
17
|
-
La personne se connecte à Host avec **Se connecter avec HGDC**, avec la même adresse e-mail vérifiée. Son compte est lié à l’organisation, et ses projets restent en place.
|
|
18
|
-
|
|
19
|
-
Une personne qui n’a pas encore de compte demande d’abord un accès sur la page **Demander un accès** de Host. L’invitation suit.
|
|
20
|
-
|
|
21
|
-
3. **Vérifie l'accès**
|
|
22
|
-
|
|
23
|
-
Demande à la personne d’ouvrir son tableau de bord.
|
|
24
|
-
|
|
25
|
-
**Vérification** : elle voit ton organisation dans le sélecteur de la barre latérale, et les projets qu’elle peut voir. Un membre n’a pas accès à l’onglet **Clés d’API**.
|
|
26
|
-
|
|
27
|
-
## Changer un rôle ou retirer une personne
|
|
28
|
-
|
|
29
|
-
Modifie le rôle ou retire la personne dans Account. Host ne garde pas sa propre liste de membres : la liste affichée dans Host est une copie en lecture seule, mise à jour à la prochaine connexion de la personne.
|
|
30
|
-
|
|
31
|
-
Une session dure 7 jours au plus, sans prolongation. Un changement de rôle ou un retrait peut donc prendre effet jusqu’à la prochaine connexion, au plus tard à la fin de la session.
|
|
32
|
-
|
|
33
|
-
Les clés d’API créées par une personne cessent de fonctionner quand elle quitte l’organisation. Révoque-les si tu veux agir tout de suite. Voir [Créer et révoquer une clé d’API](/docs/guides/cle-d-api/).
|
|
34
|
-
|
|
35
|
-
## Si ça ne marche pas
|
|
36
|
-
|
|
37
|
-
- L’organisation n’apparaît pas pour la personne : vérifie que l’adresse e-mail de l’invitation est la même que celle de son compte HGDC, et qu’elle est vérifiée.
|
|
38
|
-
- La personne ne peut pas faire une action : son rôle ne le permet pas (voir le tableau des rôles). Vérifie son rôle dans Account.
|