@@ -50,7 +50,9 @@ permissions: # added using https://github.com/step-security/secure-repo
5050 contents : read
5151
5252env :
53- MAVEN_CLI_OPTS : -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dlicense.skip=true --batch-mode
53+ MAVEN_CLI_OPTS : -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false --batch-mode
54+ MAVEN_COMPILE_OPTS : -T4 -DskipTests -Dlicense.skip=true -Dmaven.assembly.skip=true
55+ MAVEN_TEST_OPTS : -Dtest.fork.count=1 -Dlicense.skip=true
5456
5557jobs :
5658 compile :
@@ -60,17 +62,15 @@ jobs:
6062 - uses : actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
6163 with :
6264 distribution : ' temurin'
63- java-version : ' 11 '
65+ java-version : ' 17 '
6466 - uses : actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
6567 with :
6668 key : ${{ hashFiles('**/pom.xml') }}-compile-${{ inputs.scala-version }}
67- path : |
68- ~/.m2/repository/
69- build/zinc-0.3.15/
69+ path : ~/.m2/repository/
7070 - name : Set Scala version
7171 run : ./build/scripts/change-scala-version.sh ${{ inputs.scala-version }}
7272 - name : Build with Maven
73- run : ./build/ mvn clean install $MAVEN_CLI_OPTS -DskipTests -T4
73+ run : mvn clean install $MAVEN_CLI_OPTS $MAVEN_COMPILE_OPTS
7474 - name : Collect artifacts
7575 run : |
7676 mv ~/.m2/repository/org/locationtech/geomesa m2-geomesa
8888 run : rm -rf ~/.m2/repository/org/locationtech/geomesa
8989 unit-tests :
9090 name : unit-tests (${{ matrix.tests.name }})
91+ runs-on : ubuntu-latest
92+ needs : compile
9193 strategy :
9294 fail-fast : false
9395 matrix :
@@ -136,19 +138,117 @@ jobs:
136138 selector : -f geomesa-utils-parent
137139 - name : others
138140 selector : -pl geomesa-filter,geomesa-index-api,geomesa-jobs,geomesa-security,geomesa-tools,geomesa-z3
139- needs : compile
140- uses : ./.github/workflows/unit-tests.yml
141- with :
142- test-name : ${{ matrix.tests.name }}
143- module-selector : ${{ matrix.tests.selector }}
144- scala-version : ${{ inputs.scala-version }}
141+ steps :
142+ - uses : actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
143+ - uses : actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
144+ with :
145+ distribution : ' temurin'
146+ java-version : ' 17'
147+ - name : Generate cache key
148+ env :
149+ MOD_SELECTOR : " ${{ matrix.tests.selector }}"
150+ run : echo "MOD_SELECTOR=$(echo $MOD_SELECTOR | sed 's/[^a-zA-Z0-9_.-]/-/g' | head -c 256)" >> $GITHUB_ENV
151+ - uses : actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
152+ with :
153+ key : ${{ hashFiles('**/pom.xml') }}-unit-tests-${{ inputs.scala-version }}-${{ env.MOD_SELECTOR }}
154+ path : ~/.m2/repository/
155+ - name : Set Scala version
156+ run : ./build/scripts/change-scala-version.sh ${{ inputs.scala-version }}
157+ - name : Download artifacts
158+ uses : actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
159+ with :
160+ name : classes-and-jars-${{ inputs.scala-version }}
161+ - name : Install artifacts
162+ run : |
163+ tar -xf classes.tgz
164+ mkdir -p ~/.m2/repository/org/locationtech/geomesa
165+ mv m2-geomesa/* ~/.m2/repository/org/locationtech/geomesa/
166+ - name : Unit tests
167+ id : test
168+ continue-on-error : true
169+ run : |
170+ set -o pipefail
171+ mvn surefire:test $MAVEN_CLI_OPTS $MAVEN_TEST_OPTS ${{ matrix.tests.selector }} | tee -a test.log
172+ - name : Unit tests (retry)
173+ id : test-retry
174+ if : steps.test.outcome=='failure'
175+ continue-on-error : true
176+ run : |
177+ set -o pipefail
178+ RESUME_FROM="$({ grep --text 'mvn <args> -rf ' test.log || test $? = 1; } | tail -n1 | sed 's/.*-rf/-rf/')"
179+ mvn surefire:test $MAVEN_CLI_OPTS $MAVEN_TEST_OPTS $RESUME_FROM ${{ matrix.tests.selector }} | tee -a test.log
180+ - name : Unit tests (retry)
181+ id : test-retry-retry
182+ if : steps.test-retry.outcome=='failure'
183+ run : |
184+ set -o pipefail
185+ RESUME_FROM="$({ grep --text 'mvn <args> -rf ' test.log || test $? = 1; } | tail -n1 | sed 's/.*-rf/-rf/')"
186+ mvn surefire:test $MAVEN_CLI_OPTS $MAVEN_TEST_OPTS $RESUME_FROM ${{ matrix.tests.selector }} | tee -a test.log
187+ - name : Remove geomesa artifacts
188+ if : success() || failure()
189+ run : rm -rf ~/.m2/repository/org/locationtech/geomesa
145190 integration-tests :
191+ runs-on : ubuntu-latest
146192 needs : compile
147- uses : ./.github/workflows/integration-tests.yml
148- with :
149- scala-version : ${{ inputs.scala-version }}
193+ steps :
194+ - uses : actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
195+ - uses : actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
196+ with :
197+ distribution : ' temurin'
198+ java-version : ' 17'
199+ - uses : actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
200+ with :
201+ key : ${{ hashFiles('**/pom.xml') }}-it-${{ inputs.scala-version }}
202+ path : ~/.m2/repository/
203+ - name : Set Scala version
204+ run : ./build/scripts/change-scala-version.sh ${{ inputs.scala-version }}
205+ - name : Download artifacts
206+ uses : actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
207+ with :
208+ name : classes-and-jars-${{ inputs.scala-version }}
209+ - name : Install artifacts
210+ run : |
211+ tar -xf classes.tgz
212+ mkdir -p ~/.m2/repository/org/locationtech/geomesa
213+ mv m2-geomesa/* ~/.m2/repository/org/locationtech/geomesa/
214+ - name : Integration Tests
215+ run : mvn failsafe:integration-test failsafe:verify $MAVEN_CLI_OPTS $MAVEN_TEST_OPTS
216+ - name : Remove geomesa artifacts
217+ if : success() || failure()
218+ run : rm -rf ~/.m2/repository/org/locationtech/geomesa
219+ assembly :
220+ runs-on : ubuntu-latest
221+ needs : compile
222+ steps :
223+ - uses : actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
224+ - uses : actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
225+ with :
226+ distribution : ' temurin'
227+ java-version : ' 17'
228+ - uses : actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
229+ with :
230+ key : ${{ hashFiles('**/pom.xml') }}-assembly-${{ inputs.scala-version }}
231+ path : ~/.m2/repository/
232+ - name : Set Scala version
233+ run : ./build/scripts/change-scala-version.sh ${{ inputs.scala-version }}
234+ - name : Download artifacts
235+ uses : actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
236+ with :
237+ name : classes-and-jars-${{ inputs.scala-version }}
238+ - name : Install artifacts
239+ run : |
240+ tar -xf classes.tgz
241+ mkdir -p ~/.m2/repository/org/locationtech/geomesa
242+ mv m2-geomesa/* ~/.m2/repository/org/locationtech/geomesa/
243+ - name : Build assemblies
244+ run : mvn "assembly:single@make-assembly" -Dassembly.ignoreMissingDescriptor=true $MAVEN_CLI_OPTS
245+ - name : Remove geomesa artifacts
246+ if : success() || failure()
247+ run : rm -rf ~/.m2/repository/org/locationtech/geomesa
150248 javadocs :
151249 name : javadocs (${{ matrix.docs.name }})
250+ runs-on : ubuntu-latest
251+ needs : compile
152252 strategy :
153253 fail-fast : false
154254 matrix :
@@ -173,12 +273,34 @@ jobs:
173273 !geomesa-features/geomesa-feature-exporters,!geomesa-redis/geomesa-redis-datastore,\
174274 !geomesa-gt/geomesa-gt-partitioning,!geomesa-hbase/geomesa-hbase-datastore,\
175275 !geomesa-cassandra/geomesa-cassandra-datastore'"
176- needs : compile
177- uses : ./.github/workflows/javadocs.yml
178- with :
179- build-id : -${{ matrix.docs.name }}
180- scala-version : ${{ inputs.scala-version }}
181- module-selector : ${{ matrix.docs.selector }}
276+ steps :
277+ - uses : actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
278+ - uses : actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
279+ with :
280+ distribution : ' temurin'
281+ java-version : ' 17'
282+ - uses : actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
283+ with :
284+ key : ${{ hashFiles('**/pom.xml') }}-javadocs-${{ inputs.scala-version }}
285+ path : ~/.m2/repository/
286+ - name : Set Scala version
287+ run : ./build/scripts/change-scala-version.sh ${{ inputs.scala-version }}
288+ - name : Download artifacts
289+ uses : actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
290+ with :
291+ name : classes-and-jars-${{ inputs.scala-version }}
292+ - name : Install artifacts
293+ run : |
294+ tar -xf classes.tgz
295+ mkdir -p ~/.m2/repository/org/locationtech/geomesa
296+ mv m2-geomesa/* ~/.m2/repository/org/locationtech/geomesa/
297+ - name : Build scaladocs
298+ run : mvn generate-sources scala:doc-jar ${{ matrix.docs.selector }} $MAVEN_CLI_OPTS
299+ - name : Build javadocs
300+ run : mvn generate-sources javadoc:jar $MAVEN_CLI_OPTS -pl :geomesa-arrow-jts
301+ - name : Remove geomesa artifacts
302+ if : success() || failure()
303+ run : rm -rf ~/.m2/repository/org/locationtech/geomesa
182304 dash :
183305 needs : compile
184306 uses : ./.github/workflows/dash.yml
0 commit comments