-
-
Notifications
You must be signed in to change notification settings - Fork 6
136 lines (122 loc) · 5.26 KB
/
publish.yml
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
name: Publish to stores
on:
workflow_run:
workflows: ["Build IITC Button"]
types: [completed]
workflow_dispatch:
jobs:
check-secret:
runs-on: ubuntu-latest
outputs:
secrets: ${{ steps.key-check.outputs.defined }}
steps:
- name: Check for Secret availability
id: key-check
shell: bash
run: |
if [ "${{ secrets.CHROME_CLIENT_ID }}" != '' ]; then
echo "defined=true" >> $GITHUB_OUTPUT;
else
echo "defined=false" >> $GITHUB_OUTPUT;
fi
build:
name: Publish to stores
runs-on: ubuntu-latest
needs: [check-secret]
if: needs.check-secret.outputs.secrets == 'true'
steps:
- uses: actions/checkout@v4
- name: Zip sources
run: |
zip -r sources.zip . -x ".git/*" ".github/*"
- name: Get artifact ID and name from API
id: get-artifact-id
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const runId = ${{ github.event.workflow_run.id }};
const artifacts = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: runId
});
const chromeArtifact = artifacts.data.artifacts.find(artifact => artifact.name.includes("chrome"));
if (chromeArtifact) {
core.exportVariable("chromeArtifactId", chromeArtifact.id);
core.exportVariable("chromeArtifactName", chromeArtifact.name);
} else {
core.setFailed("No artifact found with 'chrome' in its name");
}
const firefoxArtifact = artifacts.data.artifacts.find(artifact => artifact.name.includes("firefox"));
if (firefoxArtifact) {
core.exportVariable("firefoxArtifactId", firefoxArtifact.id);
core.exportVariable("firefoxArtifactName", firefoxArtifact.name);
} else {
core.setFailed("No artifact found with 'firefox' in its name");
}
- name: Download Chrome artifact
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
let download = await github.rest.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: ${{ env.chromeArtifactId }},
archive_format: 'zip',
});
let fs = require('fs');
fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/build-chrome.zip`, Buffer.from(download.data));
- name: Download Firefox artifact
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
let download = await github.rest.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: ${{ env.firefoxArtifactId }},
archive_format: 'zip',
});
let fs = require('fs');
fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/build-firefox.zip`, Buffer.from(download.data));
- name: Unpacking and extracting the build type from the artifact
run: |
unzip -d build-chrome build-chrome.zip
unzip -d build-firefox build-firefox.zip
if [ -f "./build-firefox/.metadata/build_type" ]; then
BUILD_TYPE=$(cat ./build-firefox/.metadata/build_type)
echo "BUILD_TYPE=$BUILD_TYPE" >> $GITHUB_ENV
fi
- name: Setting the extension ID and defining the file name
if: ${{ contains(fromJSON('["release", "beta"]'), env.BUILD_TYPE) }}
run: |
if [ "$BUILD_TYPE" == "release" ]; then
echo "CHROME_EXTENSION_ID=${{ vars.CHROME_EXTENSION_ID_RELEASE }}" >> $GITHUB_ENV
echo "FIREFOX_EXTENSION_ID=${{ vars.FIREFOX_EXTENSION_ID_RELEASE }}" >> $GITHUB_ENV
elif [ "$BUILD_TYPE" == "beta" ]; then
echo "CHROME_EXTENSION_ID=${{ vars.CHROME_EXTENSION_ID_BETA }}" >> $GITHUB_ENV
echo "FIREFOX_EXTENSION_ID=${{ vars.FIREFOX_EXTENSION_ID_BETA }}" >> $GITHUB_ENV
fi
echo "CHROME_ZIP=./build-chrome/${{ env.chromeArtifactName }}.zip" >> $GITHUB_ENV
echo "FIREFOX_ZIP=./build-firefox/${{ env.firefoxArtifactName }}.zip" >> $GITHUB_ENV
- uses: actions/setup-node@v4
if: ${{ contains(fromJSON('["release", "beta"]'), env.BUILD_TYPE) }}
with:
node-version: 20
cache: 'npm'
- name: Install dependencies
if: ${{ contains(fromJSON('["release", "beta"]'), env.BUILD_TYPE) }}
run: npm ci
- name: Upload & release
if: ${{ contains(fromJSON('["release", "beta"]'), env.BUILD_TYPE) }}
env:
CHROME_CLIENT_ID: ${{ secrets.CHROME_CLIENT_ID }}
CHROME_CLIENT_SECRET: ${{ secrets.CHROME_CLIENT_SECRET }}
CHROME_REFRESH_TOKEN: ${{ secrets.CHROME_REFRESH_TOKEN }}
FIREFOX_JWT_ISSUER: ${{ secrets.FIREFOX_JWT_ISSUER }}
FIREFOX_JWT_SECRET: ${{ secrets.FIREFOX_JWT_SECRET }}
FIREFOX_SOURCES_ZIP: "sources.zip"
run: |
npx publish-extension