-
Notifications
You must be signed in to change notification settings - Fork 0
152 lines (142 loc) · 3.76 KB
/
Copy pathci.yml
File metadata and controls
152 lines (142 loc) · 3.76 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
144
145
146
147
148
149
150
151
152
name: CI
on:
push:
branches: [dev]
pull_request:
branches: [dev]
permissions:
contents: read
jobs:
lint-check:
name: Lint Check
runs-on: ubuntu-latest
steps:
- name: Setup repo
uses: actions/checkout@v7
- name: Setup Deno
uses: denoland/setup-deno@v2
with:
cache: true
deno-version: 2.8.3
- name: Config properties file
run: bash .github/scripts/config-env.sh
- name: Run lint checks
run: deno lint
format-check:
name: Format Check
runs-on: ubuntu-latest
steps:
- name: Setup repo
uses: actions/checkout@v7
- name: Setup Deno
uses: denoland/setup-deno@v2
with:
cache: true
deno-version: 2.8.3
- name: Config properties file
run: bash .github/scripts/config-env.sh
- name: Check code format
run: deno fmt --check
type-check:
name: Type Check
runs-on: ubuntu-latest
steps:
- name: Setup repo
uses: actions/checkout@v7
- name: Setup Deno
uses: denoland/setup-deno@v2
with:
cache: true
deno-version: 2.8.3
- name: Config properties file
run: bash .github/scripts/config-env.sh
- name: Run checks
run: deno task check
unit-test:
name: Unit Tests
runs-on: ubuntu-latest
needs: [lint-check, format-check, type-check]
steps:
- name: Setup repo
uses: actions/checkout@v7
- name: Setup Deno
uses: denoland/setup-deno@v2
with:
cache: true
deno-version: 2.8.3
- name: Config properties file
run: bash .github/scripts/config-env.sh
- name: Run tests
run: deno task test
contract-check:
name: Swagger Contract Check
runs-on: ubuntu-latest
needs: unit-test
env:
MONGO_URL: mongodb://localhost:27017/on-the-edge
REDIS_URL: redis://localhost:6379
services:
mongo:
image: mongo:8
ports:
- 27017:27017
options: >-
--health-cmd "mongosh --quiet --eval 'db.adminCommand({ ping: 1 })'"
--health-interval 10s
--health-timeout 5s
--health-retries 5
redis:
image: redis:8-alpine
ports:
- 6379:6379
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- name: Setup repo
uses: actions/checkout@v7
- name: Setup Deno
uses: denoland/setup-deno@v2
with:
cache: true
deno-version: 2.8.3
- name: Config properties file
run: bash .github/scripts/config-env.sh
- name: Generate swagger spec
run: deno task swagger:generate
- name: Validate swagger spec
run: deno task swagger:validate
build-matrix:
name: Build Matrix Test
runs-on: ${{ matrix.os }}
needs: unit-test
strategy:
matrix:
os: [ubuntu-latest]
architecture: [x64, arm64]
fail-fast: true
steps:
- name: Setup repo
uses: actions/checkout@v7
- name: Setup Deno
uses: denoland/setup-deno@v2
with:
cache: true
deno-version: 2.8.3
- name: Config properties file
run: bash .github/scripts/config-env.sh
- name: Compile Application
run: deno task build
deployment-ready:
name: Deployment Ready Check
runs-on: ubuntu-latest
needs: [unit-test, build-matrix]
steps:
- name: Checkout code
uses: actions/checkout@v7
- name: Set deployment status
run: |
echo "DEPLOYMENT_READY=true" >> $GITHUB_ENV
echo "BUILD_TIMESTAMP=$(date -u +%Y%m%d-%H%M%S)" >> $GITHUB_ENV