vidéo peertube - vidéo youtube - dépôt git
Déployer un blog avec Hakyll, Gitlab-ci, Nix
Gestion de code source
- logiciels de gestions de versions :
- journalisation, travail collaboratif…
- git, mercurial, svn, cvs…
- forges logicielles :
- application web : accès git (fichiers, historique des versions…), tickets…
- github, gitlab, gogs…
- services d’hébergement de code source :
- serveurs de données (logiciel de gestion de versions + forge logicielle)
- github.com (git + github), gitlab.com (git + gitlab), framagit.org (git + gitlab)…
Intégration continue, déploiement
intégration continue : configuration, compilation, tests…
déploiement : packages, machines virtuelles, images docker, github/gitlab pages…
outils classiques : travis-ci, gitlab-ci…
déclenchement automatique (
git push
)
Exemple de blog avec Hakyll
Hakyll : générateur de blog statique
fichiers de blog (markdown, images, css…)
application Haskell (
site.hs
) :
-- ...
main :: IO ()
main = hakyllWith config $ do
-- ...
match "posts/*/*-README.md" $ do
route $ setExtension "html"
compile $ pandocCompiler
>>= loadAndApplyTemplate "templates/default.html" postCtx
>>= relativizeUrls
match "index.html" $ do
route idRoute
compile $ do
posts <- recentFirst =<< loadAll "posts/*/*"
let indexCtx =
listField "posts" postCtx (return posts) `mappend`
defaultContext
getResourceBody
>>= applyAsTemplate indexCtx
>>= loadAndApplyTemplate "templates/default.html" indexCtx
>>= relativizeUrls
- configuration cabal (
site.cabal
) :
name: site
version: 0.1
build-type: Simple
license: MIT
cabal-version: >= 1.10
executable site
main-is: site.hs
build-depends: base, hakyll
ghc-options: -threaded
default-language: Haskell2010
exécution avec Stack : fichier
stack.yaml
+stack exec site build
exécution avec Nix : fichier
default.nix
+nix-shell --run "cabal run site build"
Exemple de déploiement avec Gitlab CI et Stack
intégration continue et déploiement à partir de l’image docker
haskell:8
fichier de configuration
.gitlab-ci.yml
:
image: haskell:8
pages:
cache:
paths:
- .stack
before_script:
- apt-get update -yq
- apt-get install -yq unzip
- export STACK_ROOT=`pwd`/.stack
- stack install --only-dependencies
- stack build
script:
- stack exec site build
artifacts:
paths:
- public
only:
- master
Exemple de déploiement avec Gitlab CI et Nix
intégration continue et déploiement à partir de l’image docker
nixos/nix
fichier de configuration
.gitlab-ci.yml
: