forked from TryGhost/Ghost
-
Notifications
You must be signed in to change notification settings - Fork 0
193 lines (172 loc) · 5.67 KB
/
test.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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
name: Test Suite
on:
pull_request:
push:
branches:
- main
- 'v4.*'
- 3.x
- 2.x
- 'renovate/*'
env:
FORCE_COLOR: 1
jobs:
lint:
runs-on: ubuntu-18.04
if: github.event_name == 'push' || (github.event_name == 'pull_request' && !startsWith(github.head_ref, 'renovate/'))
name: Lint
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '14.16.1'
- run: yarn
- run: yarn lint
- uses: daniellockyer/action-slack-build@master
if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main'
with:
status: ${{ job.status }}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
migrations:
runs-on: ubuntu-18.04
if: github.event_name == 'push' || (github.event_name == 'pull_request' && !startsWith(github.head_ref, 'renovate/'))
strategy:
matrix:
DB: ['sqlite3', 'mysql']
env:
database__client: ${{ matrix.DB }}
database__connection__filename: /dev/shm/ghost-test.db
database__connection__host: 127.0.0.1
database__connection__user: root
database__connection__password: root
database__connection__database: ghost_testing
name: Migrations - ${{ matrix.DB }}
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
submodules: true
- uses: actions/setup-node@v2
with:
node-version: '14.16.1'
- name: Shutdown MySQL
run: sudo service mysql stop
if: matrix.DB == 'mysql'
- uses: mirromutth/[email protected]
if: matrix.DB == 'mysql'
with:
mysql version: '5.7'
mysql database: 'ghost_testing'
mysql root password: 'root'
- run: yarn
- run: |
node index.js &
sleep 20 && { kill $! && wait $!; } 2>/dev/null
- run: yarn knex-migrator rollback --v 4.0 --force
- run: yarn knex-migrator migrate --force
test:
runs-on: ubuntu-18.04
if: github.event_name == 'push' || (github.event_name == 'pull_request' && !startsWith(github.head_ref, 'renovate/'))
strategy:
matrix:
node: [ '12.22.1', '14.16.1' ]
env:
- DB: sqlite3
NODE_ENV: testing
- DB: mysql
NODE_ENV: testing-mysql
env:
DB: ${{ matrix.env.DB }}
NODE_ENV: ${{ matrix.env.NODE_ENV }}
database__connection__password: root
name: Node ${{ matrix.node }} - ${{ matrix.env.DB }}
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node }}
- name: Shutdown MySQL
run: sudo service mysql stop
if: matrix.env.DB == 'mysql'
- uses: mirromutth/[email protected]
if: matrix.env.DB == 'mysql'
with:
mysql version: '5.7'
mysql database: 'ghost_testing'
mysql root password: 'root'
- run: yarn
- run: yarn test:e2e
env:
database__connection__filename: /dev/shm/ghost-test.db
- run: yarn test:unit
- run: yarn test:regression
env:
database__connection__filename: /dev/shm/ghost-test.db
- name: Unit test coverage
run: yarn cov:unit
- uses: daniellockyer/action-slack-build@master
if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main'
with:
status: ${{ job.status }}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
ghost-cli:
name: Ghost-CLI
if: github.event_name == 'push' || (github.event_name == 'pull_request' && !startsWith(github.head_ref, 'renovate/'))
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
submodules: true
- uses: actions/setup-node@v2
with:
node-version: '12.22.1'
- run: npm install -g ghost-cli@latest
- run: npm --no-git-tag-version version minor # We need to artificially bump the minor version to get migrations to run
- run: zip -r ghost.zip .
- name: Clean Install
run: |
DIR=$(mktemp -d)
ghost install local -d $DIR --zip $GITHUB_WORKSPACE/ghost.zip
- name: Latest Release
run: |
DIR=$(mktemp -d)
ghost install local -d $DIR
ghost update -d $DIR --zip $GITHUB_WORKSPACE/ghost.zip
#- name: Update from latest v1
#run: |
#DIR=$(mktemp -d)
#ghost install v1 --local -d $DIR
#ghost update -f -d $DIR --zip $GITHUB_WORKSPACE/ghost.zip
#- name: Update from latest v2
#run: |
#DIR=$(mktemp -d)
#ghost install v2 --local -d $DIR
#ghost update -f -d $DIR --zip $GITHUB_WORKSPACE/ghost.zip
- name: Update from latest v3
run: |
DIR=$(mktemp -d)
ghost install v3 --local -d $DIR
ghost update -f -d $DIR --zip $GITHUB_WORKSPACE/ghost.zip
- name: Print debug logs
if: failure()
run: cat ~/.ghost/logs/*.log
- uses: daniellockyer/action-slack-build@master
if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main'
with:
status: ${{ job.status }}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
canary:
runs-on: ubuntu-18.04
needs: [lint, migrations, test, ghost-cli]
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
name: Canary
steps:
- name: Invoke Canary Build
uses: benc-uk/workflow-dispatch@v1
with:
workflow: Canary Build
token: ${{ secrets.RELEASE_TOKEN }}