generated from makary/foam-template
224 lines
6.1 KiB
Markdown
224 lines
6.1 KiB
Markdown
# GitLab Pages
|
|
|
|
You don't have to use GitHub to serve Foam pages. You can also use GitLab.
|
|
|
|
Gitlab pages can be kept private for private repo, so that your notes are still private.
|
|
|
|
## Setup a project
|
|
|
|
### Generate the directory from GitHub
|
|
|
|
Generate a solution using the [Foam template](https://github.com/foambubble/foam-template).
|
|
|
|
Change the remote to GitLab, or copy all the files into a new GitLab repo
|
|
|
|
## Publishing pages with Gatsby
|
|
|
|
### Setup the Gatsby config
|
|
|
|
Add a .gatsby-config.js file where:
|
|
|
|
* `$REPO_NAME` correspond to the name of your gtlab repo.
|
|
* `$USER_NAME` correspond to your gitlab username.
|
|
|
|
```js
|
|
const path = require("path");
|
|
const pathPrefix = `/$REPO_NAME`;
|
|
|
|
// Change me
|
|
const siteMetadata = {
|
|
title: "A title",
|
|
shortName: "A short name",
|
|
description: "",
|
|
imageUrl: "/graph-visualization.jpg",
|
|
siteUrl: "https://$USER_NAME.gitlab.io",
|
|
};
|
|
module.exports = {
|
|
siteMetadata,
|
|
pathPrefix,
|
|
flags: {
|
|
DEV_SSR: true,
|
|
},
|
|
plugins: [
|
|
`gatsby-plugin-sharp`,
|
|
{
|
|
resolve: "gatsby-theme-primer-wiki",
|
|
options: {
|
|
defaultColorMode: "night",
|
|
icon: "./path_to/logo.png",
|
|
sidebarComponents: ["tag", "category"],
|
|
nav: [
|
|
{
|
|
title: "Github",
|
|
url: "https://github.com/$USER_NAME/",
|
|
},
|
|
{
|
|
title: "Gitlab",
|
|
url: "https://gitlab.com/$USER_NAME/",
|
|
},
|
|
],
|
|
editUrl:
|
|
"https://gitlab.com/$USER_NAME/$REPO_NAME/tree/main/",
|
|
},
|
|
},
|
|
{
|
|
resolve: "gatsby-source-filesystem",
|
|
options: {
|
|
name: "content",
|
|
path: `${__dirname}`,
|
|
ignore: [`**/\.*/**/*`],
|
|
},
|
|
},
|
|
|
|
{
|
|
resolve: "gatsby-plugin-manifest",
|
|
options: {
|
|
name: siteMetadata.title,
|
|
short_name: siteMetadata.shortName,
|
|
start_url: pathPrefix,
|
|
background_color: `#f7f0eb`,
|
|
display: `standalone`,
|
|
icon: path.resolve(__dirname, "./path_to/logo.png"),
|
|
},
|
|
},
|
|
{
|
|
resolve: `gatsby-plugin-sitemap`,
|
|
},
|
|
{
|
|
resolve: "gatsby-plugin-robots-txt",
|
|
options: {
|
|
host: siteMetadata.siteUrl,
|
|
sitemap: `${siteMetadata.siteUrl}/sitemap/sitemap-index.xml`,
|
|
policy: [{ userAgent: "*", allow: "/" }],
|
|
},
|
|
},
|
|
],
|
|
};
|
|
```
|
|
|
|
And a `package.json` file containing:
|
|
|
|
```json
|
|
{
|
|
"private": true,
|
|
"name": "wiki",
|
|
"version": "1.0.0",
|
|
"license": "MIT",
|
|
"scripts": {
|
|
"develop": "gatsby develop -H 0.0.0.0",
|
|
"start": "gatsby develop -H 0.0.0.0",
|
|
"build": "gatsby build",
|
|
"clean": "gatsby clean",
|
|
"serve": "gatsby serve",
|
|
"test": "echo test"
|
|
},
|
|
"dependencies": {
|
|
"@primer/react": "^34.1.0",
|
|
"@primer/css": "^17.5.0",
|
|
"foam-cli": "^0.11.0",
|
|
"gatsby": "^3.12.0",
|
|
"gatsby-plugin-manifest": "^3.12.0",
|
|
"gatsby-plugin-robots-txt": "^1.6.9",
|
|
"gatsby-plugin-sitemap": "^5.4.0",
|
|
"gatsby-source-filesystem": "^3.12.0",
|
|
"gatsby-theme-primer-wiki": "^1.14.5",
|
|
"react": "^17.0.2",
|
|
"react-dom": "^17.0.2"
|
|
}
|
|
}
|
|
```
|
|
|
|
The theme will be based on [gatsby-theme-primer-wiki](https://github.com/theowenyoung/gatsby-theme-primer-wiki).
|
|
|
|
To test the theme locally first run `yarn install` and then use `gatsby develop` to serve the website.
|
|
See gatsby documentation for more details.
|
|
|
|
### Set-up the CI for deployment
|
|
|
|
Create a `.gitlab-ci.yml` file containing:
|
|
|
|
```yml
|
|
# To contribute improvements to CI/CD templates, please follow the Development guide at:
|
|
# https://docs.gitlab.com/ee/development/cicd/templates.html
|
|
# This specific template is located at:
|
|
# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Pages/Gatsby.gitlab-ci.yml
|
|
|
|
image: node:latest
|
|
|
|
stages:
|
|
- deploy
|
|
|
|
pages:
|
|
stage: deploy
|
|
# This folder is cached between builds
|
|
# https://docs.gitlab.com/ee/ci/yaml/index.html#cache
|
|
cache:
|
|
paths:
|
|
- node_modules/
|
|
# Enables git-lab CI caching. Both .cache and public must be cached, otherwise builds will fail.
|
|
- .cache/
|
|
- public/
|
|
script:
|
|
- yarn install
|
|
- ./node_modules/.bin/gatsby build --prefix-paths
|
|
artifacts:
|
|
paths:
|
|
- public
|
|
rules:
|
|
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
```
|
|
|
|
This pipeline will now serve your website on every push to the main branch of your project.
|
|
|
|
## Publish with Jekyll
|
|
|
|
### Add a _config.yaml
|
|
|
|
Add another file to the root directory (the one with `readme.md` in it) called `_config.yaml` (no extension)
|
|
|
|
```yaml
|
|
title: My Awesome Foam Project
|
|
baseurl: "" # the subpath of your site, e.g. /blog
|
|
url: "/" # the base hostname & protocol for your site
|
|
theme: jekyll-theme-minimal
|
|
plugins:
|
|
- jekyll-optional-front-matter
|
|
optional_front_matter:
|
|
remove_originals: true
|
|
defaults:
|
|
-
|
|
scope:
|
|
path: "" # we need to add this to properly render layouts
|
|
values:
|
|
layout: "default"
|
|
```
|
|
|
|
You can choose a theme if you want from places like [Jekyll Themes](https://jekyllthemes.io/)
|
|
|
|
### Add a Gemlock file
|
|
|
|
Add another file to the root directory (the one with `readme.md` in it) called `Gemfile` (no extension)
|
|
|
|
```ruby
|
|
source "https://rubygems.org"
|
|
|
|
gem "jekyll"
|
|
gem "jekyll-theme-minimal"
|
|
gem "jekyll-optional-front-matter"
|
|
```
|
|
|
|
Commit the file and push it to gitlab.
|
|
|
|
### Setup CI/CD
|
|
|
|
1. From the project home in GitLab click `Set up CI/CD`
|
|
2. Choose `Jekyll` as your template from the template dropdown
|
|
3. Click `commit`
|
|
4. Now when you go to CI / CD > Pipelines, you should see the code running
|
|
|
|
### Troubleshooting
|
|
|
|
- *Could not locate Gemfile* - You didn't follow the steps above to [Add a Gemlock file](#add-a-gemlock-file)
|
|
- *Conversion error: Jekyll::Converters::Scss encountered an error while converting* You need to reference a theme.
|
|
- *Pages are running in CI/CD, but I only ever see `test`, and never deploy* - Perhaps you've renamed the main branch (from master) - check the settings in `.gitlab-ci.yml` and ensure the deploy command is running to the branch you expect it to.
|
|
- *I deployed, but my .msd files don't seem to be being converted into .html files* - You need a gem that GitHub installs by default - check `gem "jekyll-optional-front-matter"` appears in the `Gemfile`
|