<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://blog.readthedocs.com</id>
  <title>Read the Docs Blog - Posts tagged builders</title>
  <updated>2023-07-08T10:50:30.060837+00:00</updated>
  <link href="https://blog.readthedocs.com"/>
  <link href="https://blog.readthedocs.com/archive/tag/builders/atom.xml" rel="self"/>
  <generator uri="https://ablog.readthedocs.org/" version="0.10.26">ABlog</generator>
  <entry>
    <id>https://blog.readthedocs.com/migrate-configuration-v2/</id>
    <title>Migrate your project to .readthedocs.yaml configuration file v2</title>
    <updated>2023-05-31T00:00:00+00:00</updated>
    <author>
      <name>Manuel Kaufmann</name>
    </author>
    <content type="html">&lt;section id="migrate-your-project-to-readthedocs-yaml-configuration-file-v2"&gt;

&lt;p&gt;We are announcing a new &lt;strong&gt;requirement for all builds to use our configuration file version 2&lt;/strong&gt;.
This announcement deprecates builds without a configuration file, as well as version 1 of our configuration file.&lt;/p&gt;
&lt;p&gt;Read the Docs &lt;em&gt;will start requiring&lt;/em&gt; a &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;.readthedocs.yaml&lt;/span&gt;&lt;/code&gt; configuration file
for all projects in order to build documentation successfully.
We will stop supporting builds without explicit configuration,
because this creates implicit dependencies that users aren’t aware of.
&lt;strong&gt;We plan to start failing builds not using configuration file version 2 on September 25, 2023&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The main reason behind this decision is that it’s hard to maintain a set of defaults that are useful
for all of our users and the different tools they use to build documentation.
Without a configuration file, we must guess the configuration the project needs to build, which is difficult to do reliably.
Even if the defaults we chose worked well for a period of time,
we found them impossible to change over time.
Doing so would break projects that were relying on our defaults instead of specifying a configuration file
and pinning their dependencies (e.g. OS, Python version, dependencies, etc).&lt;/p&gt;
&lt;section id="deprecation-timeline"&gt;
&lt;h2&gt;Deprecation timeline&lt;/h2&gt;
&lt;p&gt;We understand this change will affect many of our users,
so we have a timeline to communicate this deprecation to our users effectively.&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;June 2023&lt;/strong&gt;: Email project owners with unsupported configurations once a week, along with an onsite notification to alert them of the deprecation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Monday, July 24, 2023&lt;/strong&gt;: Do the first brownout (temporarily enforce this deprecation) for 12 hours: 00:01 PST to 11:59 PST (noon)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Monday, August 14, 2023&lt;/strong&gt;: Do a second brownout (temporarily enforce this deprecation) for 24 hours: 00:01 PST to 23:59 PST (midnight)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Monday, September 4, 2023&lt;/strong&gt;: Do a third and final brownout (temporarily enforce this deprecation) for 48 hours: 00:01 PST to 23:59 PST (midnight)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Monday, September 25, 2023&lt;/strong&gt;: Fully remove support for building documentation without configuration file v2.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="adding-a-configuration-file"&gt;
&lt;h2&gt;Adding a configuration file&lt;/h2&gt;
&lt;p&gt;If you have a project on Read the Docs that is not using a &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;.readthedocs.yaml&lt;/span&gt;&lt;/code&gt; configuration file,
&lt;strong&gt;you will need to create one as soon as possible&lt;/strong&gt; to continue building your project.&lt;/p&gt;
&lt;p&gt;Below is a minimal configuration template that you can copy and paste into your project.
With this configuration file, your project should build successfully
and will continue building after we deprecate our default build configuration in September 2023.&lt;/p&gt;
&lt;div class="highlight-yaml notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# .readthedocs.yaml&lt;/span&gt;
&lt;span class="c1"&gt;# Read the Docs configuration file&lt;/span&gt;
&lt;span class="c1"&gt;# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details&lt;/span&gt;

&lt;span class="c1"&gt;# Required&lt;/span&gt;
&lt;span class="nt"&gt;version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;2&lt;/span&gt;

