Skip to content

Merge branch 'tetherto-dev' #23

Merge branch 'tetherto-dev'

Merge branch 'tetherto-dev' #23

name: Build Browser Extension
on:
push:
branches:
- main
- dev
- staging
permissions:
contents: write
jobs:
build:
runs-on: macos-latest
outputs:
VERSION: ${{ steps.meta.outputs.VERSION }}
TAG: ${{ steps.meta.outputs.TAG }}
steps:
- name: Checkout
uses: actions/checkout@v6
with:
submodules: true
- name: Read & validate version
id: meta
run: |
set -euo pipefail
VERSION=$(jq -r '.version' package.json)
echo "VERSION=$VERSION"
if [[ ! "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "❌ Error: package.json version ('$VERSION') is not semantic versioning (MAJOR.MINOR.PATCH)."
exit 1
fi
TAG="v$VERSION"
echo "TAG=$TAG"
echo "VERSION=$VERSION" >> "$GITHUB_OUTPUT"
echo "TAG=$TAG" >> "$GITHUB_OUTPUT"
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
registry-url: https://npm.pkg.github.com
scope: '@tetherto'
- name: Install worker dependencies
run: |
git config --global url."https://github.com/".insteadOf git@github.com:
git config --global url."https://".insteadOf ssh://
git config --global url."https://${{ secrets.PAT_TOKEN }}:x-oauth-basic@github.com/".insteadOf "https://github.com/"
npm install --install-links --legacy-peer-deps
env:
NODE_AUTH_TOKEN: ${{ secrets.PAT_TOKEN }}
- name: Compile i18n catalogs (Lingui)
run: npm run lingui:compile
- name: Build extension (Vite)
run: npm run build
env:
VITE_SLACK_WEBHOOK_URL_PATH: ${{ secrets.SLACK_WEBHOOK_URL_PATH }}
VITE_GOOGLE_FORM_KEY: ${{ secrets.GOOGLE_FORM_KEY }}
VITE_GOOGLE_FORM_MAPPING_TIMESTAMP: ${{ secrets.GOOGLE_FORM_MAPPING_TIMESTAMP }}
VITE_GOOGLE_FORM_MAPPING_TOPIC: ${{ secrets.GOOGLE_FORM_MAPPING_TOPIC }}
VITE_GOOGLE_FORM_MAPPING_APP: ${{ secrets.GOOGLE_FORM_MAPPING_APP }}
VITE_GOOGLE_FORM_MAPPING_OPERATING_SYSTEM: ${{ secrets.GOOGLE_FORM_MAPPING_OPERATING_SYSTEM }}
VITE_GOOGLE_FORM_MAPPING_DEVICE_MODEL: ${{ secrets.GOOGLE_FORM_MAPPING_DEVICE_MODEL }}
VITE_GOOGLE_FORM_MAPPING_MESSAGE: ${{ secrets.GOOGLE_FORM_MAPPING_MESSAGE }}
VITE_GOOGLE_FORM_MAPPING_APP_VERSION: ${{ secrets.GOOGLE_FORM_MAPPING_APP_VERSION }}
VITE_TEST_SLACK_WEBHOOK_URL_PATH: ${{ secrets.TEST_SLACK_WEBHOOK_URL_PATH }}
VITE_TEST_GOOGLE_FORM_KEY: ${{ secrets.TEST_GOOGLE_FORM_KEY }}
VITE_TEST_GOOGLE_FORM_MAPPING_TIMESTAMP: ${{ secrets.TEST_GOOGLE_FORM_MAPPING_TIMESTAMP }}
VITE_TEST_GOOGLE_FORM_MAPPING_TOPIC: ${{ secrets.TEST_GOOGLE_FORM_MAPPING_TOPIC }}
VITE_TEST_GOOGLE_FORM_MAPPING_APP: ${{ secrets.TEST_GOOGLE_FORM_MAPPING_APP }}
VITE_TEST_GOOGLE_FORM_MAPPING_OPERATING_SYSTEM: ${{ secrets.TEST_GOOGLE_FORM_MAPPING_OPERATING_SYSTEM }}
VITE_TEST_GOOGLE_FORM_MAPPING_DEVICE_MODEL: ${{ secrets.TEST_GOOGLE_FORM_MAPPING_DEVICE_MODEL }}
VITE_TEST_GOOGLE_FORM_MAPPING_MESSAGE: ${{ secrets.TEST_GOOGLE_FORM_MAPPING_MESSAGE }}
VITE_TEST_GOOGLE_FORM_MAPPING_APP_VERSION: ${{ secrets.TEST_GOOGLE_FORM_MAPPING_APP_VERSION }}
- name: Package Chrome ZIP
run: |
set -euo pipefail
cd dist
zip -r "../PearPass-Browser-${{ steps.meta.outputs.TAG }}.zip" .
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: PearPass-Browser-${{ steps.meta.outputs.TAG }}.zip
path: PearPass-Browser-${{ steps.meta.outputs.TAG }}.zip
release:
runs-on: macos-latest
needs: [build]
if: ${{ github.ref == 'refs/heads/main' }}
steps:
- name: Download artifacts
uses: actions/download-artifact@v5
with:
path: artifacts/
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ needs.build.outputs.TAG }}
name: PearPass-Browser-${{ needs.build.outputs.TAG }}
draft: false
generate_release_notes: true
files: artifacts/**/*.zip