Skip to content

Commit 740274e

Browse files
committed
Fix Chrome Web Store deployment to use CRX instead of ZIP
- Update deploy-chrome.js to use CRX file path - Modify workflow to generate CRX packages for Chrome deployment - Update all environment variables from ZIP to CRX - Fix deployment verification and path setting - Bump version to 1.6.3 for CRX deployment test
1 parent a110f17 commit 740274e

File tree

3 files changed

+38
-35
lines changed

3 files changed

+38
-35
lines changed

β€Ž.github/workflows/ci-cd.ymlβ€Ž

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -206,48 +206,50 @@ jobs:
206206
VERSION=$(node -p 'require("./package.json").version')
207207
echo "VERSION=${VERSION}" >> $GITHUB_ENV
208208
209-
# CRX private key is no longer needed for ZIP-based Chrome Web Store uploads
210-
# The new action uses ZIP files directly with OAuth tokens
211-
echo "βœ… Skipping CRX private key processing - using ZIP format for Chrome Web Store"
209+
# Create CRX package for Chrome Web Store deployment
210+
echo "πŸ”§ Creating CRX package for Chrome Web Store..."
211+
npm run package:crx
212212
213213
# Copy existing artifacts with version numbers
214214
cp blog-link-analyzer.zip "blog-link-analyzer-${VERSION}.zip"
215215
cp blog-link-analyzer-firefox.xpi "blog-link-analyzer-firefox-${VERSION}.xpi"
216216
217-
# Verify ZIP file was created successfully
218-
if [ ! -f "blog-link-analyzer-${VERSION}.zip" ]; then
219-
echo "❌ ZIP file not found - Chrome Web Store deployment will fail"
220-
echo "Available files:"
221-
ls -la blog-link-analyzer-${VERSION}.*
222-
exit 1
217+
# Find and copy CRX file with version number
218+
CRX_FILE=$(find . -name "blog-link-analyzer-*.crx" -type f | head -1)
219+
if [ -n "$CRX_FILE" ]; then
220+
cp "$CRX_FILE" "blog-link-analyzer-${VERSION}.crx"
221+
echo "βœ… CRX file created and versioned"
222+
ls -la blog-link-analyzer-${VERSION}.crx
223223
else
224-
echo "βœ… ZIP file created successfully"
225-
ls -la blog-link-analyzer-${VERSION}.zip
224+
echo "❌ CRX file not found - Chrome Web Store deployment will fail"
225+
echo "Available CRX files:"
226+
find . -name "*.crx" -type f -exec ls -la {} \;
227+
exit 1
226228
fi
227229
228230
echo "βœ… Artifacts built with version ${VERSION}"
229231
echo "πŸ“‹ Available artifacts:"
230-
ls -la blog-link-analyzer-${VERSION}.zip blog-link-analyzer-firefox-${VERSION}.xpi 2>/dev/null || echo "Some artifacts may be missing"
232+
ls -la blog-link-analyzer-${VERSION}.zip blog-link-analyzer-${VERSION}.crx blog-link-analyzer-firefox-${VERSION}.xpi 2>/dev/null || echo "Some artifacts may be missing"
231233
232-
# Ensure ZIP file exists for Chrome deployment
233-
if [ ! -f "blog-link-analyzer-${VERSION}.zip" ]; then
234-
echo "❌ Chrome ZIP file not found - deployment cannot continue"
234+
# Ensure CRX file exists for Chrome deployment
235+
if [ ! -f "blog-link-analyzer-${VERSION}.crx" ]; then
236+
echo "❌ Chrome CRX file not found - deployment cannot continue"
235237
exit 1
236238
fi
237239
238-
echo "βœ… Chrome ZIP file ready for deployment"
240+
echo "βœ… Chrome CRX file ready for deployment"
239241
240242
- name: Verify Deployment Files
241243
run: |
242244
echo "πŸ” Verifying deployment files exist..."
243245
echo "VERSION from env: ${{ env.VERSION }}"
244-
echo "Looking for: blog-link-analyzer-${{ env.VERSION }}.zip"
245-
if [ -f "blog-link-analyzer-${{ env.VERSION }}.zip" ]; then
246-
echo "βœ… Chrome ZIP found"
246+
echo "Looking for: blog-link-analyzer-${{ env.VERSION }}.crx"
247+
if [ -f "blog-link-analyzer-${{ env.VERSION }}.crx" ]; then
248+
echo "βœ… Chrome CRX found"
247249
else
248-
echo "❌ Chrome ZIP NOT found"
249-
echo "Available ZIP files:"
250-
ls -la *.zip 2>/dev/null || echo "No ZIP files found"
250+
echo "❌ Chrome CRX NOT found"
251+
echo "Available CRX files:"
252+
ls -la *.crx 2>/dev/null || echo "No CRX files found"
251253
fi
252254
echo "Looking for: blog-link-analyzer-firefox-${{ env.VERSION }}.xpi"
253255
if [ -f "blog-link-analyzer-firefox-${{ env.VERSION }}.xpi" ]; then
@@ -263,10 +265,10 @@ jobs:
263265
- name: Set Deployment Paths
264266
run: |
265267
VERSION=$(node -p 'require("./package.json").version')
266-
echo "CHROME_ZIP_PATH=blog-link-analyzer-${VERSION}.zip" >> $GITHUB_ENV
268+
echo "CHROME_CRX_PATH=blog-link-analyzer-${VERSION}.crx" >> $GITHUB_ENV
267269
echo "FIREFOX_XPI_PATH=blog-link-analyzer-firefox-${VERSION}.xpi" >> $GITHUB_ENV
268270
echo "Deployment paths set:"
269-
echo "Chrome ZIP: $CHROME_ZIP_PATH"
271+
echo "Chrome CRX: $CHROME_CRX_PATH"
270272
echo "Firefox: $FIREFOX_XPI_PATH"
271273
272274
- name: Authenticate to Google Cloud (Workload Identity Federation)
@@ -280,7 +282,7 @@ jobs:
280282
run: |
281283
echo "πŸš€ Deploying to Chrome Web Store using OAuth2 (Primary Method)"
282284
echo "πŸ“¦ Extension ID: $CHROME_EXTENSION_ID"
283-
echo "πŸ“ ZIP Path: $CHROME_ZIP_PATH"
285+
echo "πŸ“ CRX Path: $CHROME_CRX_PATH"
284286
285287
# Install dependencies and deploy with OAuth2
286288
npm run deploy:chrome
@@ -295,7 +297,7 @@ jobs:
295297
fi
296298
env:
297299
CHROME_EXTENSION_ID: ${{ secrets.CHROME_EXTENSION_ID }}
298-
CHROME_ZIP_PATH: ${{ env.CHROME_ZIP_PATH }}
300+
CHROME_CRX_PATH: ${{ env.CHROME_CRX_PATH }}
299301
CHROME_CLIENT_ID: ${{ secrets.CHROME_CLIENT_ID }}
300302
CHROME_CLIENT_SECRET: ${{ secrets.CHROME_CLIENT_SECRET }}
301303
CHROME_REFRESH_TOKEN: ${{ secrets.CHROME_REFRESH_TOKEN }}
@@ -322,6 +324,7 @@ jobs:
322324
env:
323325
CHROME_EXTENSION_ID: ${{ secrets.CHROME_EXTENSION_ID }}
324326
CHROME_ZIP_PATH: ${{ env.CHROME_ZIP_PATH }}
327+
CHROME_CRX_PATH: ${{ env.CHROME_CRX_PATH }}
325328
CHROME_PUBLISHER_ID: ${{ secrets.CHROME_PUBLISHER_ID }}
326329
GOOGLE_SERVICE_ACCOUNT_KEY: ${{ secrets.GOOGLE_SERVICE_ACCOUNT_KEY }}
327330
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
@@ -379,7 +382,7 @@ jobs:
379382
run: |
380383
echo "DEPLOYMENT_VERSION=${{ github.event.release.tag_name }}" >> deployment.env
381384
echo "DEPLOYMENT_TIMESTAMP=$(date -u +%Y-%m-%dT%H:%M:%SZ)" >> deployment.env
382-
echo "CHROME_PACKAGE=blog-link-analyzer-${{ env.VERSION }}.zip" >> deployment.env
385+
echo "CHROME_PACKAGE=blog-link-analyzer-${{ env.VERSION }}.crx" >> deployment.env
383386
echo "FIREFOX_PACKAGE=blog-link-analyzer-firefox-${{ env.VERSION }}.xpi" >> deployment.env
384387
385388
- name: Upload deployment metadata

