name: Lint on: - push - pull_request concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} cancel-in-progress: true env: ruby: '3.2' jobs: rubocop: name: RuboCop runs-on: ubuntu-latest timeout-minutes: 10 steps: - name: Check out code uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Setup ruby uses: ruby/setup-ruby@efbf473cab83af4468e8606cc33eca9281bb213f # v1.256.0 with: ruby-version: ${{ env.ruby }} rubygems: 3.4.10 bundler-cache: true - name: Run rubocop run: bundle exec rubocop --format fuubar erblint: name: ERB Lint runs-on: ubuntu-22.04 timeout-minutes: 10 steps: - name: Check out code uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Setup ruby uses: ruby/setup-ruby@efbf473cab83af4468e8606cc33eca9281bb213f # v1.256.0 with: ruby-version: ${{ env.ruby }} rubygems: 3.4.10 bundler-cache: true - name: Run erblint run: bundle exec erb_lint . eslint: name: ESLint runs-on: ubuntu-22.04 timeout-minutes: 10 steps: - name: Check out code uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Setup ruby uses: ruby/setup-ruby@efbf473cab83af4468e8606cc33eca9281bb213f # v1.256.0 with: ruby-version: ${{ env.ruby }} rubygems: 3.4.10 bundler-cache: true - name: Cache node modules uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: cache: yarn - name: Install node modules run: bundle exec bin/yarn install - name: Create dummy database configuration run: cp config/example.database.yml config/database.yml - name: Run eslint run: bundle exec rails eslint brakeman: name: Brakeman runs-on: ubuntu-22.04 timeout-minutes: 10 steps: - name: Check out code uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Setup ruby uses: ruby/setup-ruby@efbf473cab83af4468e8606cc33eca9281bb213f # v1.256.0 with: ruby-version: ${{ env.ruby }} rubygems: 3.4.10 bundler-cache: true - name: Run brakeman run: bundle exec brakeman -q annotate_models: env: RAILS_ENV: test name: Rails Annotate Models runs-on: ubuntu-22.04 timeout-minutes: 10 steps: - name: Check out code uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Setup ruby uses: ruby/setup-ruby@efbf473cab83af4468e8606cc33eca9281bb213f # v1.256.0 with: ruby-version: ${{ env.ruby }} rubygems: 3.4.10 bundler-cache: true - name: Configure rails run: | cp config/github.database.yml config/database.yml cp config/example.storage.yml config/storage.yml - name: Cache node modules uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: cache: yarn - name: Install node modules run: bundle exec bin/yarn install - name: Setup database run: | sudo systemctl start postgresql sudo -u postgres createuser -s $(id -un) createdb openstreetmap bundle exec rails db:schema:load - name: Run Annotate Models run: bundle exec annotaterb models - name: Fail if model annotations are out of date run: git diff --exit-code