55 branches : [ master ]
66 pull_request :
77 branches : [ master ]
8+ workflow_dispatch :
89
910jobs :
1011 build :
@@ -13,48 +14,176 @@ jobs:
1314
1415 steps :
1516 - uses : actions/checkout@v2
16- - name : Set up JDK 1.8
17+
18+ - name : Set up JDK 8
1719 uses : actions/setup-java@v1
1820 with :
19- java-version : 1.8
21+ java-version : 8
22+
2023 - name : Grant execute permission for gradlew
2124 run : chmod +x gradlew
25+
2226 - name : Cache Gradle packages
2327 uses : actions/cache@v2
2428 with :
2529 path : ~/.gradle/caches
2630 key : ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle.kts') }}-${{ hashFiles('**/*.gradle') }}
2731 restore-keys : ${{ runner.os }}-gradle
32+
2833 - name : Build with Gradle
2934 run : ./gradlew assemble check
35+
3036 - name : Upload reports
3137 if : always()
3238 uses : actions/upload-artifact@v2
3339 with :
34- name : reports
40+ name : reports (build)
3541 path : |
3642 doma-core/build/reports
3743 doma-processor/build/reports
3844 test-criteria/build/reports
39- - name : Publish packages
40- if : github.event_name == 'push'
41- run : ./gradlew publish
42- env :
43- ORG_GRADLE_PROJECT_signingKey : ${{ secrets.SIGNING_KEY }}
44- ORG_GRADLE_PROJECT_signingPassword : ${{ secrets.SIGNING_PASSWORD }}
45- ORG_GRADLE_PROJECT_sonatypeUsername : ${{ secrets.OSSRH_USERNAME }}
46- ORG_GRADLE_PROJECT_sonatypePassword : ${{ secrets.OSSRH_PASSWORD }}
47- - name : Dispatch integaration test
48- if : github.event_name == 'push'
49- uses : benc-uk/workflow-dispatch@v1
50- with :
51- workflow : Java CI with Gradle
52- repo : domaframework/doma-it
53- ref : master
54- token : ${{ secrets.WORKFLOW_DISPATCH_TOKEN }}
55- inputs : |
56- { "ref": "${{ github.sha }}",
57- "pull_request_number": "${{ (github.event.pull_request && github.event.pull_request.number) || null }}",
58- "pull_request_sha": "${{ (github.event.pull_request && github.event.pull_request.head.sha) || null }}",
59- "pull_request_title": "",
60- "message": "" }
45+
46+ integration-test :
47+ if : contains(toJSON(github.event.commits.*.message), '[skip ci]') == false
48+ name : JDK ${{ matrix.java }} and ${{ matrix.db }}
49+ runs-on : ubuntu-latest
50+
51+ strategy :
52+ matrix :
53+ java : [ 8, 11, 14 ]
54+ db : [ h2, postgres, mysql ]
55+
56+ services :
57+ postgres :
58+ image : postgres:10.5
59+ env :
60+ POSTGRES_USER : postgres
61+ POSTGRES_PASSWORD : postgres
62+ POSTGRES_DB : doma_it
63+ ports :
64+ - 127.0.0.1:5432:5432
65+ mysql :
66+ image : mysql:5.7
67+ env :
68+ MYSQL_ROOT_PASSWORD : root
69+ MYSQL_DATABASE : doma_it
70+ ports :
71+ - 3306
72+
73+ steps :
74+ - name : Start the MySQL service
75+ if : matrix.db == 'mysql'
76+ run : |
77+ sudo /etc/init.d/mysql start
78+ mysql -uroot -h127.0.0.1 -proot -e 'create database doma_it;'
79+
80+ - name : Checkout (doma)
81+ uses : actions/checkout@v2
82+ with :
83+ path : doma
84+
85+ - name : Set up JDK (doma)
86+ uses : actions/setup-java@v1
87+ with :
88+ java-version : 8
89+
90+ - name : Grant execute permission for gradlew (doma)
91+ working-directory : ./doma
92+ run : chmod +x gradlew
93+
94+ - name : Build with Gradle (doma)
95+ working-directory : ./doma
96+ run : ./gradlew build -x check
97+
98+ - name : Checkout (doma-it)
99+ uses : actions/checkout@v2
100+ with :
101+ repository : domaframework/doma-it
102+ path : doma-it
103+
104+ - name : Set up JDK (doma-it)
105+ uses : actions/setup-java@v1
106+ with :
107+ java-version : ${{ matrix.java }}
108+
109+ - name : Grant execute permission for gradlew (doma-it)
110+ working-directory : ./doma-it
111+ run : chmod +x gradlew
112+
113+ - name : Build with Gradle (doma-it)
114+ working-directory : ./doma-it
115+ run : ./gradlew assemble
116+
117+ - name : Test with h2 (doma-it)
118+ if : matrix.db == 'h2'
119+ working-directory : ./doma-it
120+ run : ./gradlew check -s
121+ env :
122+ ORG_GRADLE_PROJECT_jdbcUrl : ' '
123+ ORG_GRADLE_PROJECT_jdbcUser : ' '
124+ ORG_GRADLE_PROJECT_jdbcPassword : ' '
125+
126+ - name : Test with postgres (doma-it)
127+ if : matrix.db == 'postgres'
128+ working-directory : ./doma-it
129+ run : ./gradlew check -s
130+ env :
131+ ORG_GRADLE_PROJECT_jdbcUrl : jdbc:postgresql://127.0.0.1/doma_it
132+ ORG_GRADLE_PROJECT_jdbcUser : postgres
133+ ORG_GRADLE_PROJECT_jdbcPassword : postgres
134+
135+ - name : Test with mysql (doma-it)
136+ if : matrix.db == 'mysql'
137+ working-directory : ./doma-it
138+ run : ./gradlew check -s
139+ env :
140+ ORG_GRADLE_PROJECT_jdbcUrl : jdbc:mysql://127.0.0.1/doma_it
141+ ORG_GRADLE_PROJECT_jdbcUser : root
142+ ORG_GRADLE_PROJECT_jdbcPassword : root
143+
144+ - name : Upload reports (doma-it)
145+ if : always()
146+ uses : actions/upload-artifact@v1
147+ with :
148+ name : jdk${{ matrix.java }}-${{ matrix.db }}
149+ path : ./doma-it/build/reports
150+
151+ publish :
152+ if : github.event_name == 'push' && contains(toJSON(github.event.commits.*.message), '[skip ci]') == false
153+ needs : [build, integration-test]
154+ runs-on : ubuntu-latest
155+
156+ steps :
157+ - uses : actions/checkout@v2
158+
159+ - name : Set up JDK 8
160+ uses : actions/setup-java@v1
161+ with :
162+ java-version : 8
163+
164+ - name : Grant execute permission for gradlew
165+ run : chmod +x gradlew
166+
167+ - name : Cache Gradle packages
168+ uses : actions/cache@v2
169+ with :
170+ path : ~/.gradle/caches
171+ key : ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle.kts') }}-${{ hashFiles('**/*.gradle') }}
172+ restore-keys : ${{ runner.os }}-gradle
173+
174+ - name : Publish packages
175+ run : ./gradlew build publish
176+ env :
177+ ORG_GRADLE_PROJECT_signingKey : ${{ secrets.SIGNING_KEY }}
178+ ORG_GRADLE_PROJECT_signingPassword : ${{ secrets.SIGNING_PASSWORD }}
179+ ORG_GRADLE_PROJECT_sonatypeUsername : ${{ secrets.OSSRH_USERNAME }}
180+ ORG_GRADLE_PROJECT_sonatypePassword : ${{ secrets.OSSRH_PASSWORD }}
181+
182+ - name : Upload reports
183+ if : always()
184+ uses : actions/upload-artifact@v2
185+ with :
186+ name : reports (publish)
187+ path : |
188+ doma-core/build/reports
189+ doma-processor/build/reports
0 commit comments