1
- name : Test with Postgres
1
+ name : Test
2
2
3
3
env :
4
4
PLUGIN_NAME : ${{ github.event.repository.name }}
15
15
16
16
jobs :
17
17
test :
18
- name : redmine:${{ matrix.redmine_version }} ruby:${{ matrix.ruby_version }} postgres :${{ matrix.db_version }}
18
+ name : redmine:${{ matrix.redmine_version }} ruby:${{ matrix.ruby_version }} db :${{ matrix.db }}
19
19
runs-on : ubuntu-22.04
20
20
21
21
container :
@@ -25,17 +25,33 @@ jobs:
25
25
fail-fast : false
26
26
matrix :
27
27
redmine_version : [4.2-stable, 5.0-stable, master]
28
- ruby_version : [2.7, 3.0, 3.1]
29
- db_version : [10, 14]
28
+ ruby_version : ['2.6', '2.7', '3.0', '3.1']
29
+ db : [mysql, postgres, sqlite]
30
+ # # System test takes 2~3 times longer, so limit to specific matrix combinations
31
+ # # See: https://docs.github.com/en/actions/using-jobs/using-a-matrix-for-your-jobs#expanding-or-adding-matrix-configurations
32
+ # include:
33
+ # - system_test: true
34
+ # redmine_version: master
35
+ # ruby_version: '3.1'
36
+ # db: mysql
30
37
exclude :
31
38
- redmine_version : 4.2-stable
32
- ruby_version : 3.0
39
+ ruby_version : ' 3.0'
33
40
- redmine_version : 4.2-stable
34
- ruby_version : 3.1
41
+ ruby_version : ' 3.1'
35
42
36
43
services :
44
+ mysql :
45
+ image : mysql:5.7 # min
46
+ # image: mysql:8.0 # latest
47
+ env :
48
+ MYSQL_ROOT_PASSWORD : password
49
+ ports :
50
+ - 3306:3306
51
+ options : --health-cmd "mysqladmin ping" --health-interval 10s --health-timeout 5s --health-retries 5
37
52
postgres :
38
- image : postgres:${{ matrix.db_version }}
53
+ image : postgres:10 # min
54
+ # image: postgres:15 # latest
39
55
env :
40
56
POSTGRES_USER : postgres
41
57
POSTGRES_PASSWORD : postgres
@@ -45,37 +61,73 @@ jobs:
45
61
46
62
steps :
47
63
- name : Checkout Redmine
48
- uses : actions/checkout@v2
64
+ uses : actions/checkout@v3
49
65
with :
50
66
repository : redmine/redmine
51
67
ref : ${{ matrix.redmine_version }}
52
68
path : redmine
53
69
54
70
- name : Checkout Plugin
55
- uses : actions/checkout@v2
71
+ uses : actions/checkout@v3
56
72
with :
57
73
path : redmine/plugins/${{ env.PLUGIN_NAME }}
58
74
59
75
- name : Update package archives
60
76
run : apt-get update --yes --quiet
61
77
62
78
- name : Install package dependencies
63
- run : >
64
- apt-get install --yes --quiet
65
- postgresql-client
79
+ run : |
80
+ if [ ${{ matrix.db }} = "mysql" ]; then
81
+ apt-get install --yes --quiet default-mysql-client-core
82
+ fi
83
+ if [ ${{ matrix.db }} = "postgres" ]; then
84
+ apt-get install --yes --quiet postgresql-client
85
+ fi
86
+ # For system test
87
+ if [ ${{ matrix.system_test }} = "true" ]; then
88
+ wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
89
+ sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
90
+ apt-get -y update
91
+ apt-get install -y google-chrome-stable
92
+ fi
93
+
94
+ - name : Verify MySQL connection from host
95
+ if : matrix.db == 'mysql'
96
+ run : |
97
+ mysql --host mysql --port 3306 -uroot -ppassword -e "SHOW DATABASES"
66
98
67
99
- name : Prepare Redmine source
68
100
working-directory : redmine
69
101
run : |
70
- cat <<EOF > config/database.yml
71
- test:
72
- adapter: postgresql
73
- database: redmine
74
- host: postgres
75
- username: postgres
76
- password: postgres
77
- encoding: utf8
102
+ if [ ${{ matrix.db }} = "mysql" ]; then
103
+ cat <<EOF > config/database.yml
104
+ test:
105
+ adapter: mysql2
106
+ database: redmine
107
+ host: mysql
108
+ username: root
109
+ password: password
110
+ encoding: utf8mb4
111
+ EOF
112
+ fi
113
+ if [ ${{ matrix.db }} = "postgres" ]; then
114
+ cat <<EOF > config/database.yml
115
+ test:
116
+ adapter: postgresql
117
+ database: redmine
118
+ host: postgres
119
+ username: postgres
120
+ password: postgres
121
+ encoding: utf8
78
122
EOF
123
+ fi
124
+ if [ ${{ matrix.db }} = "sqlite" ]; then
125
+ cat <<EOF > config/database.yml
126
+ test:
127
+ adapter: sqlite3
128
+ database: db/redmine.sqlite3
129
+ EOF
130
+ fi
79
131
80
132
- name : Install Ruby dependencies
81
133
working-directory : redmine
@@ -101,12 +153,29 @@ jobs:
101
153
fi
102
154
shell : bash
103
155
104
- - name : Run tests
156
+ - name : Run plugin tests
105
157
env :
106
158
RAILS_ENV : test
159
+ # For system test in plugin
160
+ GOOGLE_CHROME_OPTS_ARGS : " headless,disable-gpu,no-sandbox,disable-dev-shm-usage"
107
161
working-directory : redmine
108
162
run : bundle exec rake redmine:plugins:test NAME=${{ env.PLUGIN_NAME }} RUBYOPT="-W0"
109
163
164
+ # - name: Run core tests
165
+ # env:
166
+ # RAILS_ENV: test
167
+ # PARALLEL_WORKERS: 1
168
+ # working-directory: redmine
169
+ # run: bundle exec rake test
170
+
171
+ # - name: Run core system tests
172
+ # if: matrix.system_test == true
173
+ # env:
174
+ # RAILS_ENV: test
175
+ # GOOGLE_CHROME_OPTS_ARGS: "headless,disable-gpu,no-sandbox,disable-dev-shm-usage"
176
+ # working-directory: redmine
177
+ # run: bundle exec rake test:system
178
+
110
179
- name : Run uninstall test
111
180
env :
112
181
RAILS_ENV : test
0 commit comments