aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/publish.yml
blob: 89cc2cb8aa98726fff7c3130d4bd616dca6888a0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
name: Release Browser Extension
on:
    push:
        tags:
            - v*

jobs:
    Publish:
        runs-on: ubuntu-latest

        steps:
            - uses: actions/checkout@v3

            - name: check that tag matches package.json version
              run: |
                pkg_version="v$(jq -r .version < package.json)"
                if [[ "${{ github.ref_name }}" != "$pkg_version" ]]; then
                    echo "Tag ${{ github.ref_name }} does not match package.json version $pkg_version" >&2
                    exit 1
                fi

            - uses: pnpm/action-setup@v2 # Install pnpm using packageManager key in package.json

            - name: Use Node.js 19
              uses: actions/setup-node@v3
              with:
                  node-version: 19
                  cache: "pnpm"

            - name: Install dependencies
              run: pnpm install --frozen-lockfile

            - name: Build web
              run: pnpm buildWeb --standalone

            - name: Publish extension
              run: |
                cd dist/extension-unpacked

                # Do not fail so that even if chrome fails, firefox gets a shot. But also store exit code to fail workflow later
                EXIT_CODE=0

                # Chrome
                pnpx chrome-webstore-upload-cli@2.1.0 upload --auto-publish || EXIT_CODE=$?

                # Firefox
                npm i -g web-ext@7.4.0 web-ext-submit@7.4.0
                web-ext-submit || EXIT_CODE=$?

                exit $EXIT_CODE
              env:
                # Chrome
                EXTENSION_ID: ${{ secrets.CHROME_EXTENSION_ID }}
                CLIENT_ID: ${{ secrets.CHROME_CLIENT_ID }}
                CLIENT_SECRET: ${{ secrets.CHROME_CLIENT_SECRET }}
                REFRESH_TOKEN: ${{ secrets.CHROME_REFRESH_TOKEN }}

                # Firefox
                WEB_EXT_API_KEY: ${{ secrets.WEBEXT_USER }}
                WEB_EXT_API_SECRET: ${{ secrets.WEBEXT_SECRET }}