Skip to content

CI/CD for Chrome Extension #31

CI/CD for Chrome Extension

CI/CD for Chrome Extension #31

Workflow file for this run

name: CI/CD for Chrome Extension
on:
push:
tags:
- '*'
workflow_dispatch:
jobs:
build:
runs-on: self-hosted
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Cleanup
run: |
rm -rf output
- name: Prepare output directory
run: |
mkdir -p output
- name: Zip the Chrome extension
run: |
VERSION=$(jq -r '.version' ./app/manifest-chrome.json)
cp ./app/* ./output/
cp ./manifest/manifest-chrome.json ./output/manifest.json
zip -r ./output/ShaderToy-Chrome-Plugin-$VERSION.zip ./output
echo $VERSION >> ./output/version.txt
- name: Zip the Firefox extension
env:
FIREFOX_EXTENSION_ID: ${{ secrets.FIREFOX_EXTENSION_ID }}
run: |
cp ./app/* ./output/
cp ./manifest/manifest-firefox.json ./output/manifest.json
jq --arg id "$FIREFOX_EXT_ID" '.browser_specific_settings.gecko.id = $id' ./output/manifest.json > ./output/manifest.json.tmp && mv ./output/manifest.json.tmp ./output/manifest.json
zip -r ./output/ShaderToy-Firefox-Plugin-$VERSION.zip ./output
- name: Upload output as artifacts
uses: actions/upload-artifact@v4
with:
name: output
path: output/
publish:
runs-on: self-hosted
needs: build
steps:
- name: Download output artifact
uses: actions/download-artifact@v4
with:
name: output
- name: Install Dependencies for Publishing
run: |
npm install --save-dev publish-browser-extension
- name: Upload & Publish Extension to Chrome Store
env:
CHROME_CLIENT_ID: ${{ secrets.CHROME_CLIENT_ID }}
CHROME_CLIENT_SECRET: ${{ secrets.CHROME_CLIENT_SECRET }}
CHROME_REFRESH_TOKEN: ${{ secrets.CHROME_REFRESH_TOKEN }}
CHROME_EXTENSION_ID: ${{ secrets.CHROME_EXTENSION_ID }}
CHROME_PUBLISH_TARGET: trustedTesters
CHROME_SKIP_SUBMIT_REVIEW: true
FIREFOX_EXTENSION_ID: ${{ secrets.FIREFOX_EXTENSION_ID }}
FIREFOX_JWT_ISSUER: ${{ secrets.FIREFOX_JWT_ISSUER }}
FIREFOX_JWT_SECRET: ${{ secrets.FIREFOX_JWT_SECRET }}
run: |
VERSION=$(cat ./output/version.txt)
npx publish-extension \
--chrome-zip ./output/ShaderToy-Chrome-Plugin-$VERSION.zip \
--firefox-zip ./output/ShaderToy-Firefox-Plugin-$VERSION.zip
release:
runs-on: self-hosted
needs: build
steps:
- name: Download output artifact for release
uses: actions/download-artifact@v4
with:
name: output
- name: Publish Release on GitHub
run: |
VERSION=$(cat ./output/version.txt)
gh release create $VERSION ./output/ShaderToy-Chrome-Plugin-$VERSION.zip --title "$VERSION" --notes "Release of version $VERSION (chrome)"