name: Tests on: push: jobs: tests: name: test ${{matrix.db}} ruby-${{ matrix.ruby }} runs-on: ubuntu-latest strategy: matrix: ruby: ['3.1', '3.2', '3.3'] db: ['postgresql', 'mysql'] fail-fast: false services: postgres: image: postgres:13 env: POSTGRES_DB: redmine_test POSTGRES_USER: root POSTGRES_PASSWORD: root ports: - 5432:5432 options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 mysql: image: mysql:8.0 env: MYSQL_DATABASE: redmine_test MYSQL_ROOT_PASSWORD: 'root' ports: - 3306:3306 options: >- --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 steps: - name: Checkout code uses: actions/checkout@v4 - name: Install package dependencies run: | sudo apt-get update sudo apt-get install --yes --quiet ghostscript gsfonts - name: Allow imagemagick to read PDF files run: | echo '' > policy.xml echo '' >> policy.xml echo '' >> policy.xml sudo rm /etc/ImageMagick-6/policy.xml sudo mv policy.xml /etc/ImageMagick-6/policy.xml - name: Install Ruby and gems uses: ruby/setup-ruby@v1.176.0 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true - name: Prepare Redmine configuration for PostgreSQL run: | cp config/database.yml.example config/database.yml sed -i -e "s/mysql2$/postgresql/g" config/database.yml sed -i -e "s/host:.*$/host: localhost/g" config/database.yml sed -i -e "s/password:.*$/password: root/g" config/database.yml sed -i -e "41,43d" config/database.yml if: matrix.db == 'postgresql' - name: Prepare Redmine configuration for MySQL run: | cp config/database.yml.example config/database.yml sed -i -e "s/host:.*$/host: 127.0.0.1/g" config/database.yml sed -i -e "s/password:.*$/password: root/g" config/database.yml if: matrix.db == 'mysql' - name: Install dependencies env: RAILS_ENV: test run: bundle install --jobs=4 --retry=3 - name: Run DB migration env: RAILS_ENV: test run: bundle exec rake db:migrate - name: Run SCM setup for Git, Git UTF8, Subversion and Filesystem env: RAILS_ENV: test run: | bundle exec rake test:scm:setup:git bundle exec rake test:scm:setup:git_utf8 bundle exec rake test:scm:setup:subversion bundle exec rake test:scm:setup:filesystem - name: Run tests run: | bin/rails test bin/rails test:autoload