<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ro">
	<id>http://wiki.dcae.pub.ro/index.php?action=history&amp;feed=atom&amp;title=SDPT_Lab_10</id>
	<title>SDPT Lab 10 - Revizia istoricului</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.dcae.pub.ro/index.php?action=history&amp;feed=atom&amp;title=SDPT_Lab_10"/>
	<link rel="alternate" type="text/html" href="http://wiki.dcae.pub.ro/index.php?title=SDPT_Lab_10&amp;action=history"/>
	<updated>2026-05-26T22:15:03Z</updated>
	<subtitle>Istoricul versiunilor pentru această pagină din wiki</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>http://wiki.dcae.pub.ro/index.php?title=SDPT_Lab_10&amp;diff=8349&amp;oldid=prev</id>
		<title>Rhobincu la 18 mai 2026 13:50</title>
		<link rel="alternate" type="text/html" href="http://wiki.dcae.pub.ro/index.php?title=SDPT_Lab_10&amp;diff=8349&amp;oldid=prev"/>
		<updated>2026-05-18T13:50:45Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ro&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Versiunea anterioară&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versiunea de la data 18 mai 2026 13:50&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l7&quot; &gt;Linia 7:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 7:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Background ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Background ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Doxygen parses your source code and your specially-formatted comments and produces a cross-referenced HTML website. It is configured by a single file, the &amp;#039;&amp;#039;&amp;#039;Doxyfile&amp;#039;&amp;#039;&amp;#039;, generated with &amp;lt;code&amp;gt;doxygen -g&amp;lt;/code&amp;gt;. Because Doxygen reads source directly, it needs no compiled binary &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;and no CMake involvement &lt;/del&gt;--- the documentation job &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;is completely independent of &lt;/del&gt;your build.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Doxygen parses your source code and your specially-formatted comments and produces a cross-referenced HTML website. It is configured by a single file, the &amp;#039;&amp;#039;&amp;#039;Doxyfile&amp;#039;&amp;#039;&amp;#039;, generated with &amp;lt;code&amp;gt;doxygen -g&amp;lt;/code&amp;gt;. Because Doxygen reads source directly, it needs no compiled binary --- the documentation job &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;does not depend on &lt;/ins&gt;your &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;build&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/code&amp;gt; stage at all, and in this lab it runs &amp;lt;code&amp;gt;doxygen Doxyfile&amp;lt;/code&amp;gt; directly without involving CMake. (You &amp;#039;&amp;#039;can&amp;#039;&amp;#039; add a &amp;lt;code&amp;gt;docs&amp;lt;/code&amp;gt; target to &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt; that wraps the same command, as the lecture notes, but this lab does not require it&lt;/ins&gt;.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;GitLab Pages serves a static website straight from a CI job. On this course&amp;#039;s instance, &amp;lt;code&amp;gt;gitlab.cs.pub.ro&amp;lt;/code&amp;gt;, the Pages wildcard domain is &amp;lt;code&amp;gt;pages.upb.ro&amp;lt;/code&amp;gt;. With unique domains enabled (the default), your published site receives an unpredictable URL of the form &amp;lt;code&amp;gt;https://&amp;amp;lt;project&amp;amp;gt;-&amp;amp;lt;6-char-id&amp;amp;gt;.pages.upb.ro/&amp;lt;/code&amp;gt;. You read the exact URL from &amp;#039;&amp;#039;&amp;#039;Deploy &amp;amp;gt; Pages&amp;#039;&amp;#039;&amp;#039; in the GitLab UI after the first successful deployment --- you cannot know it in advance.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;GitLab Pages serves a static website straight from a CI job. On this course&amp;#039;s instance, &amp;lt;code&amp;gt;gitlab.cs.pub.ro&amp;lt;/code&amp;gt;, the Pages wildcard domain is &amp;lt;code&amp;gt;pages.upb.ro&amp;lt;/code&amp;gt;. With unique domains enabled (the default), your published site receives an unpredictable URL of the form &amp;lt;code&amp;gt;https://&amp;amp;lt;project&amp;amp;gt;-&amp;amp;lt;6-char-id&amp;amp;gt;.pages.upb.ro/&amp;lt;/code&amp;gt;. You read the exact URL from &amp;#039;&amp;#039;&amp;#039;Deploy &amp;amp;gt; Pages&amp;#039;&amp;#039;&amp;#039; in the GitLab UI after the first successful deployment --- you cannot know it in advance.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Rhobincu</name></author>
	</entry>
	<entry>
		<id>http://wiki.dcae.pub.ro/index.php?title=SDPT_Lab_10&amp;diff=8348&amp;oldid=prev</id>
		<title>Rhobincu: Pagină nouă: = Week 10 Lab Activity: Documentation as Code with Doxygen =  == Objective ==  Generate API documentation for your Oven Controller with Doxygen and publish it automatically to GitL...</title>
		<link rel="alternate" type="text/html" href="http://wiki.dcae.pub.ro/index.php?title=SDPT_Lab_10&amp;diff=8348&amp;oldid=prev"/>
		<updated>2026-05-18T13:48:36Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: = Week 10 Lab Activity: Documentation as Code with Doxygen =  == Objective ==  Generate API documentation for your Oven Controller with Doxygen and publish it automatically to GitL...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Pagină nouă&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Week 10 Lab Activity: Documentation as Code with Doxygen =&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
