diff --git a/docs/divers/devops/hugo/dokku_workflow.md b/docs/divers/devops/hugo/dokku_workflow.md new file mode 100644 index 00000000..46509e1f --- /dev/null +++ b/docs/divers/devops/hugo/dokku_workflow.md @@ -0,0 +1,200 @@ +# Workflow pour Hugo avec Dokku + +Ce tutoriel présente un workflow complet pour développer un site Web avec Hugo, +en isolant: + - le développement local (avec dokku) + - le déploiement du site en développement (avec Gitlab Pages) + - le déploiement sur un serveur multi-sites (avec dokku) + +| | local | dev | prod | +|------|--------|-------|-------| +| deploy tool | dokku | gitlab Pages | dokku | +| deploy Url | localhost | gitlab.io | my.server | +| root project | project/public | project | project/public | + +## Préparation dans Gitlab + +Créez deux projets: + - `` : contient le projet hugo + - `` : submodule du 1er, contient le site généré. + +Le projet appelé sera déployé avec Gitlab Pages. +Pour choisir le nom du projet en prenant en compte la manière dont Gitlab construit l'Url de déploiement, +[consultez la documentation](https://docs.gitlab.com/ee/user/project/pages/getting_started_part_one.html) + + +## Déploiement local + +### Mise en place du projet + +#### Clonez le projet Hugo + +Si vous n'avez pas encore de projet Hugo, vous pouvez vous reporter au [guide de démarrage](create_website.md) + +Choisissez de remplacer `` par le nom que vous voudrez voir apparaître en première partie de +votre nom de domaine. +Par exemple, si vous remplacez `` par `moncv`, votre projet sera déployé sur `moncv.domain.org` + +``` +git clone https://gitlab.com/ +cd +``` + +#### Créez la branche `local` +``` +git checkout -b local +``` + +#### Modifiez `config.toml` +``` +baseurl = "http://.domain.local> +``` + +### Déploiement + +Pour le déploiement local vous avez deux options : +- [Option 1: déploiement avec Hugo](../deploy_website/#deploiement-local) +- [Option 2: déploiement avec Dokku (recommandé)](#deploiement-avec-dokku) + +#### Déploiement avec Dokku + +##### Installation de Dokku + +Suivez [ce guide](../dokku.md) et n'oubliez pas de [configurer le DNS](../dokku/#using_localhost). + + +##### Appelez le buildpack Hugo + +Créez le fichier `.buildpacks` à la racine du projet + +!!! note ".buildpacks" + https://github.com/garagenum/heroku-buildpack-hugo + +##### Créez une appli dokku pour le 1er déploiement +``` +dokku apps:create +``` + +##### Déployez avec dokku +``` +git remote add dokku dokku@: +git add config.toml .buildpacks +git commit -m "" +sudo git push dokku local:master +``` + +Vous pouvez voir votre site web à l'url `http:///public` + +## Déploiement du site de dev sur le web avec Gitlab Pages + +Gitlab Pages va nous permettre de mettre en ligne un site en développement, uniquement accessible avec authentification, pour le montrer aux points d'étape. + +### Mise en place du projet + +#### Créez la branche `dev` +``` +git checkout -b dev +``` + +#### Modifiez `config.toml` +``` +baseurl = "http://.gitlab.io/ +``` + +#### Créez le fichier `.gitlab-ci.yml` + +!!!note `.gitlab-ci.yml + # All available Hugo versions are listed here: https://gitlab.com/pages/hugo/container_registry + image: registry.gitlab.com/pages/hugo:latest + + pages: + script: + - hugo + only: + - dev + +### Déploiement en ligne + +``` +git add .gitlab-ci.yml config.toml +git commit -m "" +git push origin master +``` + +## Déploiement du site en production sur un serveur avec Dokku + +### Configurer le dossier `public` pour les futurs déploiements + +Si le déploiement local s'est bien déroulé, hugo a compilé le site et le dossier `public` a été créé. + +Nous allons utilise ce dossier `public` comme module de notre projet, et c'est ce sous-projet que nous déploierons avec Dokku. + +``` +cd public +git init +#git remote add origin git@gitlab.com:.git +git remote add dokku dokku@: +touch index.php composer.json +``` + +!!!note "Modifiez les deux fichiers créés : " + === "index.php" + ```php + + ``` + === "composer.json" + ```json + { + "name": "", + "description": "" + } + ``` + +### Premier déploiement + +``` +git add * +git commit -m "first production deployement" +sudo git push dokku master +``` + +## Ajout des modifications depuis `local` ou `dev` + +### Retour à la racine du projet +``` +cd .. +``` + +### Intégration des changements +``` +git checkout master +git pull +git checkout dokku +git merge master +# A corriger : git submodule add dokku@: public +``` + +### Déploiement +``` +cd public +git add -A +git commit -m "some modifications" +sudo git push dokku master +``` + +``` +``` +``` +``` +``` +``` +``` +``` +``` +``` +``` +``` +``` +``` +``` +``` diff --git a/docs/divers/devops/hugo/index.md b/docs/divers/devops/hugo/index.md index 0da4a348..3392ecca 100644 --- a/docs/divers/devops/hugo/index.md +++ b/docs/divers/devops/hugo/index.md @@ -10,6 +10,9 @@ Vous réaliserez un site **from scratch** en suivant ces étapes : - [Ajouter des sections](add_sections.md) - [Ajouter une collection d'articles](add_list.md) +Pour un déploiement en production, vous pouvez mettre en place un workflow complet avec dokku : + - [Workflow de production avec Dokku](dokku_workflow.md) + D'autres ressources pour aller plus loin : - - [Course on mikedane.com](https://www.mikedane.com/static-site-generators/hugo/) - - [Official doc](https://gohugo.io/documentation/) \ No newline at end of file + - [Course on mikedane.com](https://www.mikedane.com/static-site-generators/hugo/) + - [Official doc](https://gohugo.io/documentation/) \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 808c8e77..c0ae2e21 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -12,6 +12,12 @@ plugins: #- markdownmermaid - search: min_search_length: 2 + - add-number: + order: 2 + excludes: + - divers/cmd/ + includes: + - divers/cmd/screen - git-authors - git-revision-date #- mermaid2: @@ -102,11 +108,13 @@ nav: - "DevOps": - divers/devops/index.md - "Hugo": - - "Hugo Website": divers/devops/hugo/index.md + - "Introduction": divers/devops/hugo/index.md - "Installer Hugo": divers/devops/hugo/install_hugo.md - "Créer un site": divers/devops/hugo/create_website.md + - "Déployer le site": divers/devops/hugo/deploy_website.md - "Utiliser les templates": divers/devops/hugo/hugo_from_templates.md - "*Build from scratch*": divers/devops/hugo/hugo_from_scratch.md + - "Production Workflow": divers/devops/hugo/dokku_workflow.md - "Keycloak SSO": - divers/devops/sso/index.md - divers/devops/sso/sso-ldap.md