&lt;span class="c1"&gt;# Set the version of Python and other tools you might need&lt;/span&gt;
&lt;span class="nt"&gt;build&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;os&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;ubuntu-22.04&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;python&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;3.11&amp;quot;&lt;/span&gt;

&lt;span class="c1"&gt;# Build documentation in the docs/ directory with Sphinx&lt;/span&gt;
&lt;span class="nt"&gt;sphinx&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;configuration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;docs/conf.py&lt;/span&gt;

&lt;span class="c1"&gt;# We recommend specifying your dependencies to enable reproducible builds:&lt;/span&gt;
&lt;span class="c1"&gt;# https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html&lt;/span&gt;
&lt;span class="c1"&gt;# python:&lt;/span&gt;
&lt;span class="c1"&gt;#   install:&lt;/span&gt;
&lt;span class="c1"&gt;#   - requirements: docs/requirements.txt&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;section id="additional-help"&gt;
&lt;h2&gt;Additional help&lt;/h2&gt;
&lt;p&gt;There are some small differences between our build defaults and this configuration file template above.
If you notice a build failure after making these changes,
here are some things you can check while you tune your &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;.readthedocs.yaml&lt;/span&gt;&lt;/code&gt; file:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The operating system has changed from Ubuntu 18.04 to Ubuntu 22.04&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The new Ubuntu 22.04 may not have all the same system dependencies installed.
If you need an Ubuntu package that’s not installed in the system,
you can use
&lt;a class="reference external" href="https://docs.readthedocs.io/en/stable/config-file/v2.html#build-apt-packages"&gt;build.apt_packages&lt;/a&gt;
to install it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The default Python version has changed from 3.7 to 3.11.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;All the configuration done from the dashboard
(&lt;span class="menuselection"&gt;Project Admin ‣ Advanced Settings ‣ Default settings&lt;/span&gt;)
is ignored when using a configuration file. These settings have to be migrated to your project’s configuration file.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Documentation&lt;/span&gt; &lt;span class="pre"&gt;type&lt;/span&gt;&lt;/code&gt; is now defined via
&lt;a class="reference external" href="https://docs.readthedocs.io/en/stable/config-file/v2.html#sphinx"&gt;sphinx&lt;/a&gt; or
&lt;a class="reference external" href="https://docs.readthedocs.io/en/stable/config-file/v2.html#mkdocs"&gt;mkdocs&lt;/a&gt;,
depending on which documentation tool your project is using.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Requirements&lt;/span&gt; &lt;span class="pre"&gt;file&lt;/span&gt;&lt;/code&gt; is now defined via
&lt;a class="reference external" href="https://docs.readthedocs.io/en/stable/config-file/v2.html#requirements-file"&gt;python.requirements&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Python&lt;/span&gt; &lt;span class="pre"&gt;Interpreter&lt;/span&gt;&lt;/code&gt; is now defined via
&lt;a class="reference external" href="https://docs.readthedocs.io/en/stable/config-file/v2.html#build-tools-python"&gt;build.tools.python&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Install&lt;/span&gt; &lt;span class="pre"&gt;Project&lt;/span&gt;&lt;/code&gt; is now defined via
&lt;a class="reference external" href="https://docs.readthedocs.io/en/stable/config-file/v2.html#python-install"&gt;python.install&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;div class="system-message"&gt;
&lt;p class="system-message-title"&gt;System Message: INFO/1 (&lt;span class="docutils literal"&gt;/home/docs/checkouts/readthedocs.org/user_builds/test-githubblog/checkouts/latest/migrate-configuration-v2.rst&lt;/span&gt;, line 8); &lt;em&gt;&lt;a href="#id1"&gt;backlink&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Duplicate explicit target name: “python.requirements”.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Use&lt;/span&gt; &lt;span class="pre"&gt;system&lt;/span&gt; &lt;span class="pre"&gt;packages&lt;/span&gt;&lt;/code&gt; &lt;em&gt;is deprecated&lt;/em&gt; in favor of declaring all your dependencies via a requirements file using
&lt;a class="reference external" href="https://docs.readthedocs.io/en/stable/config-file/v2.html#requirements-file"&gt;python.requirements&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Python&lt;/span&gt; &lt;span class="pre"&gt;configuration&lt;/span&gt; &lt;span class="pre"&gt;file&lt;/span&gt;&lt;/code&gt; is now defined via
&lt;a class="reference external" href="https://docs.readthedocs.io/en/stable/config-file/v2.html#sphinx-configuration"&gt;sphinx.configuration&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Git submodules are not cloned automatically.
You can tell Read the Docs to clone them by using
&lt;a class="reference external" href="https://docs.readthedocs.io/en/stable/config-file/v2.html#submodules-include"&gt;submodules.include&lt;/a&gt;
config key.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;HTMLZip format is not built by default.
In case you want to keep building it,
you can use the config key
&lt;a class="reference external" href="https://docs.readthedocs.io/en/stable/config-file/v2.html#formats"&gt;formats&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Node.js is not available by default.
You can make it available by using
&lt;a class="reference external" href="https://docs.readthedocs.io/en/stable/config-file/v2.html#build-tools-nodejs"&gt;build.tools.nodejs&lt;/a&gt;
config key.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Starting with this suggested &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;.readthedocs.yaml&lt;/span&gt;&lt;/code&gt; configuration file and taking into account these differences,
you should be able to define a working configuration file and avoid breaking changes in the future.&lt;/p&gt;
&lt;div class="admonition seealso"&gt;
&lt;p class="admonition-title"&gt;See also&lt;/p&gt;
&lt;dl class="simple"&gt;
&lt;dt&gt;&lt;a class="reference external" href="https://docs.readthedocs.io/en/stable/guides/setup/configuration-file.html" title="(in Read the Docs user documentation v9.15.0)"&gt;&lt;span&gt;How to add a configuration file&lt;/span&gt;&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;More usage examples and guidance can be found in our how-to for adding a &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;.readthedocs.yaml&lt;/span&gt;&lt;/code&gt; configuration file.&lt;/p&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;section id="what-s-next"&gt;
&lt;h2&gt;What’s next?&lt;/h2&gt;
&lt;p&gt;In case you have some extra time,
we recommend that you pin your project’s Python dependencies as well.
This helps avoid surprise build errors when new packages are released.
You can find more information in our guide,
&lt;a class="reference external" href="https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html"&gt;How to create reproducible builds&lt;/a&gt;.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="contact-us"&gt;
&lt;h2&gt;Contact us&lt;/h2&gt;
&lt;p&gt;&lt;a class="reference external" href="https://readthedocs.org/support/"&gt;Contact us&lt;/a&gt; if you have any questions,
and let us know if you are having trouble using a configuration file for any reason.&lt;/p&gt;
&lt;div class="system-message"&gt;
&lt;p class="system-message-title"&gt;System Message: INFO/1 (&lt;span class="docutils literal"&gt;/home/docs/checkouts/readthedocs.org/user_builds/test-githubblog/checkouts/latest/migrate-configuration-v2.rst&lt;/span&gt;, line 145); &lt;em&gt;&lt;a href="#id2"&gt;backlink&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Duplicate implicit target name: “contact us”.&lt;/p&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;/section&gt;
</content>
    <link href="https://blog.readthedocs.com/migrate-configuration-v2/" rel="alternate"/>
    <summary>We are announcing a new requirement for all builds to use our configuration file version 2.
This announcement deprecates builds without a configuration file, as well as version 1 of our configuration file.Read the Docs will start requiring a .readthedocs.yaml configuration file
for all projects in order to build documentation successfully.
We will stop supporting builds without explicit configuration,
because this creates implicit dependencies that users aren’t aware of.
We plan to start failing builds not using configuration file version 2 on September 25, 2023.</summary>
    <category term="builders" label="builders"/>
    <category term="deprecation" label="deprecation"/>
    <published>2023-05-31T00:00:00+00:00</published>
  </entry>
</feed>
