]> git.openstreetmap.org Git - rails.git/blob - .github/workflows/lint.yml
2050aaf3f264f416a41f58fa2cfeb4167eb8a7dc
[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         bundler-cache: true
23     - name: Run rubocop
24       run: bundle exec rubocop --format fuubar
25   erblint:
26     name: ERB Lint
27     runs-on: ubuntu-22.04
28     steps:
29     - name: Check out code
30       uses: actions/checkout@v4
31     - name: Setup ruby
32       uses: ruby/setup-ruby@v1
33       with:
34         ruby-version: ${{ env.ruby }}
35         bundler-cache: true
36     - name: Run erblint
37       run: bundle exec erblint .
38   eslint:
39     name: ESLint
40     runs-on: ubuntu-22.04
41     steps:
42     - name: Check out code
43       uses: actions/checkout@v4
44     - name: Setup ruby
45       uses: ruby/setup-ruby@v1
46       with:
47         ruby-version: ${{ env.ruby }}
48         bundler-cache: true
49     - name: Cache node modules
50       uses: actions/cache@v3
51       with:
52         path: node_modules
53         key: yarn-${{ env.os }}-${{ hashFiles('yarn.lock') }}
54         restore-keys: |
55           yarn-${{ env.os }}-
56     - name: Install node modules
57       run: bundle exec bin/yarn install
58     - name: Create dummy database configuration
59       run: cp config/example.database.yml config/database.yml
60     - name: Run eslint
61       run: bundle exec rails eslint
62   brakeman:
63     name: Brakeman
64     runs-on: ubuntu-22.04
65     steps:
66     - name: Check out code
67       uses: actions/checkout@v4
68     - name: Setup ruby
69       uses: ruby/setup-ruby@v1
70       with:
71         ruby-version: ${{ env.ruby }}
72         bundler-cache: true
73     - name: Run brakeman
74       run: bundle exec brakeman -q
75   annotate_models:
76     env:
77       RAILS_ENV: test
78     name: Rails Annotate Models
79     runs-on: ubuntu-22.04
80     steps:
81     - name: Check out code
82       uses: actions/checkout@v4
83     - name: Setup ruby
84       uses: ruby/setup-ruby@v1
85       with:
86         ruby-version: ${{ env.ruby }}
87         bundler-cache: true
88     - name: Setup database
89       run: |
90         sudo systemctl start postgresql
91         sudo -u postgres createuser -s $(id -un)
92         createdb openstreetmap
93         cp config/github.database.yml config/database.yml
94         bundle exec rails db:schema:load
95     - name: Run Annotate Models
96       run: bundle exec rails annotate_models
97     - name: Fail if model annotations are out of date
98       run: git diff --exit-code