<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Nikola (Posts about automation)</title><link>https://getnikola.com/</link><description></description><atom:link href="https://getnikola.com/categories/automation.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><lastBuildDate>Sat, 17 May 2025 17:58:54 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Automating Nikola rebuilds with GitHub Actions</title><link>https://getnikola.com/blog/automating-nikola-rebuilds-with-github-actions.html</link><dc:creator>Chris Warrick</dc:creator><description>&lt;p&gt;In this guide, we’ll set up GitHub Actions to rebuild a &lt;a class="reference external" href="https://getnikola.com/"&gt;Nikola&lt;/a&gt; website and host it on GitHub Pages.&lt;/p&gt;
&lt;section id="why"&gt;
&lt;h2&gt;Why?&lt;/h2&gt;
&lt;p&gt;By using GitHub Actions to build your site, you can easily blog from anywhere
you can edit text files. Which means you can blog with only a web
browser and &lt;a class="reference external" href="https://github.com"&gt;GitHub.com&lt;/a&gt;.
You also won’t need to install Nikola and Python to write. You won’t need a
real computer either — a mobile phone could probably access GitHub.com and write something.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="caveats"&gt;
&lt;h2&gt;Caveats&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;The build might take a couple minutes to finish (1:30 for the demo site;
YMMV)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When you commit and push to GitHub, the site will be published
unconditionally. If you don’t have a copy of Nikola for local use, there is
no way to preview your site.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="what-you-need"&gt;
&lt;h2&gt;What you need&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;A computer for the initial setup that can run Nikola. You can do it with any
OS (Linux, macOS, *BSD, but also Windows).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A GitHub account (free)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="setting-up-nikola"&gt;
&lt;h2&gt;Setting up Nikola&lt;/h2&gt;
&lt;p&gt;Start by creating a new Nikola site and customizing it to your liking. Follow
the &lt;a class="reference external" href="https://getnikola.com/getting-started.html"&gt;Getting Started guide&lt;/a&gt;. You
might also want to add support for &lt;a class="reference external" href="https://getnikola.com/handbook.html#configuring-other-input-formats"&gt;other input formats&lt;/a&gt;, namely
Markdown, but this is not a requirement.&lt;/p&gt;
&lt;p&gt;After you’re done, you must configure &lt;a class="reference external" href="https://getnikola.com/handbook.html#deploying-to-github"&gt;deploying to GitHub&lt;/a&gt; in Nikola. There
are a few important things you need to take care of:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Make your first deployment from your local computer and make sure your site
works right. Don’t forget to set up &lt;code class="docutils literal"&gt;.gitignore&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;code class="docutils literal"&gt;GITHUB_COMMIT_SOURCE&lt;/code&gt; and &lt;code class="docutils literal"&gt;GITHUB_REMOTE_NAME&lt;/code&gt; settings are
overridden, so you can use values appropriate for your local builds.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ensure that the correct branch for GitHub Pages is set on GitHub.com.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If everything works, you can make some change to your site (so you see that
rebuilding works), but don’t commit it just yet.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="setting-up-github-actions"&gt;
&lt;h2&gt;Setting up GitHub Actions&lt;/h2&gt;
&lt;p&gt;Next, we need to set up GitHub Actions. This is really straightforward.&lt;/p&gt;
&lt;p&gt;On your source branch, create a file named &lt;code class="docutils literal"&gt;.github/workflows/main.yml&lt;/code&gt; with the following contents:&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://getnikola.com/listings/github-workflow.yml.html"&gt;github-workflow.yml&lt;/a&gt;  &lt;a class="reference external" href="https://getnikola.com/listings/github-workflow.yml"&gt;(Source)&lt;/a&gt;&lt;/p&gt;
&lt;div class="code"&gt;&lt;table class="codetable"&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-github-actions.html#rest_code_350e9be37c2943ab9a28489e74a58554-1"&gt;&lt;code data-line-number=" 1"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_350e9be37c2943ab9a28489e74a58554-1" name="rest_code_350e9be37c2943ab9a28489e74a58554-1"&gt;&lt;/a&gt;&lt;span class="nt"&gt;on&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p p-Indicator"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;push&lt;/span&gt;&lt;span class="p p-Indicator"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-github-actions.html#rest_code_350e9be37c2943ab9a28489e74a58554-2"&gt;&lt;code data-line-number=" 2"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_350e9be37c2943ab9a28489e74a58554-2" name="rest_code_350e9be37c2943ab9a28489e74a58554-2"&gt;&lt;/a&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-github-actions.html#rest_code_350e9be37c2943ab9a28489e74a58554-3"&gt;&lt;code data-line-number=" 3"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_350e9be37c2943ab9a28489e74a58554-3" name="rest_code_350e9be37c2943ab9a28489e74a58554-3"&gt;&lt;/a&gt;&lt;span class="nt"&gt;jobs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-github-actions.html#rest_code_350e9be37c2943ab9a28489e74a58554-4"&gt;&lt;code data-line-number=" 4"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_350e9be37c2943ab9a28489e74a58554-4" name="rest_code_350e9be37c2943ab9a28489e74a58554-4"&gt;&lt;/a&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;nikola_build&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-github-actions.html#rest_code_350e9be37c2943ab9a28489e74a58554-5"&gt;&lt;code data-line-number=" 5"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_350e9be37c2943ab9a28489e74a58554-5" name="rest_code_350e9be37c2943ab9a28489e74a58554-5"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;runs-on&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-latest&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-github-actions.html#rest_code_350e9be37c2943ab9a28489e74a58554-6"&gt;&lt;code data-line-number=" 6"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_350e9be37c2943ab9a28489e74a58554-6" name="rest_code_350e9be37c2943ab9a28489e74a58554-6"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'Deploy&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Nikola&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;to&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;GitHub&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Pages'&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-github-actions.html#rest_code_350e9be37c2943ab9a28489e74a58554-7"&gt;&lt;code data-line-number=" 7"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_350e9be37c2943ab9a28489e74a58554-7" name="rest_code_350e9be37c2943ab9a28489e74a58554-7"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;steps&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-github-actions.html#rest_code_350e9be37c2943ab9a28489e74a58554-8"&gt;&lt;code data-line-number=" 8"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_350e9be37c2943ab9a28489e74a58554-8" name="rest_code_350e9be37c2943ab9a28489e74a58554-8"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&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;Check out&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-github-actions.html#rest_code_350e9be37c2943ab9a28489e74a58554-9"&gt;&lt;code data-line-number=" 9"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_350e9be37c2943ab9a28489e74a58554-9" name="rest_code_350e9be37c2943ab9a28489e74a58554-9"&gt;&lt;/a&gt;&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="nt"&gt;uses&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;actions/checkout@v2&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-github-actions.html#rest_code_350e9be37c2943ab9a28489e74a58554-10"&gt;&lt;code data-line-number="10"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_350e9be37c2943ab9a28489e74a58554-10" name="rest_code_350e9be37c2943ab9a28489e74a58554-10"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&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;Build and Deploy Nikola&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-github-actions.html#rest_code_350e9be37c2943ab9a28489e74a58554-11"&gt;&lt;code data-line-number="11"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_350e9be37c2943ab9a28489e74a58554-11" name="rest_code_350e9be37c2943ab9a28489e74a58554-11"&gt;&lt;/a&gt;&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="nt"&gt;uses&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;getnikola/nikola-action@v2&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;There might be a newer version of the action available, you can check the
latest version in the &lt;a class="reference external" href="https://github.com/getnikola/nikola-action"&gt;getnikola/nikola-action repo on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;By default, the action will install the latest stable release of &lt;code class="docutils literal"&gt;Nikola[extras]&lt;/code&gt;. If you want to use the bleeding-edge version from &lt;code class="docutils literal"&gt;master&lt;/code&gt;, or want to install some extra dependencies, you can provide a &lt;code class="docutils literal"&gt;requirements.txt&lt;/code&gt; file in the repository.&lt;/p&gt;
&lt;p&gt;Commit everything to GitHub:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code console"&gt;&lt;a id="rest_code_424074bc25e34f18a761a113a908f178-1" name="rest_code_424074bc25e34f18a761a113a908f178-1" href="https://getnikola.com/blog/automating-nikola-rebuilds-with-github-actions.html#rest_code_424074bc25e34f18a761a113a908f178-1"&gt;&lt;/a&gt;&lt;span class="go"&gt;git add .&lt;/span&gt;
&lt;a id="rest_code_424074bc25e34f18a761a113a908f178-2" name="rest_code_424074bc25e34f18a761a113a908f178-2" href="https://getnikola.com/blog/automating-nikola-rebuilds-with-github-actions.html#rest_code_424074bc25e34f18a761a113a908f178-2"&gt;&lt;/a&gt;&lt;span class="go"&gt;git commit -am "Automate builds with GitHub Actions"&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Hopefully, GitHub will build your site and deploy. Check the Actions tab in
your repository or your e-mail for build details. If there are any errors, make sure you followed this guide to the letter.&lt;/p&gt;
&lt;/section&gt;</description><category>automation</category><category>GitHub</category><category>GitHub Actions</category><category>tips</category><guid>https://getnikola.com/blog/automating-nikola-rebuilds-with-github-actions.html</guid><pubDate>Fri, 24 Apr 2020 22:24:48 GMT</pubDate></item><item><title>Automating Nikola rebuilds with Travis CI</title><link>https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html</link><dc:creator>Chris Warrick</dc:creator><description>&lt;p&gt;In this guide, we’ll set up Travis CI to rebuild a &lt;a class="reference external" href="https://getnikola.com/"&gt;Nikola&lt;/a&gt; website and host it on GitHub Pages.&lt;/p&gt;
&lt;aside class="admonition warning"&gt;
&lt;p class="admonition-title"&gt;Warning&lt;/p&gt;
&lt;p&gt;Travis CI will no longer be free, starting in 2021. We recommend GitHub Actions or GitLab CI instead — see the &lt;a class="reference external" href="https://getnikola.com/blog/automating-nikola-rebuilds-with-github-actions.html"&gt;GitHub Actions version of this guide&lt;/a&gt;.&lt;/p&gt;
&lt;/aside&gt;
&lt;section id="why"&gt;
&lt;h2&gt;Why?&lt;/h2&gt;
&lt;p&gt;By using Travis CI to build your site, you can easily blog from anywhere
you can edit text files. Which means you can blog with only a web
browser and &lt;a class="reference external" href="https://github.com"&gt;GitHub.com&lt;/a&gt;.
You also won’t need to install Nikola and Python to write. You won’t need a
real computer either — a mobile phone could probably access GitHub.com and write something.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="caveats"&gt;
&lt;h2&gt;Caveats&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;The build might take a couple minutes to finish (1:30 for the demo site;
YMMV)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When you commit and push to GitHub, the site will be published
unconditionally. If you don’t have a copy of Nikola for local use, there is
no way to preview your site.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="what-you-need"&gt;
&lt;h2&gt;What you need&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;A computer for the initial setup that can run Nikola and the Travis CI
command-line tool (written in Ruby) — you need a Unix-like system (Linux,
macOS, *BSD, etc.); Windows users should try &lt;em&gt;Bash on Ubuntu on Windows&lt;/em&gt;
aka &lt;em&gt;Windows Subsystem for Linux&lt;/em&gt; (available in Windows 10 starting with
Anniversary Update) or a Linux virtual machine.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A GitHub account (free)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A Travis CI account linked to your GitHub account (free)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="setting-up-nikola"&gt;
&lt;h2&gt;Setting up Nikola&lt;/h2&gt;
&lt;p&gt;Start by creating a new Nikola site and customizing it to your liking. Follow
the &lt;a class="reference external" href="https://getnikola.com/getting-started.html"&gt;Getting Started guide&lt;/a&gt;. You
might also want to add support for &lt;a class="reference external" href="https://getnikola.com/handbook.html#configuring-other-input-formats"&gt;other input formats&lt;/a&gt;, namely
Markdown, but this is not a requirement.&lt;/p&gt;
&lt;p&gt;After you’re done, you must configure &lt;a class="reference external" href="https://getnikola.com/handbook.html#deploying-to-github"&gt;deploying to GitHub&lt;/a&gt; in Nikola. There
are a few important things you need to take care of:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Make your first deployment from your local computer and make sure your site
works right. Don’t forget to set up &lt;code class="docutils literal"&gt;.gitignore&lt;/code&gt; (We’ll add two &lt;strong&gt;very&lt;/strong&gt;
important entries later.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You must set &lt;code class="docutils literal"&gt;GITHUB_COMMIT_SOURCE = False&lt;/code&gt; — otherwise, Travis CI will go
into an infinite loop.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We assume your source branch is &lt;code class="docutils literal"&gt;src&lt;/code&gt; and you deploy to &lt;code class="docutils literal"&gt;master&lt;/code&gt;. Any
other configuration requires editing &lt;code class="docutils literal"&gt;.travis.yml&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We enable builds only for the &lt;code class="docutils literal"&gt;src&lt;/code&gt; branch by default. Older versions of
the script did not include this provision, and thus committing to &lt;code class="docutils literal"&gt;master&lt;/code&gt;
(which you should not do, as your changes will be overwritten on next Travis
rebuild) used to cause &lt;code class="docutils literal"&gt;Rakefile&lt;/code&gt; errors.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If everything works, you can make some change to your site (so you see that
rebuilding works), but don’t commit it just yet.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="setting-up-travis-ci"&gt;
&lt;h2&gt;Setting up Travis CI&lt;/h2&gt;
&lt;p&gt;Next, we need to set up Travis CI. To do that, make sure you have the &lt;code class="docutils literal"&gt;ruby&lt;/code&gt;
and &lt;code class="docutils literal"&gt;gem&lt;/code&gt; tools installed on your system. If you don’t have them, install
them from your OS package manager.&lt;/p&gt;
&lt;p&gt;First, download/copy the &lt;code class="docutils literal"&gt;.travis.yml&lt;/code&gt; file (note the dot in the beginning;
the downloaded file doesn’t have it!) and adjust the real name, e-mail (used
for commits; line 15/16), and the username/repo name on line 24.  If you need
any other Python/apt packages to build your site, add them to your config. (For
&lt;code class="docutils literal"&gt;apt&lt;/code&gt; packages, you will need &lt;code class="docutils literal"&gt;addons: apt: packages:&lt;/code&gt; keys.)&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://getnikola.com/listings/travis.yml.html"&gt;travis.yml&lt;/a&gt;  &lt;a class="reference external" href="https://getnikola.com/listings/travis.yml"&gt;(Source)&lt;/a&gt;&lt;/p&gt;
&lt;div class="code"&gt;&lt;table class="codetable"&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-1"&gt;&lt;code data-line-number=" 1"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-1" name="rest_code_94ee803849914befbea478adcde8335a-1"&gt;&lt;/a&gt;&lt;span class="c1"&gt;# Travis CI config for automated Nikola blog deployments&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-2"&gt;&lt;code data-line-number=" 2"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-2" name="rest_code_94ee803849914befbea478adcde8335a-2"&gt;&lt;/a&gt;&lt;span class="nt"&gt;language&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;python&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-3"&gt;&lt;code data-line-number=" 3"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-3" name="rest_code_94ee803849914befbea478adcde8335a-3"&gt;&lt;/a&gt;&lt;span class="nt"&gt;cache&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;apt&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-4"&gt;&lt;code data-line-number=" 4"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-4" name="rest_code_94ee803849914befbea478adcde8335a-4"&gt;&lt;/a&gt;&lt;span class="nt"&gt;sudo&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;false&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-5"&gt;&lt;code data-line-number=" 5"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-5" name="rest_code_94ee803849914befbea478adcde8335a-5"&gt;&lt;/a&gt;&lt;span class="nt"&gt;branches&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-6"&gt;&lt;code data-line-number=" 6"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-6" name="rest_code_94ee803849914befbea478adcde8335a-6"&gt;&lt;/a&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;only&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-7"&gt;&lt;code data-line-number=" 7"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-7" name="rest_code_94ee803849914befbea478adcde8335a-7"&gt;&lt;/a&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;src&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-8"&gt;&lt;code data-line-number=" 8"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-8" name="rest_code_94ee803849914befbea478adcde8335a-8"&gt;&lt;/a&gt;&lt;span class="nt"&gt;python&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-9"&gt;&lt;code data-line-number=" 9"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-9" name="rest_code_94ee803849914befbea478adcde8335a-9"&gt;&lt;/a&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;3.6&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-10"&gt;&lt;code data-line-number="10"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-10" name="rest_code_94ee803849914befbea478adcde8335a-10"&gt;&lt;/a&gt;&lt;span class="nt"&gt;before_install&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-11"&gt;&lt;code data-line-number="11"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-11" name="rest_code_94ee803849914befbea478adcde8335a-11"&gt;&lt;/a&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;git config --global user.name 'Travis CI'&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-12"&gt;&lt;code data-line-number="12"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-12" name="rest_code_94ee803849914befbea478adcde8335a-12"&gt;&lt;/a&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;git config --global user.email 'travis@invalid'&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-13"&gt;&lt;code data-line-number="13"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-13" name="rest_code_94ee803849914befbea478adcde8335a-13"&gt;&lt;/a&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;git config --global push.default 'simple'&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-14"&gt;&lt;code data-line-number="14"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-14" name="rest_code_94ee803849914befbea478adcde8335a-14"&gt;&lt;/a&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;pip install -U --upgrade-strategy=eager pip setuptools wheel&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-15"&gt;&lt;code data-line-number="15"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-15" name="rest_code_94ee803849914befbea478adcde8335a-15"&gt;&lt;/a&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;echo -e 'Host github.com\n    StrictHostKeyChecking no' &amp;gt;&amp;gt; ~/.ssh/config&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-16"&gt;&lt;code data-line-number="16"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-16" name="rest_code_94ee803849914befbea478adcde8335a-16"&gt;&lt;/a&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;eval "$(ssh-agent -s)"&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-17"&gt;&lt;code data-line-number="17"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-17" name="rest_code_94ee803849914befbea478adcde8335a-17"&gt;&lt;/a&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;chmod 600 id_rsa&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-18"&gt;&lt;code data-line-number="18"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-18" name="rest_code_94ee803849914befbea478adcde8335a-18"&gt;&lt;/a&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;ssh-add id_rsa&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-19"&gt;&lt;code data-line-number="19"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-19" name="rest_code_94ee803849914befbea478adcde8335a-19"&gt;&lt;/a&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;git remote rm origin&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-20"&gt;&lt;code data-line-number="20"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-20" name="rest_code_94ee803849914befbea478adcde8335a-20"&gt;&lt;/a&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;git remote add origin git@github.com:USERNAME/REPO.git&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-21"&gt;&lt;code data-line-number="21"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-21" name="rest_code_94ee803849914befbea478adcde8335a-21"&gt;&lt;/a&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;git fetch origin master&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-22"&gt;&lt;code data-line-number="22"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-22" name="rest_code_94ee803849914befbea478adcde8335a-22"&gt;&lt;/a&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;git branch master FETCH_HEAD&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-23"&gt;&lt;code data-line-number="23"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-23" name="rest_code_94ee803849914befbea478adcde8335a-23"&gt;&lt;/a&gt;&lt;span class="nt"&gt;install&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-24"&gt;&lt;code data-line-number="24"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-24" name="rest_code_94ee803849914befbea478adcde8335a-24"&gt;&lt;/a&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;pip install -U --upgrade-strategy=eager 'Nikola[extras]'&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-25"&gt;&lt;code data-line-number="25"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-25" name="rest_code_94ee803849914befbea478adcde8335a-25"&gt;&lt;/a&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-26"&gt;&lt;code data-line-number="26"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-26" name="rest_code_94ee803849914befbea478adcde8335a-26"&gt;&lt;/a&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;nikola build &amp;amp;&amp;amp; nikola github_deploy -m 'Nikola auto deploy [ci skip]'&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-27"&gt;&lt;code data-line-number="27"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-27" name="rest_code_94ee803849914befbea478adcde8335a-27"&gt;&lt;/a&gt;&lt;span class="nt"&gt;notifications&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-28"&gt;&lt;code data-line-number="28"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-28" name="rest_code_94ee803849914befbea478adcde8335a-28"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-29"&gt;&lt;code data-line-number="29"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-29" name="rest_code_94ee803849914befbea478adcde8335a-29"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;on_success&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;change&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_94ee803849914befbea478adcde8335a-30"&gt;&lt;code data-line-number="30"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;a id="rest_code_94ee803849914befbea478adcde8335a-30" name="rest_code_94ee803849914befbea478adcde8335a-30"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;on_failure&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;always&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;Next, we need to generate a SSH key for Travis CI.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code console"&gt;&lt;a id="rest_code_32d5353b447f40a2b045bd7ae6bd5ea6-1" name="rest_code_32d5353b447f40a2b045bd7ae6bd5ea6-1" href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_32d5353b447f40a2b045bd7ae6bd5ea6-1"&gt;&lt;/a&gt;&lt;span class="go"&gt;echo id_rsa &amp;gt;&amp;gt; .gitignore&lt;/span&gt;
&lt;a id="rest_code_32d5353b447f40a2b045bd7ae6bd5ea6-2" name="rest_code_32d5353b447f40a2b045bd7ae6bd5ea6-2" href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_32d5353b447f40a2b045bd7ae6bd5ea6-2"&gt;&lt;/a&gt;&lt;span class="go"&gt;echo id_rsa.pub &amp;gt;&amp;gt; .gitignore&lt;/span&gt;
&lt;a id="rest_code_32d5353b447f40a2b045bd7ae6bd5ea6-3" name="rest_code_32d5353b447f40a2b045bd7ae6bd5ea6-3" href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_32d5353b447f40a2b045bd7ae6bd5ea6-3"&gt;&lt;/a&gt;&lt;span class="go"&gt;ssh-keygen -C TravisCI -f id_rsa -N ''&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Open the &lt;code class="docutils literal"&gt;id_rsa.pub&lt;/code&gt; file and copy its contents. Go to GitHub → your page
repository → Settings → Deploy keys and add it there. Make sure &lt;em&gt;Allow write
access&lt;/em&gt; is checked.&lt;/p&gt;
&lt;p&gt;And now, time for our venture into the Ruby world. Install the &lt;code class="docutils literal"&gt;travis&lt;/code&gt; gem:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code console"&gt;&lt;a id="rest_code_9d16a046f50444138ad6fa72f1b17397-1" name="rest_code_9d16a046f50444138ad6fa72f1b17397-1" href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_9d16a046f50444138ad6fa72f1b17397-1"&gt;&lt;/a&gt;&lt;span class="go"&gt;gem install --user-install travis&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You can then use the &lt;code class="docutils literal"&gt;travis&lt;/code&gt; command if you have configured your &lt;code class="docutils literal"&gt;$PATH&lt;/code&gt;
for RubyGems; if you haven’t, the tool will output a path to use on the first
lines (eg.  &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;~/.gem/ruby/2.0.0/bin/travis&lt;/span&gt;&lt;/code&gt;)&lt;/p&gt;
&lt;p&gt;We’ll use the Travis CI command-line client to log in (using your GitHub
password), enable the repository and encrypt our SSH key. Run the following
three commands, one at a time (they are interactive):&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code console"&gt;&lt;a id="rest_code_8e904aafc38c49a9a07bc1030096cd4b-1" name="rest_code_8e904aafc38c49a9a07bc1030096cd4b-1" href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_8e904aafc38c49a9a07bc1030096cd4b-1"&gt;&lt;/a&gt;&lt;span class="go"&gt;travis login&lt;/span&gt;
&lt;a id="rest_code_8e904aafc38c49a9a07bc1030096cd4b-2" name="rest_code_8e904aafc38c49a9a07bc1030096cd4b-2" href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_8e904aafc38c49a9a07bc1030096cd4b-2"&gt;&lt;/a&gt;&lt;span class="go"&gt;travis enable&lt;/span&gt;
&lt;a id="rest_code_8e904aafc38c49a9a07bc1030096cd4b-3" name="rest_code_8e904aafc38c49a9a07bc1030096cd4b-3" href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_8e904aafc38c49a9a07bc1030096cd4b-3"&gt;&lt;/a&gt;&lt;span class="go"&gt;travis encrypt-file id_rsa --add&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Commit everything to GitHub:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code console"&gt;&lt;a id="rest_code_244afba17459476fb98aa77e0b3e829e-1" name="rest_code_244afba17459476fb98aa77e0b3e829e-1" href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_244afba17459476fb98aa77e0b3e829e-1"&gt;&lt;/a&gt;&lt;span class="go"&gt;git add .&lt;/span&gt;
&lt;a id="rest_code_244afba17459476fb98aa77e0b3e829e-2" name="rest_code_244afba17459476fb98aa77e0b3e829e-2" href="https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html#rest_code_244afba17459476fb98aa77e0b3e829e-2"&gt;&lt;/a&gt;&lt;span class="go"&gt;git commit -am "Automate builds with Travis CI"&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Hopefully, Travis CI will build your site and deploy. Check the Travis CI
website or your e-mail for a notification. If there are any errors, make sure
you followed this guide to the letter.&lt;/p&gt;
&lt;p&gt;(Revision 4a, 2020-04-24: Add link to GitHub Actions version of this guide)&lt;/p&gt;
&lt;/section&gt;</description><category>automation</category><category>GitHub</category><category>tips</category><category>Travis CI</category><guid>https://getnikola.com/blog/automating-nikola-rebuilds-with-travis-ci.html</guid><pubDate>Wed, 24 Aug 2016 18:05:25 GMT</pubDate></item></channel></rss>