]> git.openstreetmap.org Git - rails.git/blob - .github/workflows/lint.yml
0608b699bdfdcc56bb6f3f10087762b3546e3140
[rails.git] / .github / workflows / lint.yml
1 name: Lint
2 on:
3   - push
4   - pull_request
5 concurrency:
6   group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
7   cancel-in-progress: true
8 env:
9   os: ubuntu-22.04
10   ruby: '3.0'
11 jobs:
12   rubocop:
13     name: RuboCop
14     runs-on: ubuntu-22.04
15     steps:
16     - name: Check out code
17       uses: actions/checkout@v4
18     - name: Setup ruby
19       uses: ruby/setup-ruby@v1
20       with:
21         ruby-version: ${{ env.ruby }}
22         rubygems: 3.4.10
23         bundler-cache: true
24     - name: Run rubocop
25       run: bundle exec rubocop --format fuubar
26   erblint:
27     name: ERB Lint
28     runs-on: ubuntu-22.04
29     steps:
30     - name: Check out code
31       uses: actions/checkout@v4
32     - name: Setup ruby
33       uses: ruby/setup-ruby@v1
34       with:
35         ruby-version: ${{ env.ruby }}
36         rubygems: 3.4.10
37         bundler-cache: true
38     - name: Run erblint
39       run: bundle exec erblint .
40   eslint:
41     name: ESLint
42     runs-on: ubuntu-22.04
43     steps:
44     - name: Check out code
45       uses: actions/checkout@v4
46     - name: Setup ruby
47       uses: ruby/setup-ruby@v1
48       with:
49         ruby-version: ${{ env.ruby }}
50         rubygems: 3.4.10
51         bundler-cache: true
52     - name: Cache node modules
53       uses: actions/cache@v3
54       with:
55         path: node_modules
56         key: yarn-${{ env.os }}-${{ hashFiles('yarn.lock') }}
57         restore-keys: |
58           yarn-${{ env.os }}-
59     - name: Install node modules
60       run: bundle exec bin/yarn install
61     - name: Create dummy database configuration
62       run: cp config/example.database.yml config/database.yml
63     - name: Run eslint
64       run: bundle exec rails eslint
65   brakeman:
66     name: Brakeman
67     runs-on: ubuntu-22.04
68     steps:
69     - name: Check out code
70       uses: actions/checkout@v4
71     - name: Setup ruby
72       uses: ruby/setup-ruby@v1
73       with:
74         ruby-version: ${{ env.ruby }}
75         rubygems: 3.4.10
76         bundler-cache: true
77     - name: Run brakeman
78       run: bundle exec brakeman -q
79   annotate_models:
80     env:
81       RAILS_ENV: test
82     name: Rails Annotate Models
83     runs-on: ubuntu-22.04
84     steps:
85     - name: Check out code
86       uses: actions/checkout@v4
87     - name: Setup ruby
88       uses: ruby/setup-ruby@v1
89       with:
90         ruby-version: ${{ env.ruby }}
91         rubygems: 3.4.10
92         bundler-cache: true
93     - name: Setup database
94       run: |
95         sudo systemctl start postgresql
96         sudo -u postgres createuser -s $(id -un)
97         createdb openstreetmap
98         cp config/github.database.yml config/database.yml
99         bundle exec rails db:schema:load
100     - name: Run Annotate Models
101       run: bundle exec rails annotate_models
102     - name: Fail if model annotations are out of date
103       run: git diff --exit-code