mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-14 20:37:55 -05:00
9aec42c545
7ef2dbce4 Cleanup RSS templates page 0e23d5e1a Fix multilingual permalinks example b3c342b07 Update faq.md f73109ae2 Regen CLI docs ac6ee2027 Fix minor nitpicks (#2233) f24fcffe1 Mention the Giscus comments system (#2234) 418fa981e Remove reference to Ghost migration tool 94a76df29 Adjust table layout e263ad6b9 content: Fix typos fd1eb26b5 Update featured image in digital.gov showcase d3d946555 Correct directory description bbe1dff56 Use sentence case for heading acfa0be54 Add hosting provider fetch depth to GitInfo variables page d78c427e6 Fix typo 751517fea Fix spelling mistake cdd77aa9a Update content for v0.118.0 c77d09b1c Format netlify.toml d5a6c4f51 netlify: Hugo 0.118.1 8c717301a Revert "netlify: Hugo 0.118.0" a9b2ef5c2 netlify: Hugo 0.118.0 61959591c Merge commit '77b976dd92b4f66657d83d875aef0c617df492d9' 95f2029a1 docs: Regen docs helper fd57ba960 markup/goldmark: Add CJK extension 2bfb3bf4c docshelper: Improve template lookup order descriptions b0baa890e cache: Hide IsResourceDir from the exported config b4b071ea0 docs: Replace docs.json with docs.yaml git-subtree-dir: docs git-subtree-split: 7ef2dbce4ad728d32c218761c6cfbe2f58f8da16
111 lines
3.4 KiB
Markdown
111 lines
3.4 KiB
Markdown
---
|
|
title: Host on Firebase
|
|
description: You can use Firebase's free tier to host your static website; this also gives you access to Firebase's NOSQL API.
|
|
categories: [hosting and deployment]
|
|
keywords: [hosting,firebase]
|
|
menu:
|
|
docs:
|
|
parent: hosting-and-deployment
|
|
toc: true
|
|
---
|
|
|
|
## Assumptions
|
|
|
|
1. You have an account with [Firebase][signup]. (If you don't, you can sign up for free using your Google account.)
|
|
2. You have completed the [Quick Start] or have a completed Hugo website ready for deployment.
|
|
|
|
## Initial setup
|
|
|
|
Go to the [Firebase console][console] and create a new project (unless you already have a project). You will need to globally install `firebase-tools` (node.js):
|
|
|
|
```txt
|
|
npm install -g firebase-tools
|
|
```
|
|
|
|
Log in to Firebase (setup on your local machine) using `firebase login`, which opens a browser where you can select your account. Use `firebase logout` in case you are already logged in but to the wrong account.
|
|
|
|
|
|
```txt
|
|
firebase login
|
|
```
|
|
|
|
In the root of your Hugo project, initialize the Firebase project with the `firebase init` command:
|
|
|
|
```txt
|
|
firebase init
|
|
```
|
|
|
|
From here:
|
|
|
|
1. Choose Hosting in the feature question
|
|
2. Choose the project you just set up
|
|
3. Accept the default for your database rules file
|
|
4. Accept the default for the publish directory, which is `public`
|
|
5. Choose "No" in the question if you are deploying a single-page app
|
|
|
|
## Using Firebase & GitHub CI/CD
|
|
|
|
In new versions of Firebase, some other questions apply:
|
|
|
|
6. Set up automatic builds and deploys with GitHub?
|
|
|
|
Here you will be redirected to login in your GitHub account to get permissions. Confirm.
|
|
|
|
7. For which GitHub repository would you like to set up a GitHub workflow? (format: user/repository)
|
|
|
|
Include the repository you will use in the format above (Account/Repo)
|
|
Firebase script with retrieve credentials, create a service account you can later manage in your GitHub settings.
|
|
|
|
8. Set up the workflow to run a build script before every deploy?
|
|
|
|
Here is your opportunity to include some commands before you run the deploy.
|
|
|
|
9. Set up automatic deployment to your site's live channel when a PR is merged?
|
|
|
|
You can let in the default option (main)
|
|
|
|
After that Firebase has been set in your project with CI/CD. After that run:
|
|
|
|
```
|
|
hugo && firebase deploy
|
|
```
|
|
|
|
With this you will have the app initialized manually. After that you can manage and fix your GitHub workflow from: https://github.com/your-account/your-repo/actions
|
|
|
|
Don't forget to update your static pages before push!
|
|
|
|
## Manual deploy
|
|
|
|
To deploy your Hugo site, execute the `firebase deploy` command, and your site will be up in no time:
|
|
|
|
```txt
|
|
hugo && firebase deploy
|
|
```
|
|
|
|
## CI setup (other tools)
|
|
|
|
You can generate a deploy token using
|
|
|
|
```txt
|
|
firebase login:ci
|
|
```
|
|
|
|
You can also set up your CI and add the token to a private variable like `$FIREBASE_DEPLOY_TOKEN`.
|
|
|
|
{{% note %}}
|
|
This is a private secret and it should not appear in a public repository. Make sure you understand your chosen CI and that it's not visible to others.
|
|
{{% /note %}}
|
|
|
|
You can then add a step in your build to do the deployment using the token:
|
|
|
|
```txt
|
|
firebase deploy --token $FIREBASE_DEPLOY_TOKEN
|
|
```
|
|
|
|
## Reference links
|
|
|
|
* [Firebase CLI Reference](https://firebase.google.com/docs/cli/#administrative_commands)
|
|
|
|
[console]: https://console.firebase.google.com/
|
|
[Quick Start]: /getting-started/quick-start/
|
|
[signup]: https://console.firebase.google.com/
|