File: C:/Redmine-4.x/redmine-4.2.9/plugins/redmine_scheduling_poll/.github/workflows/redmine_plugin.yml
name: Redmine Plugin
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
continue-on-error: ${{ matrix.experimental }}
strategy:
fail-fast: false
matrix:
mat_env:
- '3.0 redmica/redmica@v2.0.0'
- '2.7 redmica/redmica@v2.0.0'
- '2.7 redmica/redmica@v1.2.0'
- '3.1 redmine/redmine@5.0.0'
- '2.7 redmine/redmine@4.2.5'
- '2.6 redmine/redmine@4.2.5'
- '2.6 redmine/redmine@4.1.7'
- '2.6 redmine/redmine@4.0.8'
- '2.5 redmine/redmine@4.0.8'
experimental: [false]
include:
- mat_env: '3.0 redmica/redmica@master'
experimental: true
steps:
- run: |
echo PLUGIN_NAME=$PLUGIN_NAME >> $GITHUB_ENV
echo RUBY_VERSION=$(echo $MAT_ENV | cut -d' ' -f1) >> $GITHUB_ENV
echo REDMINE_REPOSITORY=$(echo $MAT_ENV | cut -d' ' -f2 | cut -d@ -f1) >> $GITHUB_ENV
echo REDMINE_REF=$(echo $MAT_ENV | cut -d' ' -f2 | cut -d@ -f2) >> $GITHUB_ENV
env:
PLUGIN_NAME: redmine_scheduling_poll
MAT_ENV: ${{ matrix.mat_env }}
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ env.RUBY_VERSION }}
- name: Checkout
uses: actions/checkout@v2
with:
path: ./${{ env.PLUGIN_NAME }}
- name: Set up Redmine
uses: actions/checkout@v2
with:
repository: ${{ env.REDMINE_REPOSITORY }}
ref: ${{ env.REDMINE_REF }}
path: ./redmine
- name: Copy the plugin files to plugin directory
run: cp -pr ./${{ env.PLUGIN_NAME }} ./redmine/plugins/${{ env.PLUGIN_NAME }}
- name: Create redmine/config/database.yml
uses: DamianReeves/write-file-action@v1.0
with:
path: ./redmine/config/database.yml
contents: |
test:
adapter: sqlite3
database: db/redmine_test.db
- uses: actions/cache@v2
with:
path: ./redmine/vendor/bundle
key: ${{ runner.os }}-gems-${{ hashFiles('./redmine/**/Gemfile.lock') }}
restore-keys: |
${{ runner.os }}-gems-
- name: Before script
run: |
cd ./redmine
bundle install --path=${BUNDLE_PATH:-vendor/bundle}
mv plugins plugins_bak
# Initialize redmine
bundle exec rake generate_secret_token
bundle exec rake db:migrate
bundle exec rake redmine:load_default_data
mv plugins_bak plugins
# Execute plugin's migration
bundle exec rake redmine:plugins NAME=${{ env.PLUGIN_NAME }}
env:
REDMINE_LANG: en
RAILS_ENV: test
# HACK sometimes fails login error, so retry 10 times
# HACK use shell script file to avoid interruption by error
- name: Prepare test script
uses: DamianReeves/write-file-action@v1.0
with:
path: ./run_test.sh
contents: |
#!/bin/sh
cd ./redmine
for i in `seq 0 9`; do
# Execute plugin's test
bundle exec rake redmine:plugins:test NAME=${{ env.PLUGIN_NAME }}
retval=$?
if [ "$retval" -eq 0 ]; then
break
fi
echo "${i}-th test failed; Retry test..."
done
exit $retval
- name: Execute test
run: sh ./run_test.sh
env:
REDMINE_LANG: en
RAILS_ENV: test