Skip to content

Fix app index

Fix app index #45

Workflow file for this run

name: 'extension'
on:
push:
branches: [main]
paths:
- 'holo-key-manager-extension/**'
jobs:
build:
runs-on: ubuntu-latest
environment:
name: Extension
steps:
- uses: actions/checkout@v4
- name: Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version: lts/*
- name: Install pnpm
run: npm install -g pnpm
- name: Install dependencies
run: pnpm install --no-frozen-lockfile
- name: Run unit tests
run: pnpm test
working-directory: holo-key-manager-extension
- name: Install webextension-store-meta
run: pnpm add -D webextension-store-meta -w
- name: Check version against latest release in Chrome Web Store
id: check_version
uses: actions/github-script@v7
with:
script: |
const fs = require('fs/promises');
const { ChromeWebStore } = require('webextension-store-meta/lib/chrome-web-store');
const getManifestVersion = async (filePath) => {
const data = await fs.readFile(filePath, 'utf8');
const manifest = JSON.parse(data);
return manifest.version;
};
const checkVersion = async (chromeId) => {
const chromeWebStore = await ChromeWebStore.load({ id: chromeId, qs: { hl: 'en' } });
return chromeWebStore.meta().version;
};
const fetchVersionInfo = async () => {
try {
const currentVersion = await getManifestVersion('./holo-key-manager-extension/static/manifest.json');
const latestVersion = await checkVersion('${{ vars.CHROME_ID }}');
core.setOutput('abort', currentVersion === latestVersion ? 'true' : 'false');
} catch (error) {
core.setFailed(error.message);
}
};
fetchVersionInfo();
- name: Abort build if version matches
if: steps.check_version.outputs.abort == 'true'
run: |
echo "Version in manifest matches the latest release version in Chrome Web Store. Aborting build."
exit 1
- name: Build extension
run: pnpm build
working-directory: holo-key-manager-extension
- name: Run e2e tests
run: pnpm e2e-tests
env:
CHROME_ID: ${{ vars.CHROME_ID }}
- name: Zip the build
run: |
cd build
zip -r ../build.zip .
cd ..
working-directory: holo-key-manager-extension
- name: Chrome upload & release
uses: mobilefirstllc/cws-publish@latest
continue-on-error: true
with:
action: publish
client_id: ${{ secrets.CHROME_CLIENT_ID }}
client_secret: ${{ secrets.CHROME_CLIENT_SECRET }}
refresh_token: ${{ secrets.CHROME_REFRESH_TOKEN }}
extension_id: ${{ vars.CHROME_ID }}
zip_file: holo-key-manager-extension/build.zip
- name: Unzip build for Edge
run: |
unzip build.zip -d buildEdge
working-directory: holo-key-manager-extension
- name: Remove key field from manifest for Edge
run: |
jq 'del(.key)' buildEdge/manifest.json > temp.json && mv temp.json buildEdge/manifest.json
working-directory: holo-key-manager-extension
- name: Zip the build for Edge
run: |
cd buildEdge
zip -r ../buildEdge.zip .
cd ..
working-directory: holo-key-manager-extension
- name: Edge upload & release
uses: wdzeng/edge-addon@v1
continue-on-error: true
with:
product-id: ${{ vars.EDGE_ID }}
zip-path: holo-key-manager-extension/buildEdge.zip
client-id: ${{ secrets.EDGE_CLIENT_ID }}
client-secret: ${{ secrets.EDGE_CLIENT_SECRET }}
access-token-url: ${{ secrets.EDGE_ACCESS_TOKEN_URL }}
- name: Replace manifest
run: pnpm build:replaceForFirefox ${{ vars.FF_ID }}
working-directory: holo-key-manager-extension
- name: Build extension
run: pnpm build
working-directory: holo-key-manager-extension
- name: Zip the build
run: |
cd build
zip -r ../buildFF.zip .
cd ..
working-directory: holo-key-manager-extension
- name: Firefox upload & release
uses: cardinalby/webext-buildtools-firefox-addons-action@v1
with:
zipFilePath: holo-key-manager-extension/buildFF.zip
extensionId: ${{ vars.FF_ID }}
jwtIssuer: ${{ secrets.FF_JWT_ISSUER }}
jwtSecret: ${{ secrets.FF_JWT_SECRET }}