-
Notifications
You must be signed in to change notification settings - Fork 52
131 lines (102 loc) · 2.81 KB
/
ci.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
name: CI
on:
pull_request:
push:
branches:
- main
jobs:
backend:
runs-on: ubuntu-latest
services:
redis:
image: redis
ports:
- 6379:6379
strategy:
matrix:
ruby: ['2.6', '2.7', '3.0', '3.1']
steps:
- uses: actions/checkout@v3
- name: Setup ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
bundler-cache: true
- uses: actions/setup-node@v3
with:
node-version: 18
cache: yarn
cache-dependency-path: client-app/yarn.lock
- name: Yarn install
working-directory: client-app
run: yarn install
- name: Build JS app
run: bash build_client_app.sh
- name: Tests
run: bundle exec rake test
frontend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
cache: yarn
cache-dependency-path: client-app/yarn.lock
- name: Yarn install
working-directory: client-app
run: yarn install
- name: JS tests
working-directory: client-app
run: yarn test:ember
linting:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 3.2
bundler-cache: true
- name: Ruby lint
run: bundle exec rubocop
- uses: actions/setup-node@v3
if: ${{ !cancelled() }}
with:
node-version: 18
cache: yarn
cache-dependency-path: client-app/yarn.lock
- name: Yarn install
if: ${{ !cancelled() }}
working-directory: client-app
run: yarn install
- name: Syntax Tree
if: ${{ !cancelled() }}
run: |
bundle exec stree check Gemfile $(git ls-files '*.rb') $(git ls-files '*.rake') $(git ls-files '*.thor')
- name: JS linting
if: ${{ !cancelled() }}
working-directory: client-app
run: yarn lint
publish:
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
needs: [backend, frontend, linting]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
cache: yarn
cache-dependency-path: client-app/yarn.lock
- name: Yarn install
working-directory: client-app
run: yarn install
- name: Build JS app
run: bash build_client_app.sh
- name: Release Gem
uses: discourse/publish-rubygems-action@v2
env:
RUBYGEMS_API_KEY: ${{ secrets.RUBYGEMS_API_KEY }}
GIT_EMAIL: team@discourse.org
GIT_NAME: discoursebot