Feed.xml not being produced

Why is my configuration no longer producing feed.xml?

I noticed you do not have a gemfile. Did you happen to remove this or have you never had one?

I believe I never had one

I cloned your repo and made a number of changes to fix the problem. As you can see from the following screenshot, I was able to build your site on a GitHub Page of my own and use Fluent Reader to open your feed.xml file.

When I ran your code locally, I received a good number of errors before I could reliably load your site. Do you develop locally on your computer or with a Docker image? If not, I suggest you get yourself set up so you can test your work there and you will see the errors Jekyll is throwing for your site.

GitHub Pages is quite nice in that they sort of set you up quickly to do a simple blogging website, but very often the build errors are either hidden or sort of washed over so you rarely see any prioblems. To address that, I always build my site locally, then push my changes up to the GH repo.

That said, I will share with

:mechanic: The fix: modify your _config.yml file

Open your _config.yml file and add the following lines:

baseurl: ""
url: "https://dougbreaux.github.io"
theme: minima

Then, remove the following line:

remote_theme: jekyll/minima

The changes I just shared may fix the problem, but if they do not, please read on and consider using my other changes.

:card_index_dividers: Gemfile, and Gemfile.lock

Jekyll depends on certain product versions in order to run properly. Also, GitHub Pages requires certain Dependencies. So if my changes did not work, follow these steps to create a Gemfile file and a Gemfile.lock file in the root of your repo.

./Gemfile

source "https://rubygems.org"
gem "jekyll", "~> 3.9.0"
gem "webrick", "~> 1.7"
gem "kramdown-parser-gfm", "= 1.1.0"
gem "minima", "= 2.5.1"

And here is the Gemfile.lock:
./Gemfile.lock

GEM
  remote: https://rubygems.org/
  specs:
    addressable (2.8.0)
      public_suffix (>= 2.0.2, < 5.0)
    colorator (1.1.0)
    concurrent-ruby (1.1.10)
    em-websocket (0.5.3)
      eventmachine (>= 0.12.9)
      http_parser.rb (~> 0)
    eventmachine (1.2.7)
    ffi (1.15.5)
    forwardable-extended (2.6.0)
    http_parser.rb (0.8.0)
    i18n (0.9.5)
      concurrent-ruby (~> 1.0)
    jekyll (3.9.2)
      addressable (~> 2.4)
      colorator (~> 1.0)
      em-websocket (~> 0.5)
      i18n (~> 0.7)
      jekyll-sass-converter (~> 1.0)
      jekyll-watch (~> 2.0)
      kramdown (>= 1.17, < 3)
      liquid (~> 4.0)
      mercenary (~> 0.3.3)
      pathutil (~> 0.9)
      rouge (>= 1.7, < 4)
      safe_yaml (~> 1.0)
    jekyll-feed (0.16.0)
      jekyll (>= 3.7, < 5.0)
    jekyll-sass-converter (1.5.2)
      sass (~> 3.4)
    jekyll-seo-tag (2.8.0)
      jekyll (>= 3.8, < 5.0)
    jekyll-watch (2.2.1)
      listen (~> 3.0)
    kramdown (2.4.0)
      rexml
    kramdown-parser-gfm (1.1.0)
      kramdown (~> 2.0)
    liquid (4.0.3)
    listen (3.7.1)
      rb-fsevent (~> 0.10, >= 0.10.3)
      rb-inotify (~> 0.9, >= 0.9.10)
    mercenary (0.3.6)
    minima (2.5.1)
      jekyll (>= 3.5, < 5.0)
      jekyll-feed (~> 0.9)
      jekyll-seo-tag (~> 2.1)
    pathutil (0.16.2)
      forwardable-extended (~> 2.6)
    public_suffix (4.0.7)
    rb-fsevent (0.11.1)
    rb-inotify (0.10.1)
      ffi (~> 1.0)
    rexml (3.2.5)
    rouge (3.30.0)
    safe_yaml (1.0.5)
    sass (3.7.4)
      sass-listen (~> 4.0.0)
    sass-listen (4.0.0)
      rb-fsevent (~> 0.9, >= 0.9.4)
      rb-inotify (~> 0.9, >= 0.9.7)
    webrick (1.7.0)

PLATFORMS
  arm64-darwin-21

DEPENDENCIES
  jekyll (~> 3.9.0)
  kramdown-parser-gfm (= 1.1.0)
  minima (= 2.5.1)
  webrick (~> 1.7)

BUNDLED WITH
   2.3.9

:technologist: Recommendation: Test locally

