diff options
Diffstat (limited to '.github/workflows/tests.yml')
-rw-r--r-- | .github/workflows/tests.yml | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 000000000..6a61051c5 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,96 @@ +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 install --yes --quiet + ghostscript + gsfonts + + - name: Allow imagemagick to read PDF files + run: | + echo '<policymap>' > policy.xml + echo '<policy domain="coder" rights="read | write" pattern="PDF" />' >> policy.xml + echo '</policymap>' >> 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 tests + run: bin/rails test |