Repository navigation
143 lines (138 loc) · 5.16 KB
/
Copy pathsdk-e2e.yml
File metadata and controls
143 lines (138 loc) · 5.16 KB
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
137
138
139
140
141
142
143
name: SDK E2E
on:
push:
branches: [main]
paths:
- ".github/workflows/sdk-e2e.yml"
- "packages/sdk/**"
- "packages/tracker/**"
- "bun.lock"
- "package.json"
- "turbo.json"
workflow_dispatch:
inputs:
dry_run:
description: Report tracker changes without uploading
type: boolean
default: false
force:
description: Re-upload every tracker file
type: boolean
default: false
pull_request:
branches: [main, staging]
paths:
- ".github/workflows/sdk-e2e.yml"
- "packages/sdk/**"
- "packages/tracker/**"
- "bun.lock"
- "package.json"
- "turbo.json"
permissions:
contents: read
concurrency:
group: sdk-e2e-${{ github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name || github.repository }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs:
sdk-e2e:
name: SDK Playwright
runs-on: blacksmith-4vcpu-ubuntu-2404
timeout-minutes: 15
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
persist-credentials: false
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
with:
bun-version: "1.4.1"
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: "24"
- uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ~/.bun/install/cache
key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock') }}
restore-keys: ${{ runner.os }}-bun-
- run: bun install --frozen-lockfile --ignore-scripts
- name: Build sdk and tracker
run: bunx turbo run build --filter @databuddy/sdk --filter @databuddy/tracker
- name: Install Playwright browsers
run: bun run --cwd packages/sdk playwright install --with-deps chromium webkit
- name: Run sdk E2E
run: bun run --cwd packages/sdk playwright test --project=chromium
- name: Run tracker E2E
run: bun run --cwd packages/tracker playwright test --project=chromium
- name: Run tracker interaction E2E on WebKit
run: bun run --cwd packages/tracker playwright test tests/interactions.spec.ts --project=webkit --project=mobile-safari
- name: Upload tracker build
if: github.event_name != 'pull_request' && github.ref == 'refs/heads/main'
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: tracker-dist
path: packages/tracker/dist/*.js
if-no-files-found: error
retention-days: 90
- name: Upload Playwright artifacts
if: failure()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: sdk-e2e-artifacts
path: |
packages/sdk/test-results
packages/tracker/test-results
if-no-files-found: ignore
retention-days: 7
deploy-tracker:
name: Deploy Tracker
needs: sdk-e2e
if: github.event_name != 'pull_request' && github.ref == 'refs/heads/main'
runs-on: blacksmith-2vcpu-ubuntu-2404
timeout-minutes: 10
environment:
name: tracker-cdn
url: https://cdn.databuddy.cc/databuddy.js
permissions:
contents: read
id-token: write
attestations: write
concurrency:
group: tracker-deploy
cancel-in-progress: false
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
persist-credentials: false
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
with:
bun-version: "1.4.1"
- uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ~/.bun/install/cache
key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock') }}
restore-keys: ${{ runner.os }}-bun-
- run: bun install --frozen-lockfile --ignore-scripts
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: tracker-dist
path: packages/tracker/dist
- name: Attest build provenance
if: ${{ !inputs.dry_run }}
uses: actions/attest-build-provenance@4d101475d8b20a2381f78447822ac1eab6504dd8 # v4.2.2
with:
subject-path: packages/tracker/dist/*.js
- name: Deploy to Bunny
env:
BUNNY_STORAGE_ZONE_NAME: ${{ vars.BUNNY_STORAGE_ZONE_NAME }}
BUNNY_STORAGE_REGION: ${{ vars.BUNNY_STORAGE_REGION }}
BUNNY_STORAGE_ACCESS_KEY: ${{ secrets.BUNNY_STORAGE_ACCESS_KEY }}
DATABASE_URL: ${{ secrets.TRACKER_DATABASE_URL }}
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
DB_POOL_MAX: "1"
SERVICE_NAME: tracker-deploy
DRY_RUN: ${{ inputs.dry_run }}
FORCE: ${{ inputs.force }}
run: |
args=()
[ "$DRY_RUN" = "true" ] && args+=(--dry-run)
[ "$FORCE" = "true" ] && args+=(--force)
bun run --cwd packages/tracker deploy "${args[@]}"