I do not know if you ever test your site locally, but given there are no .gitignore, Gemfile, and Gemfile.lock files, I assume you are not. It was easy for me to see the issues when bringing your files down and running bundle exec jekyll serve --livereload.

There is, however, some work to do in order to test locally. Here are the high-level steps:

  1. Install Jekyll locally or set it up in a Docker container. Go to the resources section below for help on that, then come back to this section
  2. Add a .gitignore file at the root of your repo (best practice)
  3. Add a Gemfile (created using the bundle commands I share a little later in this message)
  4. Add a Gemfile.lock (created using the bundle commands I share a little later in this message)
  5. Run your code with bundle exec jekyll serve --livereload

/.gitignore

_site/
.sass-cache/
.jekyll-cache/
.jekyll-metadata
**/.DS_Store
.bundle/
vendor/

Create the Gemfile and Gemfile.lock files by running the following commands in the terminal window within your repo:

bundle init
bundle add jekyll --version "~>3.9.0"
bundle add webrick
bundle add "minima" --version "2.5.1" 
bundle add "kramdown-parser-gfm" --version "1.1.0"
bundle install
bundle update

Note that I specify version numbers because GitHub Pages require certain Dependencies.

With your .gitignore, Gemfile, and Gemfile.lock in place, run the following command:

bundle exec jekyll serve --livereload

Now, when you make changes, you can see them locally. I will point out that you do have some things hard-coded in your site, like the assets folder that such as the logo that should be using relative urls, but that is something you can work on over time.

Resources: :link: Create a local development environment

If you want to install Jekyll locally on your computer, you also need to install Ruby. It will take a little work, so prepare yourself :slight_smile:. That said, I do provide detailed steps that use Docker, so you do not have to manage Ruby on your computer. Instead, Ruby and Jekyll will be contained within a Docker image. I assume you will be using Visual Studio Code with my videos.

Here is the official documentation to install Jekyll locally:

Here is a video I created that shows how to install Jekyll locally
Note: since the creation of this video, Ruby made a change, so make sure you type bundle add webrick toward the end. This video should work on Intel and Apple Silicon. If you are on Linux or Windows, I am sorry but I do not have videos for that, but the Docker option should work.

Finally, if you want to go the Docker route, here is a video that will get you up and running. While I tested on a Mac, it should work just fine on Linux and Windows:

1 Like

That’s a lot of detail, thanks!

I’ll reply what I can so far.

  • I do not develop locally. Really don’t want to climb that learning and maintenance curve if I don’t have to.
  • Since Pages has moved to GitHub Actions, there does seem to be some better logging, but I haven’t yet looked at details there. I will check that also.
  • The reason I’ve been pointing to remote_theme is that I needed features that weren’t available in the GitHub version. I guess I don’t know if this is still true.

That said, I’m certainly willing to try the simple fix. Will report back here, and greatly appreciate the help.

Well, I tried to cheat and only add the baseurl and url, leaving the remote_theme, and I still don’t have a feed.xml.

No errors in the GitHub Actions build, though, and no reference to “feed” at all.

Only 1 deprecation warning:

Run actions/jekyll-build-pages@v1
  
/usr/bin/docker run --name ghcrioactionsjekyllbuildpagesv104_7ceb54 --label 4cd98f --workdir /github/workspace --rm -e INPUT_SOURCE -e INPUT_DESTINATION -e INPUT_FUTURE -e INPUT_BUILD_REVISION -e INPUT_VERBOSE -e INPUT_TOKEN -e HOME -e GITHUB_JOB -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_REPOSITORY_OWNER -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RETENTION_DAYS -e GITHUB_RUN_ATTEMPT -e GITHUB_ACTOR -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_SERVER_URL -e GITHUB_API_URL -e GITHUB_GRAPHQL_URL -e GITHUB_REF_NAME -e GITHUB_REF_PROTECTED -e GITHUB_REF_TYPE -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e GITHUB_ACTION_REPOSITORY -e GITHUB_ACTION_REF -e GITHUB_PATH -e GITHUB_ENV -e GITHUB_STEP_SUMMARY -e RUNNER_OS -e RUNNER_ARCH -e RUNNER_NAME -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e ACTIONS_CACHE_URL -e ACTIONS_ID_TOKEN_REQUEST_URL -e...
       Deprecation: The 'gems' configuration option has been renamed to 'plugins'. Please update your config file accordingly.

Bah, going to the non-remote theme made the feed work, but lost my minima theme stuff. Since it seems not many people use feeds anyways these days, I’d rather disable the feed than lose the theme.

Oh well, greatly appreciate the attempt.

1 Like