Google Chrome release and version info as JSON (self updating)

Overview

chrome-versions Update version info GitHub last commit

Self updating repository to store Google Chrome release and version info as JSON.

Windows macOS Linux Android
Latest Version Latest Version Latest Version Latest Version

TL;DR

Use a CDN to fetch the data as needed, examples:

Data

The ./data directory contains the JSON files:

  • The data is split by the two main release channels (dev and stable)
  • The data is split by the platform (windows, mac, linux, android)
  • In addition combined version info for all platforms is provided under all

Info

  • Contains the full release info, either as latest.json or list.json

Version

  • Contains brief version info, either as latest.json or list.json

Trigger your own Github workflow on new chrome versions

Unfortunately Github Actions has no broadcasting feature and this repo can only dispatch to manually defined repos.

As a workaround you can add a new workflow that will poll the JSON file relevant to you recurringly (using a cron trigger), hash the data and use Github's built-in caching feature to understand if a change happened and your other workflow should be triggered.

Note:

  • The workflow below is very quick and checking if new versions are available takes only a few seconds
  • Githubs removes cache entries not accessed in 7 days, which is not a problem given this workflow runs more often
  • The first time the workflow is triggered it has not cached the hash of the chrome versions yet and will trigger the target workflow

Prerequisites:

  • Your target workflow needs a workflow_call trigger:
on:
  workflow_call:

Poll for changes using cron

Save the below workflow as .github/workflows/check-chrome-versions.yml in you repo:

name: "[cron] Check chrome versions"

on:
  workflow_dispatch:
  schedule:
    - cron: "0 * * * *" # https://crontab.guru/every-1-hour

jobs:
  check-versions:
    runs-on: ubuntu-latest
    outputs:
      cache-hit: ${{ steps.cache.outputs.cache-hit }}
    env:
      # You can use any JSON file here
      CHROME_VERSION_URL: "https://cdn.jsdelivr.net/gh/berstend/chrome-versions/data/stable/all/version/latest.json"

    steps:
      - name: Get hash of chrome versions
        id: get-versions
        run: |
          json=$(curl -s ${{ env.CHROME_VERSION_URL }})
          echo json: ${json}
          hash=$(echo -n $json | md5sum)
          echo hash: ${hash}
          echo "::set-output name=hash::$hash"
        shell: bash

      - name: Setup cache based on hash
        id: cache
        uses: actions/cache@v3
        with:
          path: ~/cache-chrome-version # no-op
          key: chrome-${{ steps.get-versions.outputs.hash }}

      - name: "Cache hit: Exit"
        if: steps.cache.outputs.cache-hit == 'true'
        run: echo "cache hit, no new chrome versions"

  trigger-workflow:
    if: needs.check-versions.outputs.cache-hit != 'true'
    needs: check-versions
    uses: ./.github/workflows/build.yml # Change this to your target workflow

Change ./.github/workflows/build.yml to whatever workflow you want to trigger on new chrome versions.

Troubleshooting:

  • Permission errors: Workflows inherit their permissions from the parent, if you set special permissions in your target workflow you need to define them in the above one as well
  • "(...) doing so would exceed the limit on called workflow depth of 2" error: Github unfortunately doesn't allow reusable workflows to call reusable workflows

Folder structure

data
├── dev
│   ├── all
│   │   ├── info
│   │   │   ├── latest.json
│   │   │   └── list.json
│   │   └── version
│   │       ├── latest.json
│   │       └── list.json
│   ├── android
│   │   ├── info
│   │   │   ├── latest.json
│   │   │   └── list.json
│   │   └── version
│   │       ├── latest.json
│   │       └── list.json
│   ├── linux
│   │   ├── info
│   │   │   ├── latest.json
│   │   │   └── list.json
│   │   └── version
│   │       ├── latest.json
│   │       └── list.json
│   ├── mac
│   │   ├── info
│   │   │   ├── latest.json
│   │   │   └── list.json
│   │   └── version
│   │       ├── latest.json
│   │       └── list.json
│   └── windows
│       ├── info
│       │   ├── latest.json
│       │   └── list.json
│       └── version
│           ├── latest.json
│           └── list.json
└── stable
    ├── all
    │   ├── info
    │   │   ├── latest.json
    │   │   └── list.json
    │   └── version
    │       ├── latest.json
    │       └── list.json
    ├── android
    │   ├── info
    │   │   ├── latest.json
    │   │   └── list.json
    │   └── version
    │       ├── latest.json
    │       └── list.json
    ├── linux
    │   ├── info
    │   │   ├── latest.json
    │   │   └── list.json
    │   └── version
    │       ├── latest.json
    │       └── list.json
    ├── mac
    │   ├── info
    │   │   ├── latest.json
    │   │   └── list.json
    │   └── version
    │       ├── latest.json
    │       └── list.json
    └── windows
        ├── info
        │   ├── latest.json
        │   └── list.json
        └── version
            ├── latest.json
            └── list.json

License

MIT

You might also like...

Self-use version of web page theme Rocky for static blogger Gridea.

Gridea Theme Rocky Custom Self-use version of web page theme Rocky for static blogger Gridea. 中文说明 Description This is a self-use version of web page

Oct 7, 2022

A self-hosted, customizable and ad-free Google Search experience

A self-hosted, customizable and ad-free Google Search experience

Giggle A self-hosted, customizable and ad-free Google Search experience. What does it do? Giggle lets you run Google searches against allow- and block

Dec 15, 2022

A self-hosted Thumbnail generator/finder which creates thumbnails based on folder names and google search results.

