33 workflow_dispatch :
44 inputs :
55 submit_stores :
6- description : " Run Chrome, Firefox, and Edge store submission preflight "
6+ description : ' Run store submission artifact preflight without store credentials '
77 required : false
8- default : " false"
8+ default : ' false'
99 type : choice
1010 options :
11- - " false"
12- - " true"
13- dry_run :
14- description : " Validate store submission without uploading artifacts"
15- required : false
16- default : " true"
17- type : choice
18- options :
19- - " true"
20- - " false"
11+ - ' false'
12+ - ' true'
2113 push :
2214 tags :
23- - " v*"
24-
25- permissions :
26- id-token : " write"
27- contents : " write"
28- env :
29- GH_TOKEN : ${{ github.token }}
15+ - ' v*'
3016
3117jobs :
32- build_and_release :
18+ manual_preflight :
19+ if : github.event_name == 'workflow_dispatch'
3320 runs-on : macos-14
21+ permissions :
22+ contents : read
3423
3524 steps :
3625 - uses : actions/checkout@v7
3726 with :
38- ref : ${{ github.event_name == 'push' && 'master' || github.ref_name }}
27+ ref : ${{ github.ref }}
28+ persist-credentials : false
3929
4030 - uses : actions/setup-node@v6
4131 with :
4232 node-version : 22
4333 - run : npm ci
4434
35+ - run : npm run build
36+
37+ - run : npm run release:firefox-sources
38+
39+ - name : Submit stores preflight
40+ if : inputs.submit_stores == 'true'
41+ run : npm run release:submit:preflight
42+
43+ release :
44+ if : github.event_name == 'push'
45+ runs-on : macos-14
46+ permissions :
47+ contents : write
48+
49+ steps :
50+ - uses : actions/checkout@v7
51+ with :
52+ ref : master
53+ fetch-depth : 0
54+ persist-credentials : true
55+
56+ - uses : actions/setup-node@v6
57+ with :
58+ node-version : 22
59+
4560 - name : Resolve release version
46- run : |
47- if [ "${{ github.event_name }}" = "push" ]; then
48- echo "VERSION=${GITHUB_REF_NAME#v}" >> $GITHUB_ENV
49- else
50- version="$(node -p "require('./src/manifest.json').version")"
51- echo "VERSION=${version}" >> $GITHUB_ENV
52- fi
61+ run : printf 'VERSION=%s\n' "${GITHUB_REF_NAME#v}" >> "$GITHUB_ENV"
5362
5463 - name : Update manifest.json version
55- if : github.event_name == 'push'
5664 uses : jossef/action-set-json-field@v2.2
5765 with :
5866 file : src/manifest.json
5967 field : version
6068 value : ${{ env.VERSION }}
6169
6270 - name : Update manifest.v2.json version
63- if : github.event_name == 'push'
6471 uses : jossef/action-set-json-field@v2.2
6572 with :
6673 file : src/manifest.v2.json
6774 field : version
6875 value : ${{ env.VERSION }}
6976
7077 - name : Push files
71- if : github.event_name == 'push'
72- continue-on-error : true
7378 run : |
7479 git config --global user.email "github-actions[bot]@users.noreply.github.com"
7580 git config --global user.name "github-actions[bot]"
76- git commit -am "release v${{ env.VERSION }}"
77- git push
81+ git add src/manifest.json src/manifest.v2.json
82+ if git diff --cached --quiet; then
83+ echo "No release version changes to commit"
84+ else
85+ git commit -m "release v${VERSION}"
86+ git fetch origin master
87+ git rebase FETCH_HEAD
88+ git push origin HEAD:master
89+ fi
7890
79- - if : github.event_name == 'push'
80- run : |
81- gh release create ${{github.ref_name}} -d -F CURRENT_CHANGE.md -t ${{github.ref_name}}
91+ - name : Checkout release tag for artifacts
92+ uses : actions/checkout@v7
93+ with :
94+ ref : ${{ github.ref }}
95+ persist-credentials : false
96+
97+ - run : npm ci
98+
99+ - name : Update release artifact manifest.json version
100+ uses : jossef/action-set-json-field@v2.2
101+ with :
102+ file : src/manifest.json
103+ field : version
104+ value : ${{ env.VERSION }}
105+
106+ - name : Update release artifact manifest.v2.json version
107+ uses : jossef/action-set-json-field@v2.2
108+ with :
109+ file : src/manifest.v2.json
110+ field : version
111+ value : ${{ env.VERSION }}
112+
113+ - run : |
114+ gh release create "$RELEASE_TAG" -d -F CURRENT_CHANGE.md -t "$RELEASE_TAG"
115+ env:
116+ GH_TOKEN: ${{ github.token }}
117+ RELEASE_TAG: ${{ github.ref_name }}
82118
83119 - uses : actions/setup-python@v6
84- if : github.event_name == 'push'
85120 with :
86121 python-version : ' 3.10' # for appdmg
87122 - uses : maxim-lobanov/setup-xcode@v1
88- if : github.event_name == 'push'
89123 with :
90124 xcode-version : 16.2
91- - if : github.event_name == 'push'
92- run : sed -i '' "s/0.0.0/${{ env.VERSION }}/g" safari/project.pre.patch
93- - if : github.event_name == 'push'
94- run : sed -i '' "s/0.0.0/${{ env.VERSION }}/g" safari/project.patch
95- - if : github.event_name == 'push'
96- run : npm run build:safari
97-
98- - if : github.event_name != 'push'
99- run : npm run build
125+ - run : sed -i '' "s/0.0.0/${VERSION}/g" safari/project.pre.patch
126+ - run : sed -i '' "s/0.0.0/${VERSION}/g" safari/project.patch
127+ - run : npm run build:safari
100128
101129 - run : npm run release:firefox-sources
102130
103- - if : github.event_name == 'push'
104- run : |
105- gh release upload ${{github.ref_name}} build/chromium.zip
106- gh release upload ${{github.ref_name}} build/firefox.zip
107- gh release upload ${{github.ref_name}} build/safari.dmg
108- gh release upload ${{github.ref_name}} build/chromium-without-katex-and-tiktoken.zip
109- gh release upload ${{github.ref_name}} build/firefox-without-katex-and-tiktoken.zip
131+ - run : |
132+ gh release upload "$RELEASE_TAG" build/chromium.zip
133+ gh release upload "$RELEASE_TAG" build/firefox.zip
134+ gh release upload "$RELEASE_TAG" build/safari.dmg
135+ gh release upload "$RELEASE_TAG" build/chromium-without-katex-and-tiktoken.zip
136+ gh release upload "$RELEASE_TAG" build/firefox-without-katex-and-tiktoken.zip
137+ env:
138+ GH_TOKEN: ${{ github.token }}
139+ RELEASE_TAG: ${{ github.ref_name }}
110140
111141 - name : Submit stores
112- if : github.event_name == 'push' || inputs.submit_stores == 'true'
113- run : |
114- args=()
115- if [ "${{ github.event_name }}" != "push" ]; then
116- if [ "${{ inputs.dry_run }}" != "true" ]; then
117- echo "::error::Manual store submission only supports dry_run=true. Push a v* tag for a real submission."
118- exit 1
119- fi
120- args+=(--dry-run)
121- fi
122- npm run release:submit -- "${args[@]}"
142+ run : npm run release:submit
123143 env :
124144 CHROME_EXTENSION_ID : ${{ secrets.CHROME_EXTENSION_ID }}
125145 CHROME_CLIENT_ID : ${{ secrets.CHROME_CLIENT_ID }}
@@ -137,6 +157,8 @@ jobs:
137157 EDGE_CLIENT_ID : ${{ secrets.EDGE_CLIENT_ID }}
138158 EDGE_API_KEY : ${{ secrets.EDGE_API_KEY }}
139159
140- - if : github.event_name == 'push'
141- run : |
142- gh release edit ${{github.ref_name}} --draft=false
160+ - run : |
161+ gh release edit "$RELEASE_TAG" --draft=false
162+ env:
163+ GH_TOKEN: ${{ github.token }}
164+ RELEASE_TAG: ${{ github.ref_name }}
0 commit comments