<Insert Picture Here>
CONFIDENTIAL – ORACLE HIGHLY RESTRICTED 1
Documentation Production using Open Source Tools
Elena Zannoni, elena.zannoni@oracle.com Stefan Hinz, stefan.hinz@oracle.com Paul Du Bois, paul.dubois@oracle.com
Documentation Production using Open Source Tools Elena Zannoni, - - PowerPoint PPT Presentation
<Insert Picture Here> Documentation Production using Open Source Tools Elena Zannoni, elena.zannoni@oracle.com Stefan Hinz, stefan.hinz@oracle.com Paul Du Bois, paul.dubois@oracle.com CONFIDENTIAL ORACLE HIGHLY RESTRICTED 1
<Insert Picture Here>
CONFIDENTIAL – ORACLE HIGHLY RESTRICTED 1
Elena Zannoni, elena.zannoni@oracle.com Stefan Hinz, stefan.hinz@oracle.com Paul Du Bois, paul.dubois@oracle.com
LinuxCon Japan 2015
3 LinuxCon Japan 2015
4 LinuxCon Japan 2015
5 LinuxCon Japan 2015
6 LinuxCon Japan 2015
7 LinuxCon Japan 2015
8 LinuxCon Japan 2015
9 LinuxCon Japan 2015
10 LinuxCon Japan 2015
11 LinuxCon Japan 2015
LinuxCon Japan 2015
XSLTPROC XHTML XHTML/ webhelp ePub man PDF .fo FOP XML your-html.xsl your-webhelp.xsl your-epub.xsl your-man.xsl your-fo.xsl Lucene webhelp jQuery
13 LinuxCon Japan 2015
14 LinuxCon Japan 2015
15 LinuxCon Japan 2015
Central Doc repo
Local Copy
Commit Notification Checkout
Targets to Build Built Targets (Status & Output) Revision # changed
Repo to Update Async Commands User/Web UI Writer Commit
16 LinuxCon Japan 2015
17 LinuxCon Japan 2015
18 LinuxCon Japan 2015
19 LinuxCon Japan 2015
Fragment from commit-monitor configuration file: [...] "repositories" => { "linux" => { "check-type" => "svn info", "repo-url" => "#{repo_url_prefix}/linux/trunk" }, [...] } Fragment from build slaves configuration file: "repositories" => { "linux" => { "basedir" => "#{repo_parent}/linux", "update-cmd" => update_cmd, "documents" => { "uek3-qu4-relnotes" => "uek3/qu4", "uek3-qu5-relnotes" => "uek3/qu5", […] }}}
Command to check revision numbers Command to get local copy of repo List of all possible documents to be built Path to the repo
20 LinuxCon Japan 2015
"linux" => { "lang-code" => "en", "documents" => { "uek3-qu5-relnotes" => { "output-directory" => "linux/uek3-qu5-relnotes", "target-base" => "relnotes", "document-barriers" => std_document_barriers, "goal-targets" => [ [ "%T.html-embed", 900 ], [ "%T.webhelp", 900 ], [ "%T.xhtml-dir", 900 ], [ "%T.xhtml-otn", 900 ], [ "%T.xhtml-review", 900 ], [ "%T.pdf", 910 ], [ "%T-review.pdf", 910 ], [ "%T.epub", 920 ], [ "%T.txt", 920 ], ], } } }
Multiple Languages Possible
Output directory in the output tree <tree-root>/<output-directory>/<lang-code>/ Standard prerequisites used List of targets “make <target-name>” will be used to build Each target has a priority Lower number == higher priority
21 LinuxCon Japan 2015
22 LinuxCon Japan 2015
23 LinuxCon Japan 2015
24 LinuxCon Japan 2015
113385876 2015-05-18 08:32:36: master@oter02/27074: received message: commit from commit-monitor@oter02/4108 113385877 2015-05-18 08:32:36: master@oter02/27074: a commit occurred for repository linux 113385878 2015-05-18 08:32:36: master@oter02/27074: signal slaves to update repository linux 113385879 2015-05-18 08:32:36: master@oter02/27074: tell slave@oter02/25453 to update repository linux 113385881 2015-05-18 08:32:36: master@oter02/27074: slave@oter02/25453: number of targets reclaimed: 0 113385882 2015-05-18 08:32:36: master@oter02/27074: slave@oter02/25453: load capacity available = 0 113385883 2015-05-18 08:32:36: master@oter02/27074: write target-status report 113385978 2015-05-18 08:32:38: slave@oter02/25453: received update notification for repository linux 113385989 2015-05-18 08:32:38: slave@oter02/25453: schedule update for repository linux, caller = ["/usr/local/bin/builds.rb:836:in `block in main_loop'", "/usr/local/bin/builds.rb:676:in `loop'", "/usr/local/bin/builds.rb:676:in `main_loop'", "/usr/local/bin/builds.rb:978:in `<main>'"] 113386024 2015-05-18 08:32:38: slave@oter02/25453: number of pending updates: 1 113386042 2015-05-18 08:32:38: slave@oter02/25453: repositories to update: ["linux"] 113386119 2015-05-18 08:32:39: slave@oter02/25453: MutexArray: value "linux" dequeued, size now 0 113386120 2015-05-18 08:32:39: slave@oter02/25453: START repository update thread 113386121 2015-05-18 08:32:39: slave@oter02/25453: perform update for repository linux, caller = ["/usr/local/bin/builds.rb:861:in `block (2 levels) in main_loop'"] 113386122 2015-05-18 08:32:39: slave@oter02/25453: END repository update thread 113386228 2015-05-18 08:32:41: slave@oter02/25453: update succeeded for repository linux 113387039 2015-05-18 08:32:59: master@oter02/27074: received message: repository-update-result from slave@oter02/25453 113387040 2015-05-18 08:32:59: master@oter02/27074: slave slave@oter02/25453 has updated repository: linux, status = 0 113387041 2015-05-18 08:32:59: master@oter02/27074: write slave-status report 113387042 2015-05-18 08:32:59: master@oter02/27074: done writing slave-status report 113387043 2015-05-18 08:32:59: master@oter02/27074: write target-status report 113387044 2015-05-18 08:33:00: master@oter02/27074: done writing target-status report
25 LinuxCon Japan 2015
113388622 2015-05-18 08:33:17: master@oter02/27074: ASSIGN document barrier: slave@oter02/25453:linux/uek3-qu5- relnotes/relnotes.valid (id = 3381088) 113388683 2015-05-18 08:33:18: slave@oter02/25453: received message: build-document-barrier from master@oter02/27074 113388684 2015-05-18 08:33:18: slave@oter02/25453: message data: ["linux", "uek3-qu5-relnotes", "relnotes.valid", 3381088] 113388685 2015-05-18 08:33:18: slave@oter02/25453: ACCEPT document barrier linux/uek3-qu5-relnotes/relnotes.valid (id = 3381088) 113388790 2015-05-18 08:33:20: slave@oter02/25453: linux/uek3-qu5-relnotes: START DOCUMENT BARRIER: make -j1 relnotes.valid 113388803 2015-05-18 08:33:20: slave@oter02/25453: linux/uek3-qu5-relnotes: END DOCUMENT BARRIER: relnotes.valid (status = 0) 113388805 2015-05-18 08:33:20: slave@oter02/25453: linux/uek3-qu5-relnotes: TERMINATED DB: relnotes.valid (status = 0) 113388806 2015-05-18 08:33:20: slave@oter02/25453: target has terminated: linux/uek3-qu5-relnotes/relnotes.valid 113388807 2015-05-18 08:33:20: slave@oter02/25453: write result tuple to master: linux/uek3-qu5-relnotes/relnotes.valid 113388811 2015-05-18 08:33:20: slave@oter02/25453: done writing result tuple to master: linux/uek3-qu5-relnotes/relnotes.valid 113389898 2015-05-18 08:33:39: master@oter02/27074: received message: target-build-result from slave@oter02/25453 113389899 2015-05-18 08:33:39: master@oter02/27074: TERMINATED: slave@oter02/25453:linux/uek3-qu5- relnotes/relnotes.valid (id = 3381088) (result = TARGET_UP_TO_DATE) 113389900 2015-05-18 08:33:39: master@oter02/27074: accept terminated target: 1/slave@oter02/25453:linux/uek3-qu5- relnotes/relnotes.valid
26 LinuxCon Japan 2015
114469865 2015-05-19 12:54:10: master@oter02/27074: ASSIGN goal target: slave@oter02/26410:linux/uek3-qu5-relnotes/relnotes.pdf (id = 3414551) 114470447 2015-05-19 12:54:40: slave@oter02/26410: message data: ["linux", "uek3-qu5-relnotes", "relnotes.pdf", 3414551, 910, "0bbbc97586c3b26ee2b2d79aaf7d4817"] 114470448 2015-05-19 12:54:40: slave@oter02/26410: ACCEPT goal target linux/uek3-qu5-relnotes/relnotes.pdf (id = 3414551) 114470449 2015-05-19 12:54:40: slave@oter02/26410: received message: build-goal-target from master@oter02/27074 114470828 2015-05-19 12:54:44: slave@oter02/26410: linux/uek3-qu5-relnotes: ADD DEPENDENCIES for goal target relnotes.pdf 114470861 2015-05-19 12:54:44: slave@oter02/26410: linux/uek3-qu5-relnotes: Execute: makedeps.rb relnotes.pdf 114470913 2015-05-19 12:54:45: slave@oter02/26410: linux/uek3-qu5-relnotes: INITIAL DEPENDENCIES for relnotes.pdf: ["relnotes.pdf", "relnotes.fo"] 114470990 2015-05-19 12:54:46: slave@oter02/26410: linux/uek3-qu5-relnotes: UNBUILT DEPENDENCIES for relnotes.pdf: ["relnotes.pdf", "relnotes.fo"] 114471041 2015-05-19 12:54:47: slave@oter02/26410: linux/uek3-qu5-relnotes: add dependency list for relnotes.pdf: ["relnotes.pdf", "relnotes.fo"] 114471073 2015-05-19 12:54:47: slave@oter02/26410: linux/uek3-qu5-relnotes: add dependency list for relnotes.fo: ["relnotes.fo"] 114471142 2015-05-19 12:54:48: slave@oter02/26410: linux/uek3-qu5-relnotes: job PIDs: [13498] 114471278 2015-05-19 12:54:51: slave@oter02/26410: linux/uek3-qu5-relnotes: build relnotes.pdf: dependencies: ["relnotes.pdf", "relnotes.fo"] 114471315 2015-05-19 12:54:52: slave@oter02/26410: linux/uek3-qu5-relnotes: START GOAL TARGET (dependency): make -j1 relnotes.fo 114471340 2015-05-19 12:54:53: slave@oter02/26410: linux/uek3-qu5-relnotes: job PIDs: [14833] 114471386 2015-05-19 12:54:54: slave@oter02/26410: linux/uek3-qu5-relnotes: END GOAL TARGET (dependency): relnotes.fo (status = 0) 114471387 2015-05-19 12:54:54: slave@oter02/26410: linux/uek3-qu5-relnotes: TERMINATED: relnotes.fo (status = 0) 114471400 2015-05-19 12:54:56: slave@oter02/26410: linux/uek3-qu5-relnotes: job PIDs: [15321] 114471458 2015-05-19 12:54:58: slave@oter02/26410: linux/uek3-qu5-relnotes: build relnotes.pdf: dependencies: ["relnotes.pdf"] 114471471 2015-05-19 12:54:58: slave@oter02/26410: linux/uek3-qu5-relnotes: START GOAL TARGET: make -j1 relnotes.pdf 114471493 2015-05-19 12:55:00: slave@oter02/26410: linux/uek3-qu5-relnotes: job PIDs: [15321, 15581] 114471838 2015-05-19 12:55:17: slave@oter02/26410: linux/uek3-qu5-relnotes: END GOAL TARGET: relnotes.pdf (status = 0) 114471874 2015-05-19 12:55:18: slave@oter02/26410: linux/uek3-qu5-relnotes: TERMINATED: relnotes.pdf (status = 0)
27 LinuxCon Japan 2015
114472036 2015-05-19 12:55:23: slave@oter02/26410: linux/uek3-qu5-relnotes: old, new signatures (relnotes.pdf) = 0bbbc97586c3b26ee2b2d79aaf7d4817, 983d383f7ac54121602070a546aca16e 114472059 2015-05-19 12:55:23: slave@oter02/26410: linux/uek3-qu5-relnotes: content has changed, package and return: relnotes.pdf 114472086 2015-05-19 12:55:24: slave@oter02/26410: target has terminated: linux/uek3-qu5-relnotes/relnotes.pdf 114472103 2015-05-19 12:55:25: slave@oter02/26410: write result tuple to master: linux/uek3-qu5-relnotes/relnotes.pdf 114472169 2015-05-19 12:55:27: slave@oter02/26410: done writing result tuple to master: linux/uek3-qu5-relnotes/relnotes.pdf 114473189 2015-05-19 12:55:52: master@oter02/27074: TERMINATED: slave@oter02/26410:linux/uek3-qu5-relnotes/relnotes.pdf (id = 3414551) (result = TARGET_UP_TO_DATE) 114473190 2015-05-19 12:55:52: master@oter02/27074: accept terminated target: 2/slave@oter02/26410:linux/uek3-qu5- relnotes/relnotes.pdf 114473191 2015-05-19 12:55:52: master@oter02/27074: old/new signatures (linux/uek3-qu5-relnotes/relnotes.pdf) = 0bbbc97586c3b26ee2b2d79aaf7d4817/983d383f7ac54121602070a546aca16e 114473192 2015-05-19 12:55:52: master@oter02/27074: content changed, unpack and store: linux/uek3-qu5-relnotes/relnotes.pdf 114473193 2015-05-19 12:55:52: master@oter02/27074: uek3-qu5-relnotes/en, target relnotes.pdf: CONTENT size: 76352 114473194 2015-05-19 12:55:52: master@oter02/27074: status reported: up to date/linux/uek3-qu5-relnotes/relnotes.pdf
28 LinuxCon Japan 2015
REPO_OFFLINE REPO_UPDATING REPO_ONLINE After commit repo out of date Update Failed Update Succeeded Initialize Build new target
29 LinuxCon Japan 2015
T_OUT_OF_DATE T_FAILED T_UNBUILDABLE T_UP_TO_DATE T_BUILDING Start Slave can build target and REPO_ONLINE Build OK Build Failed (*) Dequarantined All REPO_OFFLINE or REPO_UPDATING No repo on slaves No rule to build target Failed barrier REPO_ONLINE (*) Many different reasons recorded in the status of the target
30 LinuxCon Japan 2015
31 LinuxCon Japan 2015
32 LinuxCon Japan 2015
33 LinuxCon Japan 2015
34 LinuxCon Japan 2015
35 LinuxCon Japan 2015
113321371 2015-05-17 22:39:00: master@oter02/27074: old/new signatures (mysql-relnotes/connector-c/relnotes.a4.pdf) = 06ff395d784c6 5bfc4fb1c52056c6be7/46de15c9c0e4c4a4ab4cdf5dba0c0733 113321372 2015-05-17 22:39:00: master@oter02/27074: content changed, unpack and store: mysql-relnotes/connector- c/relnotes.a4.pdf 113321373 2015-05-17 22:39:00: master@oter02/27074: connector-c/en, target relnotes.a4.pdf: CONTENT size: 36486 113321379 2015-05-17 22:39:00: master@oter02/27074: WARNING: output is suspicious; copy to quarantine tree 113321387 2015-05-17 22:39:00: master@oter02/27074: WARNING: quarantining connector-c/en, target relnotes.a4.pdf:
113321388 2015-05-17 22:39:00: master@oter02/27074: WARNING: relnotes.a4.pdf failed, content was quarantined 113321375 2015-05-17 22:39:00: slave@oter02/25453: done writing result tuple to master: mysql-relnotes/connector- c/relnotes.a4.pdf 113321402 2015-05-17 22:39:00: master@oter02/27074: status reported: failed/mysql-relnotes/connector- c/relnotes.a4.pdf
36 LinuxCon Japan 2015
113322916 2015-05-17 22:39:36: buildc@oter02/4598: send message: dequarantine 113322945 2015-05-17 22:39:36: master@oter02/27074: received message: dequarantine from buildc@oter02/4219 113322946 2015-05-17 22:39:36: master@oter02/27074: dequarantine content for mysql-relnotes/connector-c/relnotes.a4.pdf 113322947 2015-05-17 22:39:36: master@oter02/27074: look for content under the relnotes/connector-c/en directory 113322948 2015-05-17 22:39:36: master@oter02/27074: dequarantine command: rsync --archive --delete /data0/users/mysqldoc/quarantine-tree/relnotes/connector-c/en/pdf-a4/ /data0/users/mysqldoc/staging-tree/relnotes/connector- c/en/pdf-a4/ 113322956 2015-05-17 22:39:36: master@oter02/27074: dequarantine command: rsync --archive /data0/users/mysqldoc/quarantine-tree/relnotes/connector-c/en/pdf-a4.tar.gz /data0/users/mysqldoc/quarantine- tree/relnotes/connector-c/en/pdf-a4.zip /data0/users/mysqldoc/staging-tree/relnotes/connector-c/en/pdf-a4/.. 113322964 2015-05-17 22:39:36: master@oter02/27074: dequarantine command: rm -rf /data0/users/mysqldoc/quarantine- tree/relnotes/connector-c/en/pdf-a4 /data0/users/mysqldoc/quarantine-tree/relnotes/connector-c/en/pdf-a4.tar.gz /data0/users/mysqldoc/quarantine-tree/relnotes/connector-c/en/pdf-a4.zip 113322965 2015-05-17 22:39:36: master@oter02/27074: mark mysql-relnotes/connector-c/relnotes.a4.pdf up to date
37 LinuxCon Japan 2015
38 LinuxCon Japan 2015
39 LinuxCon Japan 2015
40 LinuxCon Japan 2015
41 LinuxCon Japan 2015
42 LinuxCon Japan 2015
LinuxCon Japan 2015
44 LinuxCon Japan 2015