A self-hosted Thumbnail generator/finder which creates thumbnails based on folder names and google search results.

Thumba A self hosted Thumbnail generator/finder which creates thumbnails based on folder names and google search results. Description This project use

Dec 15, 2022

🚀 A web extension starter built with React, Typescript, and Tailwind CSS. Build once, and run on multiple browsers: Google Chrome, Mozilla Firefox, Microsoft Edge, Brave, and Opera..

🚀 A web extension starter built with React, Typescript, and Tailwind CSS. Build once, and run on multiple browsers: Google Chrome, Mozilla Firefox, Microsoft Edge, Brave, and Opera..

Web Extension Starter A web extension starter, built with React, Typescript, and Tailwind CSS. Build once, and run on multiple browsers: Google Chrome

Dec 28, 2022

The Remix version of the fakebooks app demonstrated on https://remix.run. Check out the CRA version: https://github.com/kentcdodds/fakebooks-cra

Remix Fakebooks App This is a (very) simple implementation of the fakebooks mock app demonstrated on remix.run. There is no database, but there is an

Dec 22, 2022

CPUSim is an open-source web-based animated x64 CPU simulator for educational purposes. Provided as a folder for easy distribution and without installation on the Google Chrome Browser. Powered by Unicorn.js, Capstone.js, Quasar and NASM.

CPUSim is an open-source web-based animated x64 CPU simulator for educational purposes. Provided as a folder for easy distribution and without installation on the Google Chrome Browser. Powered by Unicorn.js, Capstone.js, Quasar and NASM.

CPUSim - A Graphical CPU Simulator CPUSim is an open-source web-based animated x64 CPU simulator for educational purposes. Provided as a folder for ea

Oct 26, 2022

Semantic Release plugin to create and publish NuGet packages.

semantic-release-nuget semantic-release plugin to create and publish a NuGet package. Step Description verifyConditions Verify the presence of the NUG

Jan 2, 2023

Minimalistic, opinionated, and predictable release automation tool.

Minimalistic, opinionated, and predictable release automation tool.

Release Minimalistic, opinionated, and predictable release automation tool. General idea Think Prettier but for automated releases: minimalistic, opin

Dec 18, 2022

A simple lock-and-release eventually-consistent DB to be consumed by multi-threaded applications in node.

worsen - a persistence store for quick prototyping A simple lock-and-release eventually-consistent DB to be consumed by multi-threaded applications in

Oct 1, 2022
Owner
berstend̡̲̫̹̠̖͚͓̔̄̓̐̄͛̀͘
@berstend [ˈbɛʁstn̩t]
berstend̡̲̫̹̠̖͚͓̔̄̓̐̄͛̀͘
LiveJSON provides LiveView-like updating for JSON objects rather than DOM elements.

live_json LiveJSON provides LiveView-like updating for JSON objects rather than DOM elements. It works within your existing LiveViews - just use push_

Rich Jones 57 Dec 29, 2022
Firebase SDK 9 + Google Sign In + Chrome Extension Manifest Version 3 + Webpack

Firebase SDK 9 + Google Sign In + Chrome Extension Manifest Version 3 + Webpack Demo Find this Chrome Extension Setup and working demo here or on Yout

Rasika Warade 40 Dec 28, 2022
⏱ A Google Chrome extension for keeping track of who is talking during Google Meets

Am I Talking A Lot? ⏱ A Google Chrome extension for keeping track of who is talking during Google Meets Features Tracks talking time for each particip

Sean McPherson 8 Oct 5, 2022
Google-Drive-Directory-Index | Combining the power of Cloudflare Workers and Google Drive API will allow you to index your Google Drive files on the browser.

?? Google-Drive-Directory-Index Combining the power of Cloudflare Workers and Google Drive will allow you to index your Google Drive files on the brow

Aicirou 127 Jan 2, 2023
Google-reviews-crawler - A simple Playwright crawler that stores Google Maps Place/Business reviews to a JSON file.

google-reviews-crawler A simple Playwright crawler that stores Google Maps Place/Business reviews to a JSON file. Usage Clone the repo, install the de

￸A￸l￸e￸x D￸o￸m￸a￸k￸i￸d￸i￸s 6 Oct 26, 2022
JCS (JSON Canonicalization Scheme), JSON digests, and JSON Merkle hashes

JSON Hash This package contains the following JSON utilties for Deno: digest.ts provides cryptographic hash digests of JSON trees. It guarantee that d

Hong Minhee (洪 民憙) 13 Sep 2, 2022
Package fetcher is a bot messenger which gather npm packages by uploading either a json file (package.json) or a picture representing package.json. To continue...

package-fetcher Ce projet contient un boilerplate pour un bot messenger et l'executable Windows ngrok qui va permettre de créer un tunnel https pour c

AILI Fida Aliotti Christino 2 Mar 29, 2022
A simple App for creating, deleting and Updating To Do lists.

To-do-list-demo: Add & Remove Learning objectives Use webpack to bundle JavaScript. Learn how to use proper ES6 syntax. Use ES6 modules to write modul

Kasaija Kenneth 7 Oct 18, 2022
A library for updating your immutable state in JavaScript applications.

ionic-bond A library for updating immutable states in JavaScript applications. Introduction This library is a very lightweight replacement for immer,

null 10 Nov 15, 2022
This is a demo of updating a map to show air quality data for the user’s current location using Next.js Advanced Middleware, powered by Netlify Edge Functions.

Show Local Air Quality Based on the User's Location Use AQI data to show the air quality near the current user. This is built using Next.js Advanced M

Jason Lengstorf 8 Nov 4, 2022