From f7084ae1e48df9d0cce738dc706399a8c0e85ae5 Mon Sep 17 00:00:00 2001 From: apt-ghetto Date: Wed, 28 Oct 2020 01:47:12 -0500 Subject: [PATCH] Jenkins Pipeline for Manual Summary: Set up a Jenkins pipeline to build the manual as PDF: * Add a Dockerfile to create a Focal Fossa build environment * Add a Jenkinsfile for the Manual pipeline * Publish the PDF Due to unicode characters in the source, LaTeX fails to build: * Changed the engine to xelatex * Added some LaTeX configurations for the PDF build Ref T109 Test Plan: 1. Setup Jenkins 1.1 Create a new Pipeline 1.1.1 Definition => Pipeline script from SCM 1.1.1 SCM => Git 1.1.1 Repositories => https://phab.lubuntu.me/source/manual/ 1.2. Install plugins 1.2.1 Docker plugin and Docker Pipeline plugin 1.2.2 HTML Publisher plugin 2. Install Docker on the Jenkins server 3. Manually start the job 4. Check, that there is a "Lubuntu Manual" link in the Job view, when the build was successful Reviewers: lynorian, tsimonq2, teward Reviewed By: tsimonq2 Maniphest Tasks: T109 Differential Revision: https://phab.lubuntu.me/D102 --- Dockerfile | 15 +++++++++++++++ Jenkinsfile | 33 +++++++++++++++++++++++++++++++++ source/conf.py | 18 ++++++++++++++++++ 3 files changed, 66 insertions(+) create mode 100644 Dockerfile create mode 100644 Jenkinsfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..bc7faa03 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +FROM ubuntu:focal + +RUN export DEBIAN_FRONTEND=noninteractive && \ + apt-get update && apt-get install --yes --no-install-recommends \ + python3-pip \ + python3-sphinx \ + latexmk \ + texlive \ + texlive-formats-extra \ + arcanist \ + build-essential \ + python3-sphinx-rtd-theme \ + python3-sphinx-bootstrap-theme + + diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 00000000..9e34267a --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,33 @@ +pipeline { + agent { + dockerfile true + } + stages { + stage('Checkout Source') { + steps { + git 'https://phab.lubuntu.me/source/manual.git' + } + } + stage('Clean Environment') { + steps { + sh 'make clean' + } + } + stage('Build The Manual As PDF') { + steps { + sh 'make latexpdf' + } + } + } + post { + success { + publishHTML (target : [allowMissing: false, + alwaysLinkToLastBuild: true, + keepAll: true, + reportDir: 'build/latex', + reportFiles: 'LubuntuManual.pdf', + reportName: 'Lubuntu Manual', + reportTitles: 'Lubuntu Manual']) + } + } +} diff --git a/source/conf.py b/source/conf.py index b8f01463..cb0a24c7 100644 --- a/source/conf.py +++ b/source/conf.py @@ -221,6 +221,8 @@ htmlhelp_basename = 'LubuntuManualdoc' # -- Options for LaTeX output --------------------------------------------- +latex_engine = 'xelatex' + latex_elements = { # The paper size ('letterpaper' or 'a4paper'). # @@ -237,8 +239,24 @@ latex_elements = { # Latex figure (float) alignment # # 'figure_align': 'htbp', + 'fontpkg': r''' + \setmainfont{DejaVu Serif} + \setsansfont{DejaVu Sans} + \setmonofont{DejaVu Sans Mono} + ''', + 'preamble': r''' + \usepackage[titles]{tocloft} + \cftsetpnumwidth {1.25cm}\cftsetrmarg{1.5cm} + \setlength{\cftchapnumwidth}{0.75cm} + \setlength{\cftsecindent}{\cftchapnumwidth} + \setlength{\cftsecnumwidth}{1.25cm} + ''', + 'fncychap': r'\usepackage[Bjornstrup]{fncychap}', + 'printindex': r'\footnotesize\raggedright\printindex', } +latex_show_urls = 'footnote' + # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, # author, documentclass [howto, manual, or own class]).