Skip to content

[NPM] (deps-dev): Bump markdownlint from 0.35.0 to 0.36.1 #236

[NPM] (deps-dev): Bump markdownlint from 0.35.0 to 0.36.1

[NPM] (deps-dev): Bump markdownlint from 0.35.0 to 0.36.1 #236

Workflow file for this run

name: Continuous Integration
on:
push:
branches:
- develop
- main
pull_request:
branches:
- '*'
types:
- opened
- reopened
- synchronize
# First three are default, this one is added to run CI on PRs that are moved from draft to ready for review
# https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request
- ready_for_review
# Avoid concurrency on the same branch to prevent parallel runs
# Skip this for develop and main branches, since we don't want to break releases
concurrency:
group: ${{ (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop') && format('no-concurrency-{0}', github.run_id) || format('{0}-{1}', github.workflow, github.ref) }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/develop' }}
env:
RUBY_YJIT_ENABLE: 1
jobs:
## Uncomment this to test the workflows and see CI context
# CI-Context:
# name: CI Context check
#
# runs-on: ubuntu-latest
#
# steps:
# - name: Dump context
# env:
# GITHUB_CONTEXT: ${{ toJson(github) }}
# JOB_CONTEXT: ${{ toJson(job) }}
# STEPS_CONTEXT: ${{ toJson(steps) }}
# run: |
# echo "$GITHUB_CONTEXT"
# echo "$JOB_CONTEXT"
# echo "$STEPS_CONTEXT"
ci-eligibility-check:
name: CI Eligibility Check
runs-on: ubuntu-latest
outputs:
eligible: ${{ steps.check.outputs.eligible }}
# Important conditions, since all following jobs depend on this job and do not check for these conditions again
# Run for any push event or PR but skip draft PRs
steps:
- name: Should run CI?
id: check
run: |
if [[ "${{ github.event_name }}" == "push" || \
( "${{ github.event_name }}" == "pull_request" && \
"${{ github.event.pull_request.draft }}" == "false" ) ]]; then
echo "eligible=true" >> $GITHUB_OUTPUT
else
echo "eligible=false" >> $GITHUB_OUTPUT
fi
rubocop-linters:
name: Rubocop Linters
runs-on: ubuntu-latest
needs: ci-eligibility-check
if: ${{ needs.ci-eligibility-check.outputs.eligible == 'true' }}
steps:
- name: Checkout repository πŸ›Ž
uses: actions/checkout@v4
with:
show-progress: false
- name: Setup Ruby and install gems βš™οΈ
uses: ruby/setup-ruby@v1
with:
ruby-version: .ruby-version
bundler-cache: true
- name: Run rubocop linters 🧹
run: |
bundle exec rubocop --parallel
non-ruby-linters:
name: Non-Ruby Linters
runs-on: ubuntu-latest
needs: ci-eligibility-check
if: ${{ needs.ci-eligibility-check.outputs.eligible == 'true' }}
steps:
- name: Checkout repository πŸ›ŽοΈ
uses: actions/checkout@v4
with:
show-progress: false
- name: Setup Node.js βš™οΈ
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
cache: 'npm'
- name: Install NPM βš™οΈ
run: npm install -g "npm@$(jq -r .engines.npm ./package.json)"
- name: Print Node.js and NPM context πŸ–¨οΈ
run: |
echo "Expected Node.js version: $(jq -r .engines.node ./package.json)"
echo "Actual Node.js version: $(node -v)"
echo "Expected NPM version: $(jq -r .engines.npm ./package.json)"
echo "Actual NPM version: $(npm -v)"
- name: Install dependencies βš™οΈ
run: npm ci --ignore-scripts
- name: Run linter 🧹
run: npm run lint
# There have been false positives like unused method for API::V1::EventsController#index action
# rails-best-practices:
# name: Rails best practices
# runs-on: ubuntu-latest
# needs: ci-eligibility-check
# if: ${{ needs.ci-eligibility-check.outputs.eligible == 'true' }}
# steps:
# - name: Checkout repository πŸ›Ž
# uses: actions/checkout@v4
# with:
# show-progress: false
# - name: Setup Ruby and install gems βš™οΈ
# uses: ruby/setup-ruby@v1
# with:
# ruby-version: .ruby-version
# bundler-cache: true
# - name: Rails Best Practices
# run: bundle exec rails_best_practices
code-smell-detector:
name: Code smell detector
runs-on: ubuntu-latest
needs: ci-eligibility-check
if: ${{ needs.ci-eligibility-check.outputs.eligible == 'true' }}
steps:
- name: Checkout repository πŸ›Ž
uses: actions/checkout@v4
with:
show-progress: false
- name: Setup Ruby and install gems βš™οΈ
uses: ruby/setup-ruby@v1
with:
ruby-version: .ruby-version
bundler-cache: true
- name: Run code smell detector 🧹
run: bundle exec reek .
brakeman:
name: Brakeman
runs-on: ubuntu-latest
needs: ci-eligibility-check
if: ${{ needs.ci-eligibility-check.outputs.eligible == 'true' }}
steps:
- name: Checkout repository πŸ›Ž
uses: actions/checkout@v4
with:
show-progress: false
- name: Setup Ruby and install gems βš™οΈ
uses: ruby/setup-ruby@v1
with:
ruby-version: .ruby-version
bundler-cache: true
- name: Run brakeman 🧹
run: bundle exec brakeman -A --no-pager
detect-unused-routes:
name: Detect unused routes
runs-on: ubuntu-latest
needs: ci-eligibility-check
if: ${{ needs.ci-eligibility-check.outputs.eligible == 'true' }}
steps:
- name: Checkout repository πŸ›Ž
uses: actions/checkout@v4
with:
show-progress: false
- name: Setup Ruby and install gems βš™οΈ
uses: ruby/setup-ruby@v1
with:
ruby-version: .ruby-version
bundler-cache: true
- name: Run unused routes detector 🧹
run: bundle exec rake traceroute
unit-tests:
name: Unit tests
runs-on: ubuntu-latest
needs:
- rubocop-linters
- non-ruby-linters
# - rails-best-practices
- code-smell-detector
- detect-unused-routes
- brakeman
services:
redis:
image: redis
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 6379:6379
postgres:
image: postgres:16-alpine
ports:
- 5432:5432
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRESQL_FSYNC: off
options: >-
--health-cmd "pg_isready -U postgres"
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- name: Install dependent libraries βš™οΈ
run: |
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
sudo apt-get install -y postgresql-client-16 libpq-dev
- name: Display openssl versions
run: dpkg -l | grep ssl
- name: Checkout repository πŸ›Ž
uses: actions/checkout@v4
with:
show-progress: false
- name: Setup Ruby and install gems βš™οΈ
uses: ruby/setup-ruby@v1
with:
ruby-version: .ruby-version
bundler-cache: true
- name: Setup DB πŸ’Ώ
run: |
bundle exec rake db:create
bundle exec rake db:schema:load
env:
RAILS_ENV: test
DATABASE_URL: 'postgresql://postgres:postgres@localhost/event_radar_test'
- name: Enable db reset test
run: |
mv spec/db_reset spec/db_reset_spec.rb
- name: Run db reset test
run: |
bundle exec rspec spec/db_reset_spec.rb
env:
RAILS_ENV: test
DATABASE_URL: 'postgresql://postgres:postgres@localhost/event_radar_test'
- name: Disable db reset test
run: |
mv spec/db_reset_spec.rb spec/db_reset_spec
- name: Run RSpec πŸ§ͺ
run: |
bundle exec rspec
env:
DATABASE_URL: 'postgresql://postgres:postgres@localhost/event_radar_test'
REDIS_URL: 'redis://localhost:6379'
RAILS_ENV: test
VCR_CONSISTENCY_CHECK: true