add scripting for auto-generating releases listing

This commit is contained in:
Daniel Micay 2022-02-19 11:56:00 -05:00
parent 83a3aaf65d
commit 42919855d5
3 changed files with 116 additions and 98 deletions

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
nginx-tmp nginx-tmp
node_modules node_modules
static-tmp static-tmp
releases-base

View File

@ -5,6 +5,10 @@ shopt -s dotglob extglob globstar
export PATH="$PWD/node_modules/.bin:$PATH" export PATH="$PWD/node_modules/.bin:$PATH"
# can use file:// to avoid network requests
[[ -f releases-base ]] && RELEASES_BASE=$(cat releases-base)
RELEASES_BASE=${RELEASES_BASE:-https://releases.grapheneos.org}
rm -rf nginx-tmp rm -rf nginx-tmp
cp -a nginx nginx-tmp cp -a nginx nginx-tmp
@ -24,7 +28,7 @@ find static-tmp -name '*.css' -exec csso {} -o {} \;
eslint static-tmp/**/!(fastboot.min.m|z-worker-pako.|pako_inflate.min.|)js eslint static-tmp/**/!(fastboot.min.m|z-worker-pako.|pako_inflate.min.|)js
find static-tmp -name '*.js' -exec terser --ecma 2021 --module -cmo {} {} \; find static-tmp -name '*.js' -exec terser --ecma 2021 --module -cmo {} {} \;
replace="" replace=
for file in static-tmp/**/*.css static-tmp/js/*.js static-tmp/mask-icon.svg; do for file in static-tmp/**/*.css static-tmp/js/*.js static-tmp/mask-icon.svg; do
hash=$(sha256sum "$file" | head -c 8) hash=$(sha256sum "$file" | head -c 8)
sri_hash=sha256-$(openssl dgst -sha256 -binary "$file" | openssl base64 -A) sri_hash=sha256-$(openssl dgst -sha256 -binary "$file" | openssl base64 -A)
@ -40,9 +44,22 @@ for file in static-tmp/**/*.css static-tmp/js/*.js static-tmp/mask-icon.svg; do
replace+=";s@{{integrity|/${file#*/}}}@${sri_hash}@g" replace+=";s@{{integrity|/${file#*/}}}@${sri_hash}@g"
replace+=";s@{{path|/${file#*/}}}@/${dest#*/}@g" replace+=";s@{{path|/${file#*/}}}@/${dest#*/}@g"
done done
sed -i "$replace" static-tmp/**/*.html nginx-tmp/nginx.conf nginx-tmp/snippets/preload.conf sed -i "$replace" static-tmp/**/*.html nginx-tmp/nginx.conf nginx-tmp/snippets/preload.conf
replace=
devices=(raven oriole barbet redfin bramble sunfish coral flame bonito sargo crosshatch blueline)
channels=(stable beta)
for device in ${devices[@]}; do
for channel in ${channels[@]}; do
metadata=$(curl -s $RELEASES_BASE/$device-$channel)
build_id=$(echo -n $metadata | cut -d ' ' -f 3)
build_number=$(echo -n $metadata | cut -d ' ' -f 1)
replace+=";s@{{$device-$channel-BUILD_ID}}@$build_id@g"
replace+=";s@{{$device-$channel-BUILD_NUMBER}}@$build_number@g"
done
done
sed -i "$replace" static-tmp/releases.html
gixy nginx-tmp/nginx.conf gixy nginx-tmp/nginx.conf
xmllint --noout static-tmp/**/*.html xmllint --noout static-tmp/**/*.html

View File

@ -269,110 +269,110 @@
<section id="raven-stable"> <section id="raven-stable">
<h3><a href="#raven-stable">Pixel 6 Pro</a></h3> <h3><a href="#raven-stable">Pixel 6 Pro</a></h3>
<p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/SQ1D.220205.004.2022021721">SQ1D.220205.004.2022021721</a></p> <p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/{{raven-stable-BUILD_ID}}.{{raven-stable-BUILD_NUMBER}}">{{raven-stable-BUILD_ID}}.{{raven-stable-BUILD_NUMBER}}</a></p>
<ul> <ul>
<li><a href="https://releases.grapheneos.org/raven-factory-2022021721.zip">raven-factory-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/raven-factory-{{raven-stable-BUILD_NUMBER}}.zip">raven-factory-{{raven-stable-BUILD_NUMBER}}.zip</a></li>
<li><a href="https://releases.grapheneos.org/raven-factory-2022021721.zip.sig">raven-factory-2022021721.zip.sig</a></li> <li><a href="https://releases.grapheneos.org/raven-factory-{{raven-stable-BUILD_NUMBER}}.zip.sig">raven-factory-{{raven-stable-BUILD_NUMBER}}.zip.sig</a></li>
<li><a href="https://releases.grapheneos.org/raven-ota_update-2022021721.zip">raven-ota_update-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/raven-ota_update-{{raven-stable-BUILD_NUMBER}}.zip">raven-ota_update-{{raven-stable-BUILD_NUMBER}}.zip</a></li>
</ul> </ul>
</section> </section>
<section id="oriole-stable"> <section id="oriole-stable">
<h3><a href="#oriole-stable">Pixel 6</a></h3> <h3><a href="#oriole-stable">Pixel 6</a></h3>
<p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/SQ1D.220205.004.2022021721">SQ1D.220205.004.2022021721</a></p> <p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/{{oriole-stable-BUILD_ID}}.{{oriole-stable-BUILD_NUMBER}}">{{oriole-stable-BUILD_ID}}.{{oriole-stable-BUILD_NUMBER}}</a></p>
<ul> <ul>
<li><a href="https://releases.grapheneos.org/oriole-factory-2022021721.zip">oriole-factory-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/oriole-factory-{{oriole-stable-BUILD_NUMBER}}.zip">oriole-factory-{{oriole-stable-BUILD_NUMBER}}.zip</a></li>
<li><a href="https://releases.grapheneos.org/oriole-factory-2022021721.zip.sig">oriole-factory-2022021721.zip.sig</a></li> <li><a href="https://releases.grapheneos.org/oriole-factory-{{oriole-stable-BUILD_NUMBER}}.zip.sig">oriole-factory-{{oriole-stable-BUILD_NUMBER}}.zip.sig</a></li>
<li><a href="https://releases.grapheneos.org/oriole-ota_update-2022021721.zip">oriole-ota_update-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/oriole-ota_update-{{oriole-stable-BUILD_NUMBER}}.zip">oriole-ota_update-{{oriole-stable-BUILD_NUMBER}}.zip</a></li>
</ul> </ul>
</section> </section>
<section id="barbet-stable"> <section id="barbet-stable">
<h3><a href="#barbet-stable">Pixel 5a</a></h3> <h3><a href="#barbet-stable">Pixel 5a</a></h3>
<p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/SQ1A.220205.002.2022021721">SQ1A.220205.002.2022021721</a></p> <p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/{{barbet-stable-BUILD_ID}}.{{barbet-stable-BUILD_NUMBER}}">{{barbet-stable-BUILD_ID}}.{{barbet-stable-BUILD_NUMBER}}</a></p>
<ul> <ul>
<li><a href="https://releases.grapheneos.org/barbet-factory-2022021721.zip">barbet-factory-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/barbet-factory-{{barbet-stable-BUILD_NUMBER}}.zip">barbet-factory-{{barbet-stable-BUILD_NUMBER}}.zip</a></li>
<li><a href="https://releases.grapheneos.org/barbet-factory-2022021721.zip.sig">barbet-factory-2022021721.zip.sig</a></li> <li><a href="https://releases.grapheneos.org/barbet-factory-{{barbet-stable-BUILD_NUMBER}}.zip.sig">barbet-factory-{{barbet-stable-BUILD_NUMBER}}.zip.sig</a></li>
<li><a href="https://releases.grapheneos.org/barbet-ota_update-2022021721.zip">barbet-ota_update-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/barbet-ota_update-{{barbet-stable-BUILD_NUMBER}}.zip">barbet-ota_update-{{barbet-stable-BUILD_NUMBER}}.zip</a></li>
</ul> </ul>
</section> </section>
<section id="redfin-stable"> <section id="redfin-stable">
<h3><a href="#redfin-stable">Pixel 5</a></h3> <h3><a href="#redfin-stable">Pixel 5</a></h3>
<p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/SQ1A.220205.002.2022021721">SQ1A.220205.002.2022021721</a></p> <p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/{{redfin-stable-BUILD_ID}}.{{redfin-stable-BUILD_NUMBER}}">{{redfin-stable-BUILD_ID}}.{{redfin-stable-BUILD_NUMBER}}</a></p>
<ul> <ul>
<li><a href="https://releases.grapheneos.org/redfin-factory-2022021721.zip">redfin-factory-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/redfin-factory-{{redfin-stable-BUILD_NUMBER}}.zip">redfin-factory-{{redfin-stable-BUILD_NUMBER}}.zip</a></li>
<li><a href="https://releases.grapheneos.org/redfin-factory-2022021721.zip.sig">redfin-factory-2022021721.zip.sig</a></li> <li><a href="https://releases.grapheneos.org/redfin-factory-{{redfin-stable-BUILD_NUMBER}}.zip.sig">redfin-factory-{{redfin-stable-BUILD_NUMBER}}.zip.sig</a></li>
<li><a href="https://releases.grapheneos.org/redfin-ota_update-2022021721.zip">redfin-ota_update-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/redfin-ota_update-{{redfin-stable-BUILD_NUMBER}}.zip">redfin-ota_update-{{redfin-stable-BUILD_NUMBER}}.zip</a></li>
</ul> </ul>
</section> </section>
<section id="bramble-stable"> <section id="bramble-stable">
<h3><a href="#bramble-stable">Pixel 4a (5G)</a></h3> <h3><a href="#bramble-stable">Pixel 4a (5G)</a></h3>
<p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/SQ1A.220205.002.2022021721">SQ1A.220205.002.2022021721</a></p> <p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/{{bramble-stable-BUILD_ID}}.{{bramble-stable-BUILD_NUMBER}}">{{bramble-stable-BUILD_ID}}.{{bramble-stable-BUILD_NUMBER}}</a></p>
<ul> <ul>
<li><a href="https://releases.grapheneos.org/bramble-factory-2022021721.zip">bramble-factory-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/bramble-factory-{{bramble-stable-BUILD_NUMBER}}.zip">bramble-factory-{{bramble-stable-BUILD_NUMBER}}.zip</a></li>
<li><a href="https://releases.grapheneos.org/bramble-factory-2022021721.zip.sig">bramble-factory-2022021721.zip.sig</a></li> <li><a href="https://releases.grapheneos.org/bramble-factory-{{bramble-stable-BUILD_NUMBER}}.zip.sig">bramble-factory-{{bramble-stable-BUILD_NUMBER}}.zip.sig</a></li>
<li><a href="https://releases.grapheneos.org/bramble-ota_update-2022021721.zip">bramble-ota_update-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/bramble-ota_update-{{bramble-stable-BUILD_NUMBER}}.zip">bramble-ota_update-{{bramble-stable-BUILD_NUMBER}}.zip</a></li>
</ul> </ul>
</section> </section>
<section id="sunfish-stable"> <section id="sunfish-stable">
<h3><a href="#sunfish-stable">Pixel 4a</a></h3> <h3><a href="#sunfish-stable">Pixel 4a</a></h3>
<p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/SQ1A.220205.002.2022021721">SQ1A.220205.002.2022021721</a></p> <p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/{{sunfish-stable-BUILD_ID}}.{{sunfish-stable-BUILD_NUMBER}}">{{sunfish-stable-BUILD_ID}}.{{sunfish-stable-BUILD_NUMBER}}</a></p>
<ul> <ul>
<li><a href="https://releases.grapheneos.org/sunfish-factory-2022021721.zip">sunfish-factory-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/sunfish-factory-{{sunfish-stable-BUILD_NUMBER}}.zip">sunfish-factory-{{sunfish-stable-BUILD_NUMBER}}.zip</a></li>
<li><a href="https://releases.grapheneos.org/sunfish-factory-2022021721.zip.sig">sunfish-factory-2022021721.zip.sig</a></li> <li><a href="https://releases.grapheneos.org/sunfish-factory-{{sunfish-stable-BUILD_NUMBER}}.zip.sig">sunfish-factory-{{sunfish-stable-BUILD_NUMBER}}.zip.sig</a></li>
<li><a href="https://releases.grapheneos.org/sunfish-ota_update-2022021721.zip">sunfish-ota_update-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/sunfish-ota_update-{{sunfish-stable-BUILD_NUMBER}}.zip">sunfish-ota_update-{{sunfish-stable-BUILD_NUMBER}}.zip</a></li>
</ul> </ul>
</section> </section>
<section id="coral-stable"> <section id="coral-stable">
<h3><a href="#coral-stable">Pixel 4 XL</a></h3> <h3><a href="#coral-stable">Pixel 4 XL</a></h3>
<p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/SQ1A.220205.002.2022021721">SQ1A.220205.002.2022021721</a></p> <p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/{{coral-stable-BUILD_ID}}.{{coral-stable-BUILD_NUMBER}}">{{coral-stable-BUILD_ID}}.{{coral-stable-BUILD_NUMBER}}</a></p>
<ul> <ul>
<li><a href="https://releases.grapheneos.org/coral-factory-2022021721.zip">coral-factory-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/coral-factory-{{coral-stable-BUILD_NUMBER}}.zip">coral-factory-{{coral-stable-BUILD_NUMBER}}.zip</a></li>
<li><a href="https://releases.grapheneos.org/coral-factory-2022021721.zip.sig">coral-factory-2022021721.zip.sig</a></li> <li><a href="https://releases.grapheneos.org/coral-factory-{{coral-stable-BUILD_NUMBER}}.zip.sig">coral-factory-{{coral-stable-BUILD_NUMBER}}.zip.sig</a></li>
<li><a href="https://releases.grapheneos.org/coral-ota_update-2022021721.zip">coral-ota_update-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/coral-ota_update-{{coral-stable-BUILD_NUMBER}}.zip">coral-ota_update-{{coral-stable-BUILD_NUMBER}}.zip</a></li>
</ul> </ul>
</section> </section>
<section id="flame-stable"> <section id="flame-stable">
<h3><a href="#flame-stable">Pixel 4</a></h3> <h3><a href="#flame-stable">Pixel 4</a></h3>
<p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/SQ1A.220205.002.2022021721">SQ1A.220205.002.2022021721</a></p> <p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/{{flame-stable-BUILD_ID}}.{{flame-stable-BUILD_NUMBER}}">{{flame-stable-BUILD_ID}}.{{flame-stable-BUILD_NUMBER}}</a></p>
<ul> <ul>
<li><a href="https://releases.grapheneos.org/flame-factory-2022021721.zip">flame-factory-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/flame-factory-{{flame-stable-BUILD_NUMBER}}.zip">flame-factory-{{flame-stable-BUILD_NUMBER}}.zip</a></li>
<li><a href="https://releases.grapheneos.org/flame-factory-2022021721.zip.sig">flame-factory-2022021721.zip.sig</a></li> <li><a href="https://releases.grapheneos.org/flame-factory-{{flame-stable-BUILD_NUMBER}}.zip.sig">flame-factory-{{flame-stable-BUILD_NUMBER}}.zip.sig</a></li>
<li><a href="https://releases.grapheneos.org/flame-ota_update-2022021721.zip">flame-ota_update-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/flame-ota_update-{{flame-stable-BUILD_NUMBER}}.zip">flame-ota_update-{{flame-stable-BUILD_NUMBER}}.zip</a></li>
</ul> </ul>
</section> </section>
<section id="bonito-stable"> <section id="bonito-stable">
<h3><a href="#bonito-stable">Pixel 3a XL</a></h3> <h3><a href="#bonito-stable">Pixel 3a XL</a></h3>
<p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/SQ1A.220205.002.2022021721">SQ1A.220205.002.2022021721</a></p> <p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/{{bonito-stable-BUILD_ID}}.{{bonito-stable-BUILD_NUMBER}}">{{bonito-stable-BUILD_ID}}.{{bonito-stable-BUILD_NUMBER}}</a></p>
<ul> <ul>
<li><a href="https://releases.grapheneos.org/bonito-factory-2022021721.zip">bonito-factory-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/bonito-factory-{{bonito-stable-BUILD_NUMBER}}.zip">bonito-factory-{{bonito-stable-BUILD_NUMBER}}.zip</a></li>
<li><a href="https://releases.grapheneos.org/bonito-factory-2022021721.zip.sig">bonito-factory-2022021721.zip.sig</a></li> <li><a href="https://releases.grapheneos.org/bonito-factory-{{bonito-stable-BUILD_NUMBER}}.zip.sig">bonito-factory-{{bonito-stable-BUILD_NUMBER}}.zip.sig</a></li>
<li><a href="https://releases.grapheneos.org/bonito-ota_update-2022021721.zip">bonito-ota_update-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/bonito-ota_update-{{bonito-stable-BUILD_NUMBER}}.zip">bonito-ota_update-{{bonito-stable-BUILD_NUMBER}}.zip</a></li>
</ul> </ul>
</section> </section>
<section id="sargo-stable"> <section id="sargo-stable">
<h3><a href="#sargo-stable">Pixel 3a</a></h3> <h3><a href="#sargo-stable">Pixel 3a</a></h3>
<p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/SQ1A.220205.002.2022021721">SQ1A.220205.002.2022021721</a></p> <p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/{{sargo-stable-BUILD_ID}}.{{sargo-stable-BUILD_NUMBER}}">{{sargo-stable-BUILD_ID}}.{{sargo-stable-BUILD_NUMBER}}</a></p>
<ul> <ul>
<li><a href="https://releases.grapheneos.org/sargo-factory-2022021721.zip">sargo-factory-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/sargo-factory-{{sargo-stable-BUILD_NUMBER}}.zip">sargo-factory-{{sargo-stable-BUILD_NUMBER}}.zip</a></li>
<li><a href="https://releases.grapheneos.org/sargo-factory-2022021721.zip.sig">sargo-factory-2022021721.zip.sig</a></li> <li><a href="https://releases.grapheneos.org/sargo-factory-{{sargo-stable-BUILD_NUMBER}}.zip.sig">sargo-factory-{{sargo-stable-BUILD_NUMBER}}.zip.sig</a></li>
<li><a href="https://releases.grapheneos.org/sargo-ota_update-2022021721.zip">sargo-ota_update-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/sargo-ota_update-{{sargo-stable-BUILD_NUMBER}}.zip">sargo-ota_update-{{sargo-stable-BUILD_NUMBER}}.zip</a></li>
</ul> </ul>
</section> </section>
<section id="crosshatch-stable"> <section id="crosshatch-stable">
<h3><a href="#crosshatch-stable">Pixel 3 XL (legacy)</a></h3> <h3><a href="#crosshatch-stable">Pixel 3 XL (legacy)</a></h3>
<p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/SP1A.210812.016.C1.2022021721">SP1A.210812.016.C1.2022021721</a></p> <p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/{{crosshatch-stable-BUILD_ID}}.{{crosshatch-stable-BUILD_NUMBER}}">{{crosshatch-stable-BUILD_ID}}.{{crosshatch-stable-BUILD_NUMBER}}</a></p>
<ul> <ul>
<li><a href="https://releases.grapheneos.org/crosshatch-factory-2022021721.zip">crosshatch-factory-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/crosshatch-factory-{{crosshatch-stable-BUILD_NUMBER}}.zip">crosshatch-factory-{{crosshatch-stable-BUILD_NUMBER}}.zip</a></li>
<li><a href="https://releases.grapheneos.org/crosshatch-factory-2022021721.zip.sig">crosshatch-factory-2022021721.zip.sig</a></li> <li><a href="https://releases.grapheneos.org/crosshatch-factory-{{crosshatch-stable-BUILD_NUMBER}}.zip.sig">crosshatch-factory-{{crosshatch-stable-BUILD_NUMBER}}.zip.sig</a></li>
<li><a href="https://releases.grapheneos.org/crosshatch-ota_update-2022021721.zip">crosshatch-ota_update-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/crosshatch-ota_update-{{crosshatch-stable-BUILD_NUMBER}}.zip">crosshatch-ota_update-{{crosshatch-stable-BUILD_NUMBER}}.zip</a></li>
</ul> </ul>
</section> </section>
<section id="blueline-stable"> <section id="blueline-stable">
<h3><a href="#blueline-stable">Pixel 3 (legacy)</a></h3> <h3><a href="#blueline-stable">Pixel 3 (legacy)</a></h3>
<p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/SP1A.210812.016.C1.2022021721">SP1A.210812.016.C1.2022021721</a></p> <p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/{{blueline-stable-BUILD_ID}}.{{blueline-stable-BUILD_NUMBER}}">{{crosshatch-stable-BUILD_ID}}.{{blueline-stable-BUILD_NUMBER}}</a></p>
<ul> <ul>
<li><a href="https://releases.grapheneos.org/blueline-factory-2022021721.zip">blueline-factory-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/blueline-factory-{{blueline-stable-BUILD_NUMBER}}.zip">blueline-factory-{{blueline-stable-BUILD_NUMBER}}.zip</a></li>
<li><a href="https://releases.grapheneos.org/blueline-factory-2022021721.zip.sig">blueline-factory-2022021721.zip.sig</a></li> <li><a href="https://releases.grapheneos.org/blueline-factory-{{blueline-stable-BUILD_NUMBER}}.zip.sig">blueline-factory-{{blueline-stable-BUILD_NUMBER}}.zip.sig</a></li>
<li><a href="https://releases.grapheneos.org/blueline-ota_update-2022021721.zip">blueline-ota_update-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/blueline-ota_update-{{blueline-stable-BUILD_NUMBER}}.zip">blueline-ota_update-{{blueline-stable-BUILD_NUMBER}}.zip</a></li>
</ul> </ul>
</section> </section>
</section> </section>
@ -386,110 +386,110 @@
<section id="raven-beta"> <section id="raven-beta">
<h3><a href="#raven-beta">Pixel 6 Pro</a></h3> <h3><a href="#raven-beta">Pixel 6 Pro</a></h3>
<p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/SQ1D.220205.004.2022021721">SQ1D.220205.004.2022021721</a></p> <p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/{{raven-beta-BUILD_ID}}.{{raven-beta-BUILD_NUMBER}}">{{raven-beta-BUILD_ID}}.{{raven-beta-BUILD_NUMBER}}</a></p>
<ul> <ul>
<li><a href="https://releases.grapheneos.org/raven-factory-2022021721.zip">raven-factory-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/raven-factory-{{raven-beta-BUILD_NUMBER}}.zip">raven-factory-{{raven-beta-BUILD_NUMBER}}.zip</a></li>
<li><a href="https://releases.grapheneos.org/raven-factory-2022021721.zip.sig">raven-factory-2022021721.zip.sig</a></li> <li><a href="https://releases.grapheneos.org/raven-factory-{{raven-beta-BUILD_NUMBER}}.zip.sig">raven-factory-{{raven-beta-BUILD_NUMBER}}.zip.sig</a></li>
<li><a href="https://releases.grapheneos.org/raven-ota_update-2022021721.zip">raven-ota_update-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/raven-ota_update-{{raven-beta-BUILD_NUMBER}}.zip">raven-ota_update-{{raven-beta-BUILD_NUMBER}}.zip</a></li>
</ul> </ul>
</section> </section>
<section id="oriole-beta"> <section id="oriole-beta">
<h3><a href="#oriole-beta">Pixel 6</a></h3> <h3><a href="#oriole-beta">Pixel 6</a></h3>
<p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/SQ1D.220205.004.2022021721">SQ1D.220205.004.2022021721</a></p> <p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/{{oriole-beta-BUILD_ID}}.{{oriole-beta-BUILD_NUMBER}}">{{oriole-beta-BUILD_ID}}.{{oriole-beta-BUILD_NUMBER}}</a></p>
<ul> <ul>
<li><a href="https://releases.grapheneos.org/oriole-factory-2022021721.zip">oriole-factory-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/oriole-factory-{{oriole-beta-BUILD_NUMBER}}.zip">oriole-factory-{{oriole-beta-BUILD_NUMBER}}.zip</a></li>
<li><a href="https://releases.grapheneos.org/oriole-factory-2022021721.zip.sig">oriole-factory-2022021721.zip.sig</a></li> <li><a href="https://releases.grapheneos.org/oriole-factory-{{oriole-beta-BUILD_NUMBER}}.zip.sig">oriole-factory-{{oriole-beta-BUILD_NUMBER}}.zip.sig</a></li>
<li><a href="https://releases.grapheneos.org/oriole-ota_update-2022021721.zip">oriole-ota_update-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/oriole-ota_update-{{oriole-beta-BUILD_NUMBER}}.zip">oriole-ota_update-{{oriole-beta-BUILD_NUMBER}}.zip</a></li>
</ul> </ul>
</section> </section>
<section id="barbet-beta"> <section id="barbet-beta">
<h3><a href="#barbet-beta">Pixel 5a</a></h3> <h3><a href="#barbet-beta">Pixel 5a</a></h3>
<p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/SQ1A.220205.002.2022021721">SQ1A.220205.002.2022021721</a></p> <p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/{{barbet-beta-BUILD_ID}}.{{barbet-beta-BUILD_NUMBER}}">{{barbet-beta-BUILD_ID}}.{{barbet-beta-BUILD_NUMBER}}</a></p>
<ul> <ul>
<li><a href="https://releases.grapheneos.org/barbet-factory-2022021721.zip">barbet-factory-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/barbet-factory-{{barbet-beta-BUILD_NUMBER}}.zip">barbet-factory-{{barbet-beta-BUILD_NUMBER}}.zip</a></li>
<li><a href="https://releases.grapheneos.org/barbet-factory-2022021721.zip.sig">barbet-factory-2022021721.zip.sig</a></li> <li><a href="https://releases.grapheneos.org/barbet-factory-{{barbet-beta-BUILD_NUMBER}}.zip.sig">barbet-factory-{{barbet-beta-BUILD_NUMBER}}.zip.sig</a></li>
<li><a href="https://releases.grapheneos.org/barbet-ota_update-2022021721.zip">barbet-ota_update-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/barbet-ota_update-{{barbet-beta-BUILD_NUMBER}}.zip">barbet-ota_update-{{barbet-beta-BUILD_NUMBER}}.zip</a></li>
</ul> </ul>
</section> </section>
<section id="redfin-beta"> <section id="redfin-beta">
<h3><a href="#redfin-beta">Pixel 5</a></h3> <h3><a href="#redfin-beta">Pixel 5</a></h3>
<p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/SQ1A.220205.002.2022021721">SQ1A.220205.002.2022021721</a></p> <p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/{{redfin-beta-BUILD_ID}}.{{redfin-beta-BUILD_NUMBER}}">{{redfin-beta-BUILD_ID}}.{{redfin-beta-BUILD_NUMBER}}</a></p>
<ul> <ul>
<li><a href="https://releases.grapheneos.org/redfin-factory-2022021721.zip">redfin-factory-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/redfin-factory-{{redfin-beta-BUILD_NUMBER}}.zip">redfin-factory-{{redfin-beta-BUILD_NUMBER}}.zip</a></li>
<li><a href="https://releases.grapheneos.org/redfin-factory-2022021721.zip.sig">redfin-factory-2022021721.zip.sig</a></li> <li><a href="https://releases.grapheneos.org/redfin-factory-{{redfin-beta-BUILD_NUMBER}}.zip.sig">redfin-factory-{{redfin-beta-BUILD_NUMBER}}.zip.sig</a></li>
<li><a href="https://releases.grapheneos.org/redfin-ota_update-2022021721.zip">redfin-ota_update-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/redfin-ota_update-{{redfin-beta-BUILD_NUMBER}}.zip">redfin-ota_update-{{redfin-beta-BUILD_NUMBER}}.zip</a></li>
</ul> </ul>
</section> </section>
<section id="bramble-beta"> <section id="bramble-beta">
<h3><a href="#bramble-beta">Pixel 4a (5G)</a></h3> <h3><a href="#bramble-beta">Pixel 4a (5G)</a></h3>
<p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/SQ1A.220205.002.2022021721">SQ1A.220205.002.2022021721</a></p> <p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/{{bramble-beta-BUILD_ID}}.{{bramble-beta-BUILD_NUMBER}}">{{bramble-beta-BUILD_ID}}.{{bramble-beta-BUILD_NUMBER}}</a></p>
<ul> <ul>
<li><a href="https://releases.grapheneos.org/bramble-factory-2022021721.zip">bramble-factory-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/bramble-factory-{{bramble-beta-BUILD_NUMBER}}.zip">bramble-factory-{{bramble-beta-BUILD_NUMBER}}.zip</a></li>
<li><a href="https://releases.grapheneos.org/bramble-factory-2022021721.zip.sig">bramble-factory-2022021721.zip.sig</a></li> <li><a href="https://releases.grapheneos.org/bramble-factory-{{bramble-beta-BUILD_NUMBER}}.zip.sig">bramble-factory-{{bramble-beta-BUILD_NUMBER}}.zip.sig</a></li>
<li><a href="https://releases.grapheneos.org/bramble-ota_update-2022021721.zip">bramble-ota_update-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/bramble-ota_update-{{bramble-beta-BUILD_NUMBER}}.zip">bramble-ota_update-{{bramble-beta-BUILD_NUMBER}}.zip</a></li>
</ul> </ul>
</section> </section>
<section id="sunfish-beta"> <section id="sunfish-beta">
<h3><a href="#sunfish-beta">Pixel 4a</a></h3> <h3><a href="#sunfish-beta">Pixel 4a</a></h3>
<p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/SQ1A.220205.002.2022021721">SQ1A.220205.002.2022021721</a></p> <p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/{{sunfish-beta-BUILD_ID}}.{{sunfish-beta-BUILD_NUMBER}}">{{sunfish-beta-BUILD_ID}}.{{sunfish-beta-BUILD_NUMBER}}</a></p>
<ul> <ul>
<li><a href="https://releases.grapheneos.org/sunfish-factory-2022021721.zip">sunfish-factory-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/sunfish-factory-{{sunfish-beta-BUILD_NUMBER}}.zip">sunfish-factory-{{sunfish-beta-BUILD_NUMBER}}.zip</a></li>
<li><a href="https://releases.grapheneos.org/sunfish-factory-2022021721.zip.sig">sunfish-factory-2022021721.zip.sig</a></li> <li><a href="https://releases.grapheneos.org/sunfish-factory-{{sunfish-beta-BUILD_NUMBER}}.zip.sig">sunfish-factory-{{sunfish-beta-BUILD_NUMBER}}.zip.sig</a></li>
<li><a href="https://releases.grapheneos.org/sunfish-ota_update-2022021721.zip">sunfish-ota_update-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/sunfish-ota_update-{{sunfish-beta-BUILD_NUMBER}}.zip">sunfish-ota_update-{{sunfish-beta-BUILD_NUMBER}}.zip</a></li>
</ul> </ul>
</section> </section>
<section id="coral-beta"> <section id="coral-beta">
<h3><a href="#coral-beta">Pixel 4 XL</a></h3> <h3><a href="#coral-beta">Pixel 4 XL</a></h3>
<p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/SQ1A.220205.002.2022021721">SQ1A.220205.002.2022021721</a></p> <p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/{{coral-beta-BUILD_ID}}.{{coral-beta-BUILD_NUMBER}}">{{coral-beta-BUILD_ID}}.{{coral-beta-BUILD_NUMBER}}</a></p>
<ul> <ul>
<li><a href="https://releases.grapheneos.org/coral-factory-2022021721.zip">coral-factory-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/coral-factory-{{coral-beta-BUILD_NUMBER}}.zip">coral-factory-{{coral-beta-BUILD_NUMBER}}.zip</a></li>
<li><a href="https://releases.grapheneos.org/coral-factory-2022021721.zip.sig">coral-factory-2022021721.zip.sig</a></li> <li><a href="https://releases.grapheneos.org/coral-factory-{{coral-beta-BUILD_NUMBER}}.zip.sig">coral-factory-{{coral-beta-BUILD_NUMBER}}.zip.sig</a></li>
<li><a href="https://releases.grapheneos.org/coral-ota_update-2022021721.zip">coral-ota_update-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/coral-ota_update-{{coral-beta-BUILD_NUMBER}}.zip">coral-ota_update-{{coral-beta-BUILD_NUMBER}}.zip</a></li>
</ul> </ul>
</section> </section>
<section id="flame-beta"> <section id="flame-beta">
<h3><a href="#flame-beta">Pixel 4</a></h3> <h3><a href="#flame-beta">Pixel 4</a></h3>
<p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/SQ1A.220205.002.2022021721">SQ1A.220205.002.2022021721</a></p> <p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/{{flame-beta-BUILD_ID}}.{{flame-beta-BUILD_NUMBER}}">{{flame-beta-BUILD_ID}}.{{flame-beta-BUILD_NUMBER}}</a></p>
<ul> <ul>
<li><a href="https://releases.grapheneos.org/flame-factory-2022021721.zip">flame-factory-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/flame-factory-{{flame-beta-BUILD_NUMBER}}.zip">flame-factory-{{flame-beta-BUILD_NUMBER}}.zip</a></li>
<li><a href="https://releases.grapheneos.org/flame-factory-2022021721.zip.sig">flame-factory-2022021721.zip.sig</a></li> <li><a href="https://releases.grapheneos.org/flame-factory-{{flame-beta-BUILD_NUMBER}}.zip.sig">flame-factory-{{flame-beta-BUILD_NUMBER}}.zip.sig</a></li>
<li><a href="https://releases.grapheneos.org/flame-ota_update-2022021721.zip">flame-ota_update-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/flame-ota_update-{{flame-beta-BUILD_NUMBER}}.zip">flame-ota_update-{{flame-beta-BUILD_NUMBER}}.zip</a></li>
</ul> </ul>
</section> </section>
<section id="bonito-beta"> <section id="bonito-beta">
<h3><a href="#bonito-beta">Pixel 3a XL</a></h3> <h3><a href="#bonito-beta">Pixel 3a XL</a></h3>
<p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/SQ1A.220205.002.2022021721">SQ1A.220205.002.2022021721</a></p> <p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/{{bonito-beta-BUILD_ID}}.{{bonito-beta-BUILD_NUMBER}}">{{bonito-beta-BUILD_ID}}.{{bonito-beta-BUILD_NUMBER}}</a></p>
<ul> <ul>
<li><a href="https://releases.grapheneos.org/bonito-factory-2022021721.zip">bonito-factory-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/bonito-factory-{{bonito-beta-BUILD_NUMBER}}.zip">bonito-factory-{{bonito-beta-BUILD_NUMBER}}.zip</a></li>
<li><a href="https://releases.grapheneos.org/bonito-factory-2022021721.zip.sig">bonito-factory-2022021721.zip.sig</a></li> <li><a href="https://releases.grapheneos.org/bonito-factory-{{bonito-beta-BUILD_NUMBER}}.zip.sig">bonito-factory-{{bonito-beta-BUILD_NUMBER}}.zip.sig</a></li>
<li><a href="https://releases.grapheneos.org/bonito-ota_update-2022021721.zip">bonito-ota_update-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/bonito-ota_update-{{bonito-beta-BUILD_NUMBER}}.zip">bonito-ota_update-{{bonito-beta-BUILD_NUMBER}}.zip</a></li>
</ul> </ul>
</section> </section>
<section id="sargo-beta"> <section id="sargo-beta">
<h3><a href="#sargo-beta">Pixel 3a</a></h3> <h3><a href="#sargo-beta">Pixel 3a</a></h3>
<p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/SQ1A.220205.002.2022021721">SQ1A.220205.002.2022021721</a></p> <p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/{{sargo-beta-BUILD_ID}}.{{sargo-beta-BUILD_NUMBER}}">{{sargo-beta-BUILD_ID}}.{{sargo-beta-BUILD_NUMBER}}</a></p>
<ul> <ul>
<li><a href="https://releases.grapheneos.org/sargo-factory-2022021721.zip">sargo-factory-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/sargo-factory-{{sargo-beta-BUILD_NUMBER}}.zip">sargo-factory-{{sargo-beta-BUILD_NUMBER}}.zip</a></li>
<li><a href="https://releases.grapheneos.org/sargo-factory-2022021721.zip.sig">sargo-factory-2022021721.zip.sig</a></li> <li><a href="https://releases.grapheneos.org/sargo-factory-{{sargo-beta-BUILD_NUMBER}}.zip.sig">sargo-factory-{{sargo-beta-BUILD_NUMBER}}.zip.sig</a></li>
<li><a href="https://releases.grapheneos.org/sargo-ota_update-2022021721.zip">sargo-ota_update-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/sargo-ota_update-{{sargo-beta-BUILD_NUMBER}}.zip">sargo-ota_update-{{sargo-beta-BUILD_NUMBER}}.zip</a></li>
</ul> </ul>
</section> </section>
<section id="crosshatch-beta"> <section id="crosshatch-beta">
<h3><a href="#crosshatch-beta">Pixel 3 XL (legacy)</a></h3> <h3><a href="#crosshatch-beta">Pixel 3 XL (legacy)</a></h3>
<p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/SP1A.210812.016.C1.2022021721">SP1A.210812.016.C1.2022021721</a></p> <p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/{{crosshatch-beta-BUILD_ID}}.{{crosshatch-beta-BUILD_NUMBER}}">{{crosshatch-beta-BUILD_ID}}.{{crosshatch-beta-BUILD_NUMBER}}</a></p>
<ul> <ul>
<li><a href="https://releases.grapheneos.org/crosshatch-factory-2022021721.zip">crosshatch-factory-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/crosshatch-factory-{{crosshatch-beta-BUILD_NUMBER}}.zip">crosshatch-factory-{{crosshatch-beta-BUILD_NUMBER}}.zip</a></li>
<li><a href="https://releases.grapheneos.org/crosshatch-factory-2022021721.zip.sig">crosshatch-factory-2022021721.zip.sig</a></li> <li><a href="https://releases.grapheneos.org/crosshatch-factory-{{crosshatch-beta-BUILD_NUMBER}}.zip.sig">crosshatch-factory-{{crosshatch-beta-BUILD_NUMBER}}.zip.sig</a></li>
<li><a href="https://releases.grapheneos.org/crosshatch-ota_update-2022021721.zip">crosshatch-ota_update-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/crosshatch-ota_update-{{crosshatch-beta-BUILD_NUMBER}}.zip">crosshatch-ota_update-{{crosshatch-beta-BUILD_NUMBER}}.zip</a></li>
</ul> </ul>
</section> </section>
<section id="blueline-beta"> <section id="blueline-beta">
<h3><a href="#blueline-beta">Pixel 3 (legacy)</a></h3> <h3><a href="#blueline-beta">Pixel 3 (legacy)</a></h3>
<p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/SP1A.210812.016.C1.2022021721">SP1A.210812.016.C1.2022021721</a></p> <p>Version: <a href="https://github.com/GrapheneOS/platform_manifest/releases/tag/{{blueline-beta-BUILD_ID}}.{{blueline-beta-BUILD_NUMBER}}">{{crosshatch-beta-BUILD_ID}}.{{blueline-beta-BUILD_NUMBER}}</a></p>
<ul> <ul>
<li><a href="https://releases.grapheneos.org/blueline-factory-2022021721.zip">blueline-factory-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/blueline-factory-{{blueline-beta-BUILD_NUMBER}}.zip">blueline-factory-{{blueline-beta-BUILD_NUMBER}}.zip</a></li>
<li><a href="https://releases.grapheneos.org/blueline-factory-2022021721.zip.sig">blueline-factory-2022021721.zip.sig</a></li> <li><a href="https://releases.grapheneos.org/blueline-factory-{{blueline-beta-BUILD_NUMBER}}.zip.sig">blueline-factory-{{blueline-beta-BUILD_NUMBER}}.zip.sig</a></li>
<li><a href="https://releases.grapheneos.org/blueline-ota_update-2022021721.zip">blueline-ota_update-2022021721.zip</a></li> <li><a href="https://releases.grapheneos.org/blueline-ota_update-{{blueline-beta-BUILD_NUMBER}}.zip">blueline-ota_update-{{blueline-beta-BUILD_NUMBER}}.zip</a></li>
</ul> </ul>
</section> </section>
</section> </section>