aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/publish.yml
blob: 9d56e9a9f78a14638183392cfe43f7c1ffc97cf5 (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:
        if: github.repository == 'Vendicated/Vencord'
        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: |
                  # 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
                  cd dist/chromium-unpacked
                  pnpx chrome-webstore-upload-cli@2.1.0 upload --auto-publish || EXIT_CODE=$?

                  # Firefox
                  cd ../firefox-unpacked
                  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 }}