@blitzbrowser/blitzbrowser 1.1.2 → 1.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/cicd.yml +49 -0
- package/Dockerfile +3 -1
- package/README.md +116 -1
- package/dist/app.module.js +18 -15
- package/dist/app.module.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/docker-compose.yml +31 -14
- package/package.json +1 -1
- package/src/app.module.ts +20 -16
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
name: CI/CD
|
|
2
|
+
on:
|
|
3
|
+
workflow_dispatch:
|
|
4
|
+
|
|
5
|
+
permissions:
|
|
6
|
+
id-token: write
|
|
7
|
+
contents: read
|
|
8
|
+
packages: write
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
publish:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v4
|
|
15
|
+
- uses: pnpm/action-setup@v4
|
|
16
|
+
with:
|
|
17
|
+
version: latest
|
|
18
|
+
- uses: actions/setup-node@v4
|
|
19
|
+
with:
|
|
20
|
+
node-version: '24'
|
|
21
|
+
registry-url: 'https://registry.npmjs.org'
|
|
22
|
+
cache: 'pnpm'
|
|
23
|
+
- run: pnpm install --frozen-lockfile
|
|
24
|
+
- run: pnpm build
|
|
25
|
+
- run: pnpm publish --access public --no-git-checks
|
|
26
|
+
- id: package_version
|
|
27
|
+
run: echo "VERSION=$(node -p "require('./package.json').version")" >> $GITHUB_OUTPUT
|
|
28
|
+
- uses: actions/github-script@v8
|
|
29
|
+
with:
|
|
30
|
+
script: |
|
|
31
|
+
github.rest.git.createRef({
|
|
32
|
+
owner: context.repo.owner,
|
|
33
|
+
repo: context.repo.repo,
|
|
34
|
+
ref: 'refs/tags/${{ steps.package_version.outputs.VERSION }}',
|
|
35
|
+
sha: context.sha
|
|
36
|
+
})
|
|
37
|
+
- uses: docker/login-action@v3
|
|
38
|
+
with:
|
|
39
|
+
registry: ghcr.io
|
|
40
|
+
username: ${{ github.actor }}
|
|
41
|
+
password: ${{ secrets.GITHUB_TOKEN }}
|
|
42
|
+
- uses: docker/setup-buildx-action@v3
|
|
43
|
+
- uses: docker/build-push-action@v6
|
|
44
|
+
with:
|
|
45
|
+
context: .
|
|
46
|
+
push: true
|
|
47
|
+
tags: |
|
|
48
|
+
ghcr.io/${{ github.repository }}:latest
|
|
49
|
+
ghcr.io/${{ github.repository }}:${{ steps.package_version.outputs.VERSION }}
|
package/Dockerfile
CHANGED
package/README.md
CHANGED
|
@@ -1 +1,116 @@
|
|
|
1
|
-
# BlitzBrowser
|
|
1
|
+
# BlitzBrowser
|
|
2
|
+
|
|
3
|
+
## 🚀 Quick Start
|
|
4
|
+
|
|
5
|
+
Start in seconds with docker and then connect your code.
|
|
6
|
+
|
|
7
|
+
### Docker
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
docker run -p=9999:9999 --shm-size=2g ghcr.io/blitzbrowser/blitzbrowser:latest
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
<details>
|
|
14
|
+
<summary><b>Docker Compose</b></summary>
|
|
15
|
+
|
|
16
|
+
```yaml
|
|
17
|
+
services:
|
|
18
|
+
blitzbrowser:
|
|
19
|
+
image: ghcr.io/blitzbrowser/blitzbrowser:latest
|
|
20
|
+
ports:
|
|
21
|
+
- "9999:9999"
|
|
22
|
+
shm_size: "2gb"
|
|
23
|
+
restart: always
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
</details>
|
|
27
|
+
|
|
28
|
+
<details>
|
|
29
|
+
<summary><b>Docker Compose with Rustfs (User Data Storage)</b></summary>
|
|
30
|
+
|
|
31
|
+
Before using user data storage with BlitzBrowser. You need to create the bucket `user-data` in Rustfs [http://localhost:9001](http://localhost:9001).
|
|
32
|
+
|
|
33
|
+
```yaml
|
|
34
|
+
services:
|
|
35
|
+
blitzbrowser:
|
|
36
|
+
image: ghcr.io/blitzbrowser/blitzbrowser:latest
|
|
37
|
+
ports:
|
|
38
|
+
- "9999:9999"
|
|
39
|
+
environment:
|
|
40
|
+
S3_ENDPOINT: http://s3:9000
|
|
41
|
+
S3_ACCESS_KEY_ID: rustfsadmin
|
|
42
|
+
S3_SECRET_ACCESS_KEY: rustfsadmin
|
|
43
|
+
S3_USER_DATA_BUCKET: user-data
|
|
44
|
+
shm_size: "2gb"
|
|
45
|
+
restart: always
|
|
46
|
+
s3:
|
|
47
|
+
image: rustfs/rustfs
|
|
48
|
+
ports:
|
|
49
|
+
- "9000:9000"
|
|
50
|
+
- "9001:9001"
|
|
51
|
+
environment:
|
|
52
|
+
RUSTFS_VOLUMES: /data
|
|
53
|
+
RUSTFS_ADDRESS: :9000
|
|
54
|
+
RUSTFS_ACCESS_KEY: rustfsadmin
|
|
55
|
+
RUSTFS_SECRET_KEY: rustfsadmin
|
|
56
|
+
RUSTFS_CONSOLE_ENABLE: true
|
|
57
|
+
restart: always
|
|
58
|
+
volumes:
|
|
59
|
+
- s3_data:/data
|
|
60
|
+
# RustFS volume permissions fixer service
|
|
61
|
+
volume-permission-helper:
|
|
62
|
+
image: alpine
|
|
63
|
+
volumes:
|
|
64
|
+
- s3_data:/data
|
|
65
|
+
command: >
|
|
66
|
+
sh -c "
|
|
67
|
+
chown -R 10001:10001 /data &&
|
|
68
|
+
echo 'Volume Permissions fixed' &&
|
|
69
|
+
exit 0
|
|
70
|
+
"
|
|
71
|
+
restart: "no"
|
|
72
|
+
volumes:
|
|
73
|
+
s3_data:
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
</details>
|
|
77
|
+
|
|
78
|
+
### Connect your code
|
|
79
|
+
|
|
80
|
+
<details open>
|
|
81
|
+
<summary><b>Puppeteer</b></summary>
|
|
82
|
+
|
|
83
|
+
```typescript
|
|
84
|
+
import puppeteer from 'puppeteer';
|
|
85
|
+
|
|
86
|
+
const browser = await puppeteer.connect({
|
|
87
|
+
browserWSEndpoint: `ws://localhost:9999`
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
const context = await browser.createBrowserContext();
|
|
91
|
+
const page = await context.newPage();
|
|
92
|
+
|
|
93
|
+
// ...
|
|
94
|
+
|
|
95
|
+
await browser.close();
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
</details>
|
|
99
|
+
|
|
100
|
+
<details>
|
|
101
|
+
<summary><b>Playwright + NodeJS</b></summary>
|
|
102
|
+
|
|
103
|
+
```typescript
|
|
104
|
+
import { chromium } from 'playwright';
|
|
105
|
+
|
|
106
|
+
const browser = await chromium.connectOverCDP(`ws://localhost:9999`);
|
|
107
|
+
|
|
108
|
+
const context = await browser.newContext();
|
|
109
|
+
const page = await context.newPage();
|
|
110
|
+
|
|
111
|
+
// ...
|
|
112
|
+
|
|
113
|
+
await browser.close();
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
</details>
|
package/dist/app.module.js
CHANGED
|
@@ -14,6 +14,23 @@ const user_data_service_1 = require("./services/user-data.service");
|
|
|
14
14
|
const browser_pool_service_1 = require("./services/browser-pool.service");
|
|
15
15
|
const timezone_service_1 = require("./services/timezone.service");
|
|
16
16
|
const cdp_controller_1 = require("./controllers/cdp.controller");
|
|
17
|
+
const USER_DATA_PROVIDERS = Object.keys(process.env).filter(k => k.startsWith('S3_')).length === 0 ? [] : [
|
|
18
|
+
{
|
|
19
|
+
provide: client_s3_1.S3Client,
|
|
20
|
+
useFactory: async () => {
|
|
21
|
+
return new client_s3_1.S3Client({
|
|
22
|
+
region: 'auto',
|
|
23
|
+
endpoint: process.env.S3_ENDPOINT,
|
|
24
|
+
credentials: {
|
|
25
|
+
accessKeyId: process.env.S3_ACCESS_KEY_ID,
|
|
26
|
+
secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
|
|
27
|
+
},
|
|
28
|
+
forcePathStyle: true,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
user_data_service_1.UserDataService,
|
|
33
|
+
];
|
|
17
34
|
let AppModule = class AppModule {
|
|
18
35
|
};
|
|
19
36
|
exports.AppModule = AppModule;
|
|
@@ -25,21 +42,7 @@ exports.AppModule = AppModule = __decorate([
|
|
|
25
42
|
status_controller_1.StatusController,
|
|
26
43
|
],
|
|
27
44
|
providers: [
|
|
28
|
-
|
|
29
|
-
provide: client_s3_1.S3Client,
|
|
30
|
-
useFactory: async () => {
|
|
31
|
-
return new client_s3_1.S3Client({
|
|
32
|
-
region: 'auto',
|
|
33
|
-
endpoint: process.env.S3_ENDPOINT,
|
|
34
|
-
credentials: {
|
|
35
|
-
accessKeyId: process.env.S3_ACCESS_KEY_ID,
|
|
36
|
-
secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
|
|
37
|
-
},
|
|
38
|
-
forcePathStyle: true,
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
user_data_service_1.UserDataService,
|
|
45
|
+
...USER_DATA_PROVIDERS,
|
|
43
46
|
browser_pool_service_1.BrowserPoolService,
|
|
44
47
|
timezone_service_1.TimezoneService
|
|
45
48
|
],
|
package/dist/app.module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,kDAA8C;AAC9C,uEAAmE;AACnE,oEAA+D;AAC/D,0EAAqE;AACrE,kEAA8D;AAC9D,iEAA6D;
|
|
1
|
+
{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,kDAA8C;AAC9C,uEAAmE;AACnE,oEAA+D;AAC/D,0EAAqE;AACrE,kEAA8D;AAC9D,iEAA6D;AAE7D,MAAM,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxG;QACE,OAAO,EAAE,oBAAQ;QACjB,UAAU,EAAE,KAAK,IAAI,EAAE;YACrB,OAAO,IAAI,oBAAQ,CAAC;gBAClB,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;gBACjC,WAAW,EAAE;oBACX,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB;oBACzC,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;iBAClD;gBACD,cAAc,EAAE,IAAI;aACrB,CAAC,CAAC;QACL,CAAC;KACF;IAED,mCAAe;CAChB,CAAA;AAcM,IAAM,SAAS,GAAf,MAAM,SAAS;CAAI,CAAA;AAAb,8BAAS;oBAAT,SAAS;IAZrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,EAAE;QACX,WAAW,EAAE;YACX,8BAAa;YACb,oCAAgB;SACjB;QACD,SAAS,EAAE;YACT,GAAG,mBAAmB;YACtB,yCAAkB;YAClB,kCAAe;SAChB;KACF,CAAC;GACW,SAAS,CAAI"}
|