-
Notifications
You must be signed in to change notification settings - Fork 6
139 lines (118 loc) · 4.14 KB
/
e2e.yml
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
name: End to end codegen
on:
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
# Service containers to run with `build`
services:
# Label used to access the service container
postgres:
# Docker Hub image
image: postgres:14.6
# Provide the password for postgres
env:
POSTGRES_PASSWORD: postgres
# Set health checks to wait until postgres has started
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
# Maps tcp port 5432 on service container to the host
- 5432:5432
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-
restore-keys: |
${{ runner.os }}-pip-
- uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('ts/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: '1.21'
check-latest: true
cache: true
- name: Set up python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: setup auto_schema dependencies
run: |
pip3 install pipenv
cd python
pipenv install --dev
- name: Setup nodejs
uses: actions/setup-node@v3
with:
node-version: 18.x
- run: npm install -g ts-node [email protected] [email protected] @swc/[email protected] @swc/[email protected] jest [email protected]
- run: |
cd ts
npm ci
- name: Setup ripgrep
run: curl -LO https://github.com/BurntSushi/ripgrep/releases/download/13.0.0/ripgrep_13.0.0_amd64.deb && sudo dpkg -i ripgrep_13.0.0_amd64.deb
- name: setup tsent
run: cd tsent && go install .
- name: generate initial schema
run: |
# clone ent-starter
git clone https://github.com/lolopinto/ent-starter.git
cd ent-starter
npm install @snowtop/ent '@snowtop/[email protected]'
mkdir -p src/schema
cat ../.github/testdata/schema1.json | tsent generate schemas
tsent codegen
env:
DB_CONNECTION_STRING: 'postgres://postgres:postgres@localhost:5432/postgres'
LOCAL_AUTO_SCHEMA: 'true'
- name: rerun codegen no-change
run: cd ent-starter && tsent codegen
env:
DB_CONNECTION_STRING: 'postgres://postgres:postgres@localhost:5432/postgres'
LOCAL_AUTO_SCHEMA: 'true'
- name: add new field
run: |
cd ent-starter
npm install @snowtop/[email protected]
cat ../.github/testdata/schema2.json | tsent generate schemas --force
tsent codegen
env:
DB_CONNECTION_STRING: 'postgres://postgres:postgres@localhost:5432/postgres'
LOCAL_AUTO_SCHEMA: 'true'
- name: add and verify custom graphql
run: |
cd ent-starter
cp ../.github/testdata/user.ts.example src/ent/user.ts
tsent codegen
cp ../.github/testdata/jest.config.js.example jest.config.js
cp ../.github/testdata/verify_graphql_schema.test.ts.example src/verify_graphql_schema.test.ts
npm install ts-jest jest @types/jest
jest
env:
DB_CONNECTION_STRING: 'postgres://postgres:postgres@localhost:5432/postgres'
LOCAL_AUTO_SCHEMA: 'true'
- name: compile && run
run: |
cd ent-starter
npm run compile
timeout --preserve-status 7 node dist/graphql/index.js
env:
DB_CONNECTION_STRING: 'postgres://postgres:postgres@localhost:5432/postgres'
- name: delete schema
run: |
cd ent-starter
tsent delete_schema Contact --disable_prompts
env:
DB_CONNECTION_STRING: 'postgres://postgres:postgres@localhost:5432/postgres'
LOCAL_AUTO_SCHEMA: 'true'