Skip to content

Commit 6d3d280

Browse files
authored
Merge pull request #30 from Blazity/dev
dev
2 parents 1cbf0b2 + c367d30 commit 6d3d280

29 files changed

Lines changed: 2718 additions & 270 deletions

.env.e2e.example

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Target server
2+
E2E_BASE_URL=https://your-staging.vercel.app
3+
4+
# Jira
5+
JIRA_BASE_URL=https://your-domain.atlassian.net
6+
JIRA_EMAIL=your-email@example.com
7+
JIRA_API_TOKEN=
8+
JIRA_PROJECT_KEY=PROJ
9+
JIRA_WEBHOOK_SECRET=
10+
COLUMN_AI=AI
11+
COLUMN_AI_REVIEW=AI Review
12+
COLUMN_BACKLOG=Backlog
13+
14+
# GitHub
15+
GITHUB_TOKEN=
16+
GITHUB_OWNER=
17+
GITHUB_REPO=
18+
19+
# Cron auth
20+
CRON_SECRET=
21+
22+
# Upstash Redis
23+
AI_WORKFLOW_KV_REST_API_URL=
24+
AI_WORKFLOW_KV_REST_API_TOKEN=
25+
26+
# Vercel Deployment Protection bypass (optional, needed for preview URLs)
27+
# VERCEL_AUTOMATION_BYPASS_SECRET=

.env.example

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ JIRA_BASE_URL=https://your-domain.atlassian.net
44
JIRA_EMAIL=your-email@example.com
55
JIRA_API_TOKEN=your-jira-api-token
66
JIRA_PROJECT_KEY=PROJ
7-
JIRA_WEBHOOK_SECRET=your-webhook-secret
7+
88
COLUMN_AI=AI
99
COLUMN_AI_REVIEW=AI Review
1010
COLUMN_BACKLOG=Backlog

.github/workflows/ci.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main, dev]
6+
pull_request:
7+
branches: [main, dev]
8+
9+
jobs:
10+
ci:
11+
runs-on: ubuntu-latest
12+
timeout-minutes: 10
13+
steps:
14+
- uses: actions/checkout@v4
15+
- uses: pnpm/action-setup@v4
16+
with:
17+
version: 10
18+
- uses: actions/setup-node@v4
19+
with:
20+
node-version: 20
21+
cache: pnpm
22+
- run: pnpm install --frozen-lockfile
23+
- run: pnpm run typecheck
24+
- run: pnpm run test

.github/workflows/e2e.yml

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
name: E2E Tests
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
tier:
7+
description: "Which tier to run"
8+
type: choice
9+
options:
10+
- tier1
11+
- tier2
12+
- all
13+
default: all
14+
15+
jobs:
16+
e2e-tier1:
17+
if: inputs.tier == 'tier1' || inputs.tier == 'all'
18+
runs-on: ubuntu-latest
19+
timeout-minutes: 15
20+
environment: e2e
21+
env:
22+
E2E_BASE_URL: ${{ secrets.E2E_BASE_URL }}
23+
JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
24+
JIRA_EMAIL: ${{ secrets.JIRA_EMAIL }}
25+
JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
26+
JIRA_PROJECT_KEY: ${{ secrets.JIRA_PROJECT_KEY }}
27+
JIRA_WEBHOOK_SECRET: ${{ secrets.JIRA_WEBHOOK_SECRET }}
28+
COLUMN_AI: ${{ secrets.COLUMN_AI }}
29+
COLUMN_AI_REVIEW: ${{ secrets.COLUMN_AI_REVIEW }}
30+
COLUMN_BACKLOG: ${{ secrets.COLUMN_BACKLOG }}
31+
GITHUB_TOKEN: ${{ secrets.E2E_GITHUB_TOKEN }}
32+
GITHUB_OWNER: ${{ secrets.E2E_GITHUB_OWNER }}
33+
GITHUB_REPO: ${{ secrets.E2E_GITHUB_REPO }}
34+
CRON_SECRET: ${{ secrets.CRON_SECRET }}
35+
AI_WORKFLOW_KV_REST_API_URL: ${{ secrets.AI_WORKFLOW_KV_REST_API_URL }}
36+
AI_WORKFLOW_KV_REST_API_TOKEN: ${{ secrets.AI_WORKFLOW_KV_REST_API_TOKEN }}
37+
VERCEL_AUTOMATION_BYPASS_SECRET: ${{ secrets.VERCEL_AUTOMATION_BYPASS_SECRET }}
38+
steps:
39+
- uses: actions/checkout@v4
40+
- uses: pnpm/action-setup@v4
41+
with:
42+
version: 10
43+
- uses: actions/setup-node@v4
44+
with:
45+
node-version: "20.12"
46+
cache: pnpm
47+
- run: pnpm install --frozen-lockfile
48+
- run: pnpm run test:e2e:tier1
49+
- if: failure()
50+
uses: actions/upload-artifact@v4
51+
with:
52+
name: e2e-tier1-results
53+
path: |
54+
e2e/**/*.log
55+
retention-days: 7
56+
57+
e2e-tier2:
58+
if: inputs.tier == 'tier2' || inputs.tier == 'all'
59+
needs: [e2e-tier1]
60+
runs-on: ubuntu-latest
61+
timeout-minutes: 150
62+
environment: e2e
63+
env:
64+
E2E_BASE_URL: ${{ secrets.E2E_BASE_URL }}
65+
JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
66+
JIRA_EMAIL: ${{ secrets.JIRA_EMAIL }}
67+
JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
68+
JIRA_PROJECT_KEY: ${{ secrets.JIRA_PROJECT_KEY }}
69+
JIRA_WEBHOOK_SECRET: ${{ secrets.JIRA_WEBHOOK_SECRET }}
70+
COLUMN_AI: ${{ secrets.COLUMN_AI }}
71+
COLUMN_AI_REVIEW: ${{ secrets.COLUMN_AI_REVIEW }}
72+
COLUMN_BACKLOG: ${{ secrets.COLUMN_BACKLOG }}
73+
GITHUB_TOKEN: ${{ secrets.E2E_GITHUB_TOKEN }}
74+
GITHUB_OWNER: ${{ secrets.E2E_GITHUB_OWNER }}
75+
GITHUB_REPO: ${{ secrets.E2E_GITHUB_REPO }}
76+
CRON_SECRET: ${{ secrets.CRON_SECRET }}
77+
AI_WORKFLOW_KV_REST_API_URL: ${{ secrets.AI_WORKFLOW_KV_REST_API_URL }}
78+
AI_WORKFLOW_KV_REST_API_TOKEN: ${{ secrets.AI_WORKFLOW_KV_REST_API_TOKEN }}
79+
VERCEL_AUTOMATION_BYPASS_SECRET: ${{ secrets.VERCEL_AUTOMATION_BYPASS_SECRET }}
80+
steps:
81+
- uses: actions/checkout@v4
82+
- uses: pnpm/action-setup@v4
83+
with:
84+
version: 10
85+
- uses: actions/setup-node@v4
86+
with:
87+
node-version: "20.12"
88+
cache: pnpm
89+
- run: pnpm install --frozen-lockfile
90+
- run: pnpm run test:e2e:tier2
91+
- if: failure()
92+
uses: actions/upload-artifact@v4
93+
with:
94+
name: e2e-tier2-results
95+
path: |
96+
e2e/**/*.log
97+
retention-days: 7

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ dist/
99
.vercel
1010
.env*.local
1111
.workflow-data/
12+
.env.e2e

0 commit comments

Comments
 (0)