From d5658cbb9559f770e9bdf6553e1d1d58652fcaa6 Mon Sep 17 00:00:00 2001 From: Alexander Meindl Date: Thu, 18 Mar 2021 07:17:53 +0100 Subject: [PATCH] Split actions to run mysql and postgres services only for required db --- .../{tests.yml => tests_with_mysql.yml} | 23 +---- .github/workflows/tests_with_postgres.yml | 99 +++++++++++++++++++ 2 files changed, 102 insertions(+), 20 deletions(-) rename .github/workflows/{tests.yml => tests_with_mysql.yml} (82%) create mode 100644 .github/workflows/tests_with_postgres.yml diff --git a/.github/workflows/tests.yml b/.github/workflows/tests_with_mysql.yml similarity index 82% rename from .github/workflows/tests.yml rename to .github/workflows/tests_with_mysql.yml index fe2fa81..7795091 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests_with_mysql.yml @@ -1,4 +1,4 @@ -name: Tests +name: Tests with MySQL on: push: pull_request: @@ -7,31 +7,16 @@ on: jobs: test: - name: ${{ matrix.redmine }} ${{ matrix.db }} ruby-${{ matrix.ruby }} + name: ${{ matrix.redmine }} ruby-${{ matrix.ruby }} runs-on: ubuntu-latest strategy: matrix: ruby: ['2.6', '2.4'] redmine: ['4.0-stable', '4.1-stable', 'master'] - db: ['postgres', 'mysql'] fail-fast: false services: - postgres: - image: postgres:13 - env: - POSTGRES_USER: postgres - POSTGRES_PASSWORD: postgres - ports: - - 5432:5432 - - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - mysql: image: mysql:8.0 env: @@ -49,7 +34,6 @@ jobs: - name: Verify MySQL connection from host run: | mysql --host 127.0.0.1 --port 3306 -uroot -pBestPasswordEver -e "SHOW DATABASES" - if: matrix.db == 'mysql' - name: Checkout Redmine uses: actions/checkout@v2 @@ -73,7 +57,6 @@ jobs: build-essential cmake libicu-dev - libpq-dev libmysqlclient-dev - name: Setup Ruby @@ -87,7 +70,7 @@ jobs: run: | sed -i '/rubocop/d' Gemfile rm -f .rubocop* - cp plugins/redmine_messenger/test/support/database-${{ matrix.db }}.yml config/database.yml + cp plugins/redmine_messenger/test/support/database-mysql.yml config/database.yml cp plugins/redmine_messenger/test/support/configuration.yml config/configuration.yml - name: Install Ruby dependencies diff --git a/.github/workflows/tests_with_postgres.yml b/.github/workflows/tests_with_postgres.yml new file mode 100644 index 0000000..3910c09 --- /dev/null +++ b/.github/workflows/tests_with_postgres.yml @@ -0,0 +1,99 @@ +name: Tests with PostgreSQL +on: + push: + pull_request: + schedule: + - cron: '0 5 * * *' + +jobs: + test: + name: ${{ matrix.redmine }} ruby-${{ matrix.ruby }} + runs-on: ubuntu-latest + + strategy: + matrix: + ruby: ['2.6', '2.4'] + redmine: ['4.0-stable', '4.1-stable', 'master'] + fail-fast: false + + services: + postgres: + image: postgres:13 + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + ports: + - 5432:5432 + + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + + steps: + - name: Checkout Redmine + uses: actions/checkout@v2 + with: + repository: redmine/redmine + ref: ${{ matrix.redmine }} + path: redmine + + - name: Checkout redmine_messenger + uses: actions/checkout@v2 + with: + repository: AlphaNodes/redmine_messenger + path: redmine/plugins/redmine_messenger + + - name: Update package archives + run: sudo apt-get update --yes --quiet + + - name: Install package dependencies + run: > + sudo apt-get install --yes --quiet + build-essential + cmake + libicu-dev + libpq-dev + + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby }} + bundler-cache: true # runs 'bundle install' and caches installed gems automatically + + - name: Prepare Redmine source + working-directory: redmine + run: | + sed -i '/rubocop/d' Gemfile + rm -f .rubocop* + cp plugins/redmine_messenger/test/support/database-postgres.yml config/database.yml + cp plugins/redmine_messenger/test/support/configuration.yml config/configuration.yml + + - name: Install Ruby dependencies + working-directory: redmine + run: | + bundle install --jobs=4 --retry=3 --without development + + - name: Run Redmine rake tasks + env: + RAILS_ENV: test + working-directory: redmine + run: | + bundle exec rake generate_secret_token + bundle exec rake db:create db:migrate redmine:plugins:migrate + bundle exec rake db:test:prepare + + - name: Run tests + env: + RAILS_ENV: test + REDMINE_VERSION: ${{ matrix.redmine }} + working-directory: redmine + run: bundle exec rake redmine:plugins:test NAME=redmine_messenger RUBYOPT="-W0" + + - name: Run uninstall test + env: + RAILS_ENV: test + REDMINE_VERSION: ${{ matrix.redmine }} + working-directory: redmine + run: bundle exec rake redmine:plugins:migrate NAME=redmine_messenger VERSION=0