Skip to content

Commit 99d8603

Browse files
Merge pull request #345 from embulk/embulk/add-mysql8-and-postgrsql13
Adding PostgreSQL 13 and MySQL 8.3 to GitHub Actions.
2 parents e013f37 + 2172ffe commit 99d8603

File tree

1 file changed

+185
-83
lines changed

1 file changed

+185
-83
lines changed

.github/workflows/check.yml

Lines changed: 185 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: Check
22
on: [ pull_request, push ]
33
jobs:
4-
mysql:
4+
mysql5_7:
55
runs-on: ubuntu-latest
66
# push: always run.
77
# pull_request: run only when the PR is submitted from a forked repository, not within this repository.
@@ -13,34 +13,88 @@ jobs:
1313
image: mysql:5.7
1414
options: --health-cmd "mysqladmin ping -h localhost" --health-interval 20s --health-timeout 10s --health-retries 10
1515
ports:
16-
- "3306:3306"
16+
- "3306:3306"
1717
env:
1818
MYSQL_ROOT_PASSWORD: root
1919
MYSQL_USER: ci
2020
MYSQL_PASSWORD: password
2121
steps:
22-
- uses: actions/checkout@v3
23-
- name: Set up JDK 8
24-
uses: actions/setup-java@v3
25-
with:
26-
java-version: 8
27-
distribution: 'temurin'
28-
cache: "gradle"
29-
- name: Connect
30-
run: mysql -h 127.0.0.1 --port 3306 -uroot -proot -e "show databases;"
31-
- name: Create database
32-
run: mysql -h 127.0.0.1 --port 3306 -uroot -proot -e "create database ci_test;"
33-
- name: Build with testing
34-
run: ./gradlew --stacktrace :embulk-output-mysql:check
22+
- uses: actions/checkout@v4
23+
- name: Set up JDK 8
24+
uses: actions/setup-java@v4
25+
with:
26+
java-version: 8
27+
distribution: "zulu"
28+
cache: "gradle"
29+
- name: Connect
30+
run: mysql -h 127.0.0.1 --port 3306 -uroot -proot -e "show databases;"
31+
- name: Create database
32+
run: mysql -h 127.0.0.1 --port 3306 -uroot -proot -e "create database ci_test;"
33+
- name: Build with testing
34+
run: ./gradlew --stacktrace :embulk-output-mysql:check
35+
env:
36+
_JAVA_OPTIONS: "-Xmx2048m -Xms512m"
37+
EMBULK_OUTPUT_MYSQL_TEST_CONFIG: "${{ github.workspace }}/ci/mysql.yml"
38+
- uses: actions/upload-artifact@v4
39+
if: always()
40+
with:
41+
name: mysql5_7
42+
path: embulk-output-mysql/build/reports/tests/test
43+
mysql8_3:
44+
runs-on: ubuntu-latest
45+
# push: always run.
46+
# pull_request: run only when the PR is submitted from a forked repository, not within this repository.
47+
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
48+
strategy:
49+
fail-fast: false
50+
services:
51+
mysql:
52+
# Testing with MySQL 8.3 here, neither with 8.4 nor 9.0, because
53+
# MySQL 8.4 has disabled mysql_native_password by default.
54+
# Connector/J 5.x cannot connect to MySQL 8.4 due to this.
55+
# TODO: Start testing with MySQL 8.4 and/or 9.0 with Connector/J 8.x.
56+
image: mysql:8.3
57+
options: --health-cmd "mysqladmin ping -h localhost" --health-interval 20s --health-timeout 10s --health-retries 10
58+
ports:
59+
- "3306:3306"
3560
env:
36-
_JAVA_OPTIONS: "-Xmx2048m -Xms512m"
37-
EMBULK_OUTPUT_MYSQL_TEST_CONFIG: "${{ github.workspace }}/ci/mysql.yml"
38-
- uses: actions/upload-artifact@v3
39-
if: always()
40-
with:
41-
name: mysql
42-
path: embulk-output-mysql/build/reports/tests/test
43-
postgresql:
61+
MYSQL_ROOT_PASSWORD: root
62+
MYSQL_USER: ci
63+
MYSQL_PASSWORD: password
64+
steps:
65+
- uses: actions/checkout@v4
66+
- name: Set up JDK 8
67+
uses: actions/setup-java@v4
68+
with:
69+
java-version: 8
70+
distribution: "zulu"
71+
cache: "gradle"
72+
- name: Connect
73+
run: mysql -h 127.0.0.1 --port 3306 -uroot -proot -e "show databases;"
74+
- name: show version
75+
run: mysql -h 127.0.0.1 --port 3306 -uroot -proot -e "select version();"
76+
- name: Create database
77+
run: mysql -h 127.0.0.1 --port 3306 -uroot -proot -e "create database ci_test;"
78+
# Workaround to change MySQL's password mechanism to `mysql_native_password`
79+
# from `caching_sha2_password` that is the default in MySQL 8 because
80+
# Connector/J 5.x does not support `caching_sha2_password`.
81+
# See: https://dev.mysql.com/doc/refman/8.4/en/account-names.html
82+
# TODO: Start testing with `caching_sha2_password` with Connector/J 8.x.
83+
- name: Change password (root@localhost)
84+
run: mysql -h 127.0.0.1 --port 3306 -uroot -proot -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';"
85+
- name: Change password (root@%)
86+
run: mysql -h 127.0.0.1 --port 3306 -uroot -proot -e "ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';"
87+
- name: Build with testing
88+
run: ./gradlew --stacktrace :embulk-output-mysql:check
89+
env:
90+
_JAVA_OPTIONS: "-Xmx2048m -Xms512m"
91+
EMBULK_OUTPUT_MYSQL_TEST_CONFIG: "${{ github.workspace }}/ci/mysql.yml"
92+
- uses: actions/upload-artifact@v4
93+
if: always()
94+
with:
95+
name: mysql8_3
96+
path: embulk-output-mysql/build/reports/tests/test
97+
postgresql9_4:
4498
runs-on: ubuntu-latest
4599
# push: always run.
46100
# pull_request: run only when the PR is submitted from a forked repository, not within this repository.
@@ -56,31 +110,79 @@ jobs:
56110
env:
57111
POSTGRES_PASSWORD: postgres
58112
steps:
59-
- uses: actions/checkout@v3
60-
- name: Set up JDK 8
61-
uses: actions/setup-java@v3
62-
with:
63-
java-version: 8
64-
distribution: 'temurin'
65-
cache: "gradle"
66-
- name: Connect
67-
run: psql -h 127.0.0.1 -p 5432 -U postgres -d postgres -c "\l"
68-
env:
69-
PGPASSWORD: postgres
70-
- name: Create database
71-
run: psql -h 127.0.0.1 -p 5432 -U postgres -d postgres -c "create database ci_test;"
72-
env:
73-
PGPASSWORD: postgres
74-
- name: Build with testing
75-
run: ./gradlew --stacktrace :embulk-output-postgresql:check
113+
- uses: actions/checkout@v4
114+
- name: Set up JDK 8
115+
uses: actions/setup-java@v4
116+
with:
117+
java-version: 8
118+
distribution: "zulu"
119+
cache: "gradle"
120+
- name: Connect
121+
run: psql -h 127.0.0.1 -p 5432 -U postgres -d postgres -c "\l"
122+
env:
123+
PGPASSWORD: postgres
124+
- name: Create database
125+
run: psql -h 127.0.0.1 -p 5432 -U postgres -d postgres -c "create database ci_test;"
126+
env:
127+
PGPASSWORD: postgres
128+
- name: Build with testing
129+
run: ./gradlew --stacktrace :embulk-output-postgresql:check
130+
env:
131+
_JAVA_OPTIONS: "-Xmx2048m -Xms512m"
132+
EMBULK_OUTPUT_POSTGRESQL_TEST_CONFIG: "${{ github.workspace }}/ci/postgresql.yml"
133+
- uses: actions/upload-artifact@v4
134+
if: always()
135+
with:
136+
name: postgresql9_4
137+
path: embulk-output-postgresql/build/reports/tests/test
138+
# Testing with PostgreSQL 13 here, not with PostgreSQL 14 or later, because
139+
# it raises an exception: "The authentication type 10 is not supported."
140+
# TODO: Start testing with PostgreSQL 14 or later.
141+
postgresql13:
142+
runs-on: ubuntu-latest
143+
# push: always run.
144+
# pull_request: run only when the PR is submitted from a forked repository, not within this repository.
145+
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
146+
strategy:
147+
fail-fast: false
148+
services:
149+
postgres:
150+
image: postgres:13
151+
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
152+
ports:
153+
- "5432:5432"
76154
env:
77-
_JAVA_OPTIONS: "-Xmx2048m -Xms512m"
78-
EMBULK_OUTPUT_POSTGRESQL_TEST_CONFIG: "${{ github.workspace }}/ci/postgresql.yml"
79-
- uses: actions/upload-artifact@v3
80-
if: always()
81-
with:
82-
name: postgresql
83-
path: embulk-output-postgresql/build/reports/tests/test
155+
POSTGRES_PASSWORD: postgres
156+
steps:
157+
- uses: actions/checkout@v4
158+
- name: Set up JDK 8
159+
uses: actions/setup-java@v4
160+
with:
161+
java-version: 8
162+
distribution: "zulu"
163+
cache: "gradle"
164+
- name: Connect
165+
run: psql -h 127.0.0.1 -p 5432 -U postgres -d postgres -c "\l"
166+
env:
167+
PGPASSWORD: postgres
168+
- name: Show version
169+
run: psql -h 127.0.0.1 -p 5432 -U postgres -d postgres -c "select * from version();"
170+
env:
171+
PGPASSWORD: postgres
172+
- name: Create database
173+
run: psql -h 127.0.0.1 -p 5432 -U postgres -d postgres -c "create database ci_test;"
174+
env:
175+
PGPASSWORD: postgres
176+
- name: Build with testing
177+
run: ./gradlew --stacktrace :embulk-output-postgresql:check
178+
env:
179+
_JAVA_OPTIONS: "-Xmx2048m -Xms512m"
180+
EMBULK_OUTPUT_POSTGRESQL_TEST_CONFIG: "${{ github.workspace }}/ci/postgresql.yml"
181+
- uses: actions/upload-artifact@v4
182+
if: always()
183+
with:
184+
name: postgresql13
185+
path: embulk-output-postgresql/build/reports/tests/test
84186
redshift:
85187
runs-on: ubuntu-latest
86188
# push: always run.
@@ -98,46 +200,46 @@ jobs:
98200
env:
99201
POSTGRES_PASSWORD: postgres
100202
steps:
101-
- uses: actions/checkout@v3
102-
- name: Set up JDK 8
103-
uses: actions/setup-java@v3
104-
with:
105-
java-version: 8
106-
distribution: 'temurin'
107-
cache: "gradle"
108-
- name: Connect
109-
run: psql -h 127.0.0.1 -p 5439 -U postgres -d postgres -c "\l"
110-
env:
111-
PGPASSWORD: postgres
112-
- name: Create database
113-
run: psql -h 127.0.0.1 -p 5439 -U postgres -d postgres -c "create database ci_test;"
114-
env:
115-
PGPASSWORD: postgres
116-
- name: Build with testing
117-
run: ./gradlew --stacktrace :embulk-output-redshift:check
118-
env:
119-
_JAVA_OPTIONS: "-Xmx2048m -Xms512m"
120-
EMBULK_OUTPUT_REDSHIFT_TEST_CONFIG: "${{ github.workspace }}/ci/redshift.yml"
121-
- uses: actions/upload-artifact@v3
122-
if: always()
123-
with:
124-
name: redshift
125-
path: embulk-output-redshift/build/reports/tests/test
126-
if-no-files-found: ignore
127-
sqlserver:
203+
- uses: actions/checkout@v4
204+
- name: Set up JDK 8
205+
uses: actions/setup-java@v4
206+
with:
207+
java-version: 8
208+
distribution: "zulu"
209+
cache: "gradle"
210+
- name: Connect
211+
run: psql -h 127.0.0.1 -p 5439 -U postgres -d postgres -c "\l"
212+
env:
213+
PGPASSWORD: postgres
214+
- name: Create database
215+
run: psql -h 127.0.0.1 -p 5439 -U postgres -d postgres -c "create database ci_test;"
216+
env:
217+
PGPASSWORD: postgres
218+
- name: Build with testing
219+
run: ./gradlew --stacktrace :embulk-output-redshift:check
220+
env:
221+
_JAVA_OPTIONS: "-Xmx2048m -Xms512m"
222+
EMBULK_OUTPUT_REDSHIFT_TEST_CONFIG: "${{ github.workspace }}/ci/redshift.yml"
223+
- uses: actions/upload-artifact@v4
224+
if: always()
225+
with:
226+
name: redshift
227+
path: embulk-output-redshift/build/reports/tests/test
228+
if-no-files-found: ignore
229+
sqlserver: # TODO: Use https://hub.docker.com/_/microsoft-mssql-server
128230
runs-on: ubuntu-latest
129231
# push: always run.
130232
# pull_request: run only when the PR is submitted from a forked repository, not within this repository.
131233
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
132234
strategy:
133235
fail-fast: false
134236
steps:
135-
- uses: actions/checkout@v3
136-
- name: Set up JDK 8
137-
uses: actions/setup-java@v3
138-
with:
139-
java-version: 8
140-
distribution: 'temurin'
141-
cache: "gradle"
142-
- name: Build-only
143-
run: ./gradlew --stacktrace :embulk-output-sqlserver:compileJava :embulk-output-sqlserver:compileTestJava
237+
- uses: actions/checkout@v4
238+
- name: Set up JDK 8
239+
uses: actions/setup-java@v4
240+
with:
241+
java-version: 8
242+
distribution: "zulu"
243+
cache: "gradle"
244+
- name: Build-only
245+
run: ./gradlew --stacktrace :embulk-output-sqlserver:compileJava :embulk-output-sqlserver:compileTestJava

0 commit comments

Comments
 (0)