* GitLab CI configuration Here is the manually filtered list of org and md files that need to be exported to html with the gitlab pages CI mechanism. Have a look at file:html_src_files.lst to know which files are exported. Here is the yaml file used for CI. All the work is done in a single perl script. #+BEGIN_SRC yaml :tangle .gitlab-ci.yml image: brospars/pandoc-gitlab-ci:latest pages: stage: deploy script: - pandoc --version # - pandoc --help # - pandoc --list-input-formats # Broken as pandoc dates from 2013 on this image! :( - for file in `cat html_src_files.lst | sed 's/#.*//g' `; do bin/pandoc_fixer.pl ${file}; echo "Creating" public/`dirname ${file}`; mkdir -p public/`dirname ${file}`; mv ${file%.*}.html public/`dirname ${file}`/; done - cat html_src_files.lst | sed -e 's|\.md |.html |' -e 's|\.org |\.html |' -e 's|^./\([^ ]*\) *# *\([^ ]*\)|- [[./\1]] (\2)|' > index.org - pandoc -s -f org -t html -o public/index.html index.org artifacts: paths: - public only: - master #+END_SRC * Update script =html_src_files.lst= Once the content of the MOOC has been exported from FUN into =/tmp/course/=: #+begin_src shell :results output :exports both for file in `cat html_src_files.lst | sed -e 's/#.*//g'`; do FILE=`echo $file | sed -e 's|^\./||' -e 's|.org$||' -e 's|.md$||'` URL=`grep -l "gitlabpages.*$FILE" /tmp/course/html/*.html | sed -e 's|.html$||' -e 's|/tmp/course/html/|https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/|'` echo "$file # $URL" done #+end_src #+RESULTS: #+begin_example ./module1/ressources/introduction_to_markdown_fr.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/ecbcbd8bfafd48e9a912f66237b76c92 ./module1/ressources/introduction_to_markdown.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/ecbcbd8bfafd48e9a912f66237b76c92 ./module1/ressources/sequence1_fr.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/9719a1f5b81a4f2d89c27e54ce81f498 ./module1/ressources/sequence2_fr.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/565a72fe3c8b464f8ec3e31b56cd4c57 ./module1/ressources/sequence3_fr.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/d85eb783ff884ff8b1306b680326b198 ./module1/ressources/sequence5_fr.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/c96bfaf3804847a38d2a8850ee0baf54 ./module1/ressources/sequence1.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/9719a1f5b81a4f2d89c27e54ce81f498 ./module1/ressources/sequence2.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/565a72fe3c8b464f8ec3e31b56cd4c57 ./module2/ressources/maintaining_a_journal.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/0af0b6bf03194c1bb2798c29d7375a76 ./module2/ressources/maintaining_a_journal_fr.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/0af0b6bf03194c1bb2798c29d7375a76 ./module2/ressources/jupyter.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/8dcce91be83c4ece834abfa98b8bbfb1 ./module2/ressources/jupyter_fr.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/8dcce91be83c4ece834abfa98b8bbfb1 ./module2/ressources/rstudio.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/09d339f009cd4b45a468583ab7730221 ./module2/ressources/rstudio_fr.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/09d339f009cd4b45a468583ab7730221 ./module2/ressources/gitlab.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/448cd6f9018545d1a67405551add6fda ./module2/ressources/gitlab_fr.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/448cd6f9018545d1a67405551add6fda ./module2/ressources/emacs_orgmode.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/954f94ce4f9a4d858d47b41793cc96c8 ./module2/ressources/emacs_orgmode_fr.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/954f94ce4f9a4d858d47b41793cc96c8 ./module2/ressources/sequence6_examples/README.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/827b36e10ddd49239f1c62cc1903951a ./module2/ressources/sequence6_examples/README_fr.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/827b36e10ddd49239f1c62cc1903951a ./module2/exo4/stat_activity.org # ./module2/slides/ressources.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/36723edefc72488ab44e269501cfc9f8 ./module2/slides/ressources_fr.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/36723edefc72488ab44e269501cfc9f8 ./module3/ressources/iso_date_format.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/316fc24edc1b44278ada4ca531c705be ./module3/ressources/iso_date_format_fr.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/316fc24edc1b44278ada4ca531c705be ./module3/ressources/influenza-like-illness-analysis-orgmode+R.org # ./module3/ressources/influenza-like-illness-analysis-orgmode+Lisp+Python+R.org # ./module3/ressources/influenza-like-illness-analysis-orgmode.org # ./module3/ressources/analyse-syndrome-grippal-orgmode.org # ./module3/ressources/analyse-syndrome-grippal-orgmode+R.org # ./module3/ressources/analyse-syndrome-grippal-orgmode+Lisp+Python+R.org # ./module4/ressources/resources_refs.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/3c3c8cb2160d44e09a087b825beb92b8 ./module4/ressources/resources_refs_fr.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/3c3c8cb2160d44e09a087b825beb92b8 ./module4/ressources/exo1.org # ./module4/ressources/exo2.org # ./module4/ressources/exo3.org # ./module4/ressources/resources_environment.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/4be922aa6b8c471ab1addcdbddb4e487 ./module4/ressources/resources_environment_fr.org # https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/4be922aa6b8c471ab1addcdbddb4e487 ./documents/notebooks/notebook_RStudio_SASmarkdown.md # ./documents/tuto_git_gtlab/tuto_git_gitlab.md # ./documents/tuto_rstudio_gitlab/tuto_rstudio_gitlab.md # ./documents/tuto_magit/tuto_magit.md # ./documents/tuto_emacs_windows/tuto_emacs_windows.md # ./documents/tuto_jupyter_windows/tuto_jupyter_windows.md # #+end_example * Local Testing Having to go through a commit/push all the time to check whether it works or not is a pain. Here a simple mechanism that allows to test the CI script locally. #+begin_src perl :results output :file gitlab-ci.sh :exports both open INPUT, ".gitlab-ci.yml"; my($line); my($script_found)=0; while(defined($line=)) { if($line=~/\s*script:/) { $script_found=1; next;} if($line=~/\s*artifacts:/) { $script_found=0; } if($script_found) { if($line =~ /^\s*#\s/) { next; } # if($line =~ /mv.*public/) { next; } $line =~ s/^\s*-\s//g; print($line); } } #+end_src #+RESULTS: [[file:gitlab-ci.sh]] #+begin_src shell :results output :exports both chmod +x ./gitlab-ci.sh ./gitlab-ci.sh #+end_src #+RESULTS: #+begin_example pandoc 2.2.1 Compiled with pandoc-types 1.17.5.1, texmath 0.11.1, skylighting 0.7.5 Default user data directory: /home/alegrand/.pandoc Copyright (C) 2006-2018 John MacFarlane Web: http://pandoc.org This is free software; see the source for copying conditions. There is no warranty, not even for merchantability or fitness for a particular purpose. Exporting ./module2/ressources/maintaining_a_journal.org Creating public/./module2/ressources Exporting ./module2/ressources/jupyter_fr.org Creating public/./module2/ressources Exporting ./module2/ressources/rstudio_fr.org Creating public/./module2/ressources Exporting ./module2/ressources/gitlab_fr.org Creating public/./module2/ressources Exporting ./module2/ressources/emacs_orgmode_fr.org Creating public/./module2/ressources Exporting ./module2/ressources/jupyter.org Creating public/./module2/ressources Exporting ./module2/ressources/emacs_orgmode.org Creating public/./module2/ressources Exporting ./module2/ressources/maintaining_a_journal_fr.org Creating public/./module2/ressources Exporting ./module2/ressources/rstudio.org Creating public/./module2/ressources Exporting ./module2/ressources/gitlab.org Creating public/./module2/ressources Exporting ./module2/ressources/orgmode_examples/README.org Creating public/./module2/ressources/orgmode_examples Exporting ./module2/ressources/orgmode_examples/README_fr.org Creating public/./module2/ressources/orgmode_examples Exporting ./module2/exo4/stat_activity.org Creating public/./module2/exo4 Exporting ./module2/slides/ressources_fr.org Creating public/./module2/slides Exporting ./module2/slides/ressources.org Creating public/./module2/slides Exporting ./module3/ressources/iso_date_format.org Creating public/./module3/ressources Exporting ./module3/ressources/iso_date_format_fr.org Creating public/./module3/ressources Exporting ./module3/ressources/influenza-like-illness-analysis-orgmode+R.org Creating public/./module3/ressources Exporting ./module3/ressources/influenza-like-illness-analysis-orgmode+Lisp+Python+R.org Creating public/./module3/ressources Exporting ./module3/ressources/influenza-like-illness-analysis-orgmode.org Creating public/./module3/ressources Exporting ./module3/ressources/analyse-syndrome-grippal-orgmode.org Creating public/./module3/ressources Exporting ./module3/ressources/analyse-syndrome-grippal-orgmode+R.org Creating public/./module3/ressources Exporting ./module3/ressources/analyse-syndrome-grippal-orgmode+Lisp+Python+R.org Creating public/./module3/ressources Exporting ./module1/ressources/Module1_1_MaterielSupplementaire_fr.org Creating public/./module1/ressources Exporting ./module1/ressources/Module1_2_MaterielSupplementaire_fr.org Creating public/./module1/ressources Exporting ./module1/ressources/Module1_3_MaterielSupplementaire_fr.org Creating public/./module1/ressources Exporting ./module1/ressources/Module1_5_MaterielSupplementaire_fr.org Creating public/./module1/ressources Exporting ./module1/ressources/Module1_1_SupplementaryMaterial.org Creating public/./module1/ressources Exporting ./module1/ressources/Module1_2_SupplementaryMaterial.org Creating public/./module1/ressources Exporting ./module1/ressources/introduction_to_markdown_fr.org Creating public/./module1/ressources Exporting ./module1/ressources/introduction_to_markdown.org Creating public/./module1/ressources Exporting ./module1/ressources/module1_supplementary_material.org Creating public/./module1/ressources Exporting ./module1/ressources/module1_additionalRessources.md Creating public/./module1/ressources Exporting ./module1/ressources/sequence3_fr.org Creating public/./module1/ressources Exporting ./module1/ressources/sequence5_fr.org Creating public/./module1/ressources Exporting ./module1/ressources/sequence2_fr.org Creating public/./module1/ressources Exporting ./module1/ressources/sequence1_fr.org Creating public/./module1/ressources Exporting ./module4/ressources/resources_refs.org Creating public/./module4/ressources Exporting ./module4/ressources/resources_refs_fr.org Creating public/./module4/ressources Exporting ./module4/ressources/exo1.org Creating public/./module4/ressources Exporting ./module4/ressources/exo2.org Creating public/./module4/ressources Exporting ./module4/ressources/exo3.org Creating public/./module4/ressources Exporting ./module4/ressources/resources_environment.org Creating public/./module4/ressources Exporting ./module4/ressources/resources_environment_fr.org Creating public/./module4/ressources Exporting ./documents/notebooks/notebook_RStudio_SASmarkdown.md Creating public/./documents/notebooks Exporting ./documents/tuto_git_gtlab/tuto_git_gitlab.md Creating public/./documents/tuto_git_gtlab Exporting ./documents/tuto_rstudio_gitlab/tuto_rstudio_gitlab.md Creating public/./documents/tuto_rstudio_gitlab Exporting ./documents/tuto_magit/tuto_magit.md Creating public/./documents/tuto_magit Exporting ./documents/tuto_emacs_windows/tuto_emacs_windows.md Creating public/./documents/tuto_emacs_windows Exporting ./documents/tuto_jupyter_windows/tuto_jupyter_windows.md Creating public/./documents/tuto_jupyter_windows #+end_example