&lt;br /&gt;
Generate API documentation for your Oven Controller with Doxygen and publish it automatically to GitLab Pages. This lab is deliberately short --- once the documentation pipeline works, the rest of the session is yours for capstone work.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Doxygen parses your source code and your specially-formatted comments and produces a cross-referenced HTML website. It is configured by a single file, the &amp;#039;&amp;#039;&amp;#039;Doxyfile&amp;#039;&amp;#039;&amp;#039;, generated with &amp;lt;code&amp;gt;doxygen -g&amp;lt;/code&amp;gt;. Because Doxygen reads source directly, it needs no compiled binary and no CMake involvement --- the documentation job is completely independent of your build.&lt;br /&gt;
&lt;br /&gt;
GitLab Pages serves a static website straight from a CI job. On this course&amp;#039;s instance, &amp;lt;code&amp;gt;gitlab.cs.pub.ro&amp;lt;/code&amp;gt;, the Pages wildcard domain is &amp;lt;code&amp;gt;pages.upb.ro&amp;lt;/code&amp;gt;. With unique domains enabled (the default), your published site receives an unpredictable URL of the form &amp;lt;code&amp;gt;https://&amp;amp;lt;project&amp;amp;gt;-&amp;amp;lt;6-char-id&amp;amp;gt;.pages.upb.ro/&amp;lt;/code&amp;gt;. You read the exact URL from &amp;#039;&amp;#039;&amp;#039;Deploy &amp;amp;gt; Pages&amp;#039;&amp;#039;&amp;#039; in the GitLab UI after the first successful deployment --- you cannot know it in advance.&lt;br /&gt;
&lt;br /&gt;
The modern GitLab Pages CI syntax marks a job as a Pages job using a &amp;lt;code&amp;gt;pages:&amp;lt;/code&amp;gt; property, and names the directory to publish using &amp;lt;code&amp;gt;publish:&amp;lt;/code&amp;gt; inside it. The job itself can have any name. See the Week 10 lecture slide &amp;quot;CI Integration: Publishing to GitLab Pages&amp;quot; for the shape of this job.&lt;br /&gt;
&lt;br /&gt;
For Doxygen comment syntax, see the lecture&amp;#039;s before/after Oven Controller slides. Reference material: the Doxygen manual at https://www.doxygen.nl/manual/, and the special-command list at https://www.doxygen.nl/manual/commands.html.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
&lt;br /&gt;
Work on a feature branch opened from a tracked Issue. Open a Merge Request when you are ready to integrate.&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Generate the Doxyfile.&amp;#039;&amp;#039;&amp;#039; Run &amp;lt;code&amp;gt;doxygen -g&amp;lt;/code&amp;gt; in your project root. This creates a file named &amp;lt;code&amp;gt;Doxyfile&amp;lt;/code&amp;gt; containing every Doxygen setting with its default value and an explanatory comment. Commit it as-is in its own commit, so your later configuration changes are visible as a clean diff.&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Configure the Doxyfile.&amp;#039;&amp;#039;&amp;#039; Edit at least the following settings: &amp;lt;code&amp;gt;PROJECT_NAME&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;PROJECT_NUMBER&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;INPUT&amp;lt;/code&amp;gt; (point it at your source and header directories and your &amp;lt;code&amp;gt;README.md&amp;lt;/code&amp;gt;); &amp;lt;code&amp;gt;RECURSIVE = YES&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;EXTRACT_ALL = YES&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;GENERATE_HTML = YES&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;GENERATE_LATEX = NO&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;HAVE_DOT = YES&amp;lt;/code&amp;gt; (enables the Graphviz class and call diagrams); and &amp;lt;code&amp;gt;USE_MDFILE_AS_MAINPAGE&amp;lt;/code&amp;gt; (set to your &amp;lt;code&amp;gt;README.md&amp;lt;/code&amp;gt; so it becomes the documentation landing page). Leave &amp;lt;code&amp;gt;OUTPUT_DIRECTORY&amp;lt;/code&amp;gt; empty and &amp;lt;code&amp;gt;HTML_OUTPUT&amp;lt;/code&amp;gt; at its default &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt;, so the generated site lands in &amp;lt;code&amp;gt;./html&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Document the Oven Controller&amp;#039;s public API.&amp;#039;&amp;#039;&amp;#039; Add Doxygen comments to the main class and its public methods. Each public function should have a &amp;lt;code&amp;gt;\brief&amp;lt;/code&amp;gt;, plus &amp;lt;code&amp;gt;\param&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;\return&amp;lt;/code&amp;gt; where they apply. Write genuine contracts --- units, valid ranges, error behavior --- not restatements of the function name. The lecture&amp;#039;s before/after example sets the standard. &amp;#039;&amp;#039;This task is verified through your published documentation site, not submitted as a file.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Build and check locally.&amp;#039;&amp;#039;&amp;#039; Run &amp;lt;code&amp;gt;doxygen Doxyfile&amp;lt;/code&amp;gt;. Open &amp;lt;code&amp;gt;html/index.html&amp;lt;/code&amp;gt; in a browser and confirm that your classes, your comments, and (if Graphviz is installed locally) the diagrams all appear as expected. Fix anything that looks wrong before moving on.&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Add the documentation job to CI.&amp;#039;&amp;#039;&amp;#039; Edit &amp;lt;code&amp;gt;.gitlab-ci.yml&amp;lt;/code&amp;gt;:&lt;br /&gt;
## Add a new &amp;lt;code&amp;gt;docs&amp;lt;/code&amp;gt; stage as the last stage.&lt;br /&gt;
## Add a job (suggested name &amp;lt;code&amp;gt;create-pages&amp;lt;/code&amp;gt;) in that stage. It should use a stock Debian or Ubuntu image, install &amp;lt;code&amp;gt;doxygen&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;graphviz&amp;lt;/code&amp;gt; in a &amp;lt;code&amp;gt;before_script&amp;lt;/code&amp;gt;, run &amp;lt;code&amp;gt;doxygen Doxyfile&amp;lt;/code&amp;gt; in its &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;, and publish the &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; directory using the &amp;lt;code&amp;gt;pages:&amp;lt;/code&amp;gt; property.&lt;br /&gt;
## Restrict the job to the default branch with a &amp;lt;code&amp;gt;rules:&amp;lt;/code&amp;gt; entry, so the documentation deploys only from released code.&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Publish and verify.&amp;#039;&amp;#039;&amp;#039; Push your branch and open the Merge Request. Note that because the job is restricted to the default branch, it will &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; run on your feature-branch pipeline --- this is expected. Once the MR is merged, the pipeline on the default branch runs the &amp;lt;code&amp;gt;create-pages&amp;lt;/code&amp;gt; job. Then open &amp;#039;&amp;#039;&amp;#039;Deploy &amp;amp;gt; Pages&amp;#039;&amp;#039;&amp;#039;, find your site&amp;#039;s live URL, open it, and confirm the documentation is served correctly. Paste that URL into your Merge Request description.&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
Submit exactly two files:&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;Doxyfile&amp;lt;/code&amp;gt; --- your configured Doxygen configuration file.&lt;br /&gt;
# &amp;lt;code&amp;gt;.gitlab-ci.yml&amp;lt;/code&amp;gt; --- including the new &amp;lt;code&amp;gt;docs&amp;lt;/code&amp;gt; stage and the &amp;lt;code&amp;gt;create-pages&amp;lt;/code&amp;gt; job.&lt;br /&gt;
&lt;br /&gt;
In addition, your Merge Request description must contain the live GitLab Pages URL from Task 6. The quality of your Doxygen comments (Task 3) is assessed by visiting that URL.&lt;br /&gt;
&lt;br /&gt;
== Stretch tasks (optional) ==&lt;br /&gt;
&lt;br /&gt;
Pick at most one. Neither earns extra points; both make your capstone documentation noticeably better.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Turn documentation into a real gate.&amp;#039;&amp;#039;&amp;#039; Set &amp;lt;code&amp;gt;EXTRACT_ALL = NO&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WARN_IF_UNDOCUMENTED = YES&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;WARN_AS_ERROR = YES&amp;lt;/code&amp;gt; in your Doxyfile. Now Doxygen exits with an error --- failing the pipeline --- whenever a public entity has no documentation. Then document everything until the job passes. This is how documentation becomes a true quality gate rather than a suggestion.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Add a hand-written architecture page.&amp;#039;&amp;#039;&amp;#039; Create &amp;lt;code&amp;gt;docs/architecture.md&amp;lt;/code&amp;gt; describing how the Oven Controller&amp;#039;s pieces fit together. Add it to the Doxyfile&amp;#039;s &amp;lt;code&amp;gt;INPUT&amp;lt;/code&amp;gt;. It will appear as a first-class page in your documentation site, alongside the auto-extracted API reference.&lt;br /&gt;
&lt;br /&gt;
== Common pitfalls ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;The published site is 404 or shows the wrong content.&amp;#039;&amp;#039;&amp;#039; The directory named in &amp;lt;code&amp;gt;publish:&amp;lt;/code&amp;gt; must exactly match where Doxygen actually wrote the HTML. With the default &amp;lt;code&amp;gt;HTML_OUTPUT = html&amp;lt;/code&amp;gt; and an empty &amp;lt;code&amp;gt;OUTPUT_DIRECTORY&amp;lt;/code&amp;gt;, that directory is &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt;. If you changed either setting, update &amp;lt;code&amp;gt;publish:&amp;lt;/code&amp;gt; to match.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;The docs job never runs.&amp;#039;&amp;#039;&amp;#039; If you restricted it to the default branch, it will not appear on feature-branch or Merge Request pipelines --- only after the merge. This is correct behavior. Verify the &amp;lt;code&amp;gt;doxygen&amp;lt;/code&amp;gt; command itself locally (Task 4) so you are confident before merging.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;The &amp;lt;code&amp;gt;pages:&amp;lt;/code&amp;gt; keyword causes a YAML or pipeline error.&amp;#039;&amp;#039;&amp;#039; The Pages CI syntax has changed across GitLab versions. The &amp;lt;code&amp;gt;pages:&amp;lt;/code&amp;gt; property with &amp;lt;code&amp;gt;publish:&amp;lt;/code&amp;gt; inside it is the current form. If your instance rejects it, check the GitLab version of &amp;lt;code&amp;gt;gitlab.cs.pub.ro&amp;lt;/code&amp;gt; and consult its documentation for the exact accepted syntax.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;No diagrams in the output.&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;HAVE_DOT = YES&amp;lt;/code&amp;gt; requires the Graphviz &amp;lt;code&amp;gt;dot&amp;lt;/code&amp;gt; tool to be installed. Make sure your CI &amp;lt;code&amp;gt;before_script&amp;lt;/code&amp;gt; installs &amp;lt;code&amp;gt;graphviz&amp;lt;/code&amp;gt;, not only &amp;lt;code&amp;gt;doxygen&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Doxygen reports warnings about undocumented members.&amp;#039;&amp;#039;&amp;#039; With &amp;lt;code&amp;gt;EXTRACT_ALL = YES&amp;lt;/code&amp;gt; this is harmless --- the site still builds. It only fails the job if you also set &amp;lt;code&amp;gt;WARN_AS_ERROR = YES&amp;lt;/code&amp;gt; (see the stretch task).&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I cannot find my Pages URL.&amp;#039;&amp;#039;&amp;#039; It is under &amp;#039;&amp;#039;&amp;#039;Deploy &amp;amp;gt; Pages&amp;#039;&amp;#039;&amp;#039; in the GitLab project sidebar, and only appears after the &amp;lt;code&amp;gt;create-pages&amp;lt;/code&amp;gt; job has succeeded at least once on the default branch.&lt;br /&gt;
&lt;br /&gt;
== Looking ahead ==&lt;br /&gt;
&lt;br /&gt;
Next week is the last: &amp;#039;&amp;#039;&amp;#039;Capstone Synthesis&amp;#039;&amp;#039;&amp;#039;. Your CI pipeline is now complete --- build, test, lint, sanitize, and docs. We step back, look at the whole system you have built, cover a few industry topics, and reserve lab time for capstone polish and a dry run of your project presentation.&lt;/div&gt;</summary>
		<author><name>Rhobincu</name></author>
	</entry>
</feed>