β€Žpackage.jsonβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "blog-link-analyzer",
3-
"version": "1.6.2",
3+
"version": "1.6.3",
44
"description": "Detects blog posts and extracts linked blog content with titles and authors",
55
"main": "background/service-worker.js",
66
"scripts": {

β€Žscripts/deploy-chrome.jsβ€Ž

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ const config = {
99
clientId: process.env.CHROME_CLIENT_ID,
1010
clientSecret: process.env.CHROME_CLIENT_SECRET,
1111
refreshToken: process.env.CHROME_REFRESH_TOKEN,
12-
zipPath: process.env.CHROME_ZIP_PATH
12+
crxPath: process.env.CHROME_CRX_PATH
1313
};
1414

1515
// Validate required environment variables
16-
const requiredVars = ['extensionId', 'clientId', 'clientSecret', 'refreshToken', 'zipPath'];
16+
const requiredVars = ['extensionId', 'clientId', 'clientSecret', 'refreshToken', 'crxPath'];
1717
const missingVars = requiredVars.filter(varName => !config[varName]);
1818

1919
if (missingVars.length > 0) {
@@ -23,12 +23,12 @@ if (missingVars.length > 0) {
2323

2424
console.log('πŸš€ Starting Chrome Web Store deployment...');
2525
console.log(`πŸ“¦ Extension ID: ${config.extensionId}`);
26-
console.log(`πŸ“ ZIP Path: ${config.zipPath}`);
26+
console.log(`πŸ“ CRX Path: ${config.crxPath}`);
2727

2828
try {
29-
// Check if ZIP file exists
30-
if (!fs.existsSync(config.zipPath)) {
31-
throw new Error(`ZIP file not found: ${config.zipPath}`);
29+
// Check if CRX file exists
30+
if (!fs.existsSync(config.crxPath)) {
31+
throw new Error(`CRX file not found: ${config.crxPath}`);
3232
}
3333

3434
// Create Chrome Web Store client
@@ -47,7 +47,7 @@ try {
4747

4848
// Upload extension
4949
console.log('πŸ“€ Uploading extension...');
50-
const uploadResponse = await store.uploadExisting(config.zipPath, token);
50+
const uploadResponse = await store.uploadExisting(config.crxPath, token);
5151

5252
console.log('βœ… Upload successful');
5353
console.log('πŸ“‹ Upload response:', JSON.stringify(uploadResponse, null, 2));

0 commit comments

Comments
Β (0)