Skip to content

Limit and/or Cache API requests to avoid: 403 - API rate limit exceeded for installation ID ___ #266

@trinitronx

Description

@trinitronx

I just switched to using Jekyll 4.3.2 and tried to deploy a static site using this theme, which lists all current GitHub repositories on the generated static site page. To do this, it uses jekyll-github-metadata gem (version 2.16.0) to gather all repositories for my GitHub user.

Apparently, this results in a lot of API requests (for my user, over ~486!) and quickly hits the rate limit when using GITHUB_TOKEN in a GitHub Actions workflow.

Would it be possible to cache or limit API requests further so static site deployments will complete successfully in GitHub Actions?

For example: The jekyll build --verbose output shows each repo is queried for both contributors and releases, but the template doesn't even need this information

  Logging at level: debug
    Jekyll Version: 4.3.2
Configuration file: /mnt/terabyte/src/sites/trinitronx.github.io/_config.yml
Configuration file: /mnt/terabyte/src/sites/trinitronx.github.io/_config_dev.yml
         Requiring: jekyll-github-metadata
To use retry middleware with Faraday v2.0+, install `faraday-retry` gem
   GitHub Metadata: Initializing...
            Source: /mnt/terabyte/src/sites/trinitronx.github.io
       Destination: /mnt/terabyte/src/sites/trinitronx.github.io/_site
 Incremental build: enabled
      Generating... 
           Reading: /_layouts/default.html
       EntryFilter: excluded /LICENSE.neumorphism
       EntryFilter: excluded /README.md
       EntryFilter: excluded /docs
       EntryFilter: excluded /package.json
       EntryFilter: excluded /node_modules
       EntryFilter: excluded /.jekyll-cache
       EntryFilter: excluded /.github
       EntryFilter: excluded /.ruby-version
       EntryFilter: excluded /Gemfile
       EntryFilter: excluded /yarn.lock
       EntryFilter: excluded /.ruby-gemset
       EntryFilter: excluded /Gemfile.lock
       EntryFilter: excluded /.gitignore
       EntryFilter: excluded /gulpfile.js
           Reading: index.html
           Reading: _data/projects.yml
           Reading: _data/skills-frameworks.yml
           Reading: _data/skills-languages.yml
           Reading: _data/skills-tools.yml
           Reading: _data/timeline.yml
         Rendering: index.html
  Pre-Render Hooks: index.html
  Rendering Markup: index.html
Post-Convert Hooks: index.html
  Rendering Layout: index.html
   GitHub Metadata: Generating for trinitronx/trinitronx.github.io
   GitHub Metadata: Calling @client.list_repos("trinitronx", {:type=>"public", :accept=>"application/vnd.github.mercy-preview+json"})
   GitHub Metadata: Calling @client.releases("trinitronx/action-doctl")
   GitHub Metadata: Calling @client.contributors("trinitronx/action-doctl")
   GitHub Metadata: Calling @client.releases("trinitronx/ansible")
   GitHub Metadata: Calling @client.contributors("trinitronx/ansible")
   GitHub Metadata: Calling @client.releases("trinitronx/ansible-examples")
   GitHub Metadata: Calling @client.contributors("trinitronx/ansible-examples")


[... SNIP ...]
[... TOTAL number of releases + contributors API log lines = 486 ...]
[... SNIP ...]


   GitHub Metadata: Calling @client.releases("trinitronx/zengge-lightcontrol")
   GitHub Metadata: Calling @client.contributors("trinitronx/zengge-lightcontrol")
           Writing: /mnt/terabyte/src/sites/trinitronx.github.io/_site/index.html
  Writing Metadata: .jekyll-metadata
                    done in 177.699 seconds.
 Auto-regeneration: disabled. Use --watch to enable.
[18:31:02] Finished 'jekyll' after 2.97 min

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions