You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sl...@apache.org on 2020/07/03 21:30:27 UTC

[maven] 01/03: [MNG-6949] Add a GitHub Actions Workflow for building and integration testing changes

This is an automated email from the ASF dual-hosted git repository.

slachiewicz pushed a commit to branch testFor363
in repository https://gitbox.apache.org/repos/asf/maven.git

commit c9d1788f76ae10f65886e1e4c3fda0a493e29c5e
Author: Martin Kanters <mk...@gmail.com>
AuthorDate: Sun Jun 28 22:12:55 2020 +0200

    [MNG-6949] Add a GitHub Actions Workflow for building and integration testing changes
---
 .github/workflows/maven.yml | 116 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 116 insertions(+)

diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
new file mode 100644
index 0000000..19f254a
--- /dev/null
+++ b/.github/workflows/maven.yml
@@ -0,0 +1,116 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: Java CI
+
+on: [push, pull_request]
+
+jobs:
+  build:
+    strategy:
+      matrix:
+        os: [ubuntu-latest, windows-latest, macOS-latest]
+        java: [8, 11, 14]
+      fail-fast: false
+
+    runs-on: ${{ matrix.os }}
+
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v2
+
+      - name: Set up cache for ~./m2/repository
+        uses: actions/cache@v1
+        with:
+          path: ~/.m2/repository
+          key: maven-${{ matrix.os }}-java${{ matrix.java }}-${{ hashFiles('**/pom.xml') }}
+          restore-keys: |
+            maven-${{ matrix.os }}-java${{ matrix.java }}-
+            maven-${{ matrix.os }}-
+
+      - name: Set up JDK
+        uses: actions/setup-java@v1
+        with:
+          java-version: ${{ matrix.java }}
+
+      - name: Build with Maven
+        run: mvn verify -e -B -V -DdistributionFileName=apache-maven
+
+      - name: Upload built Maven
+        uses: actions/upload-artifact@v2
+        if: ${{ matrix.os == 'ubuntu-latest' && matrix.java == '11' }}
+        with:
+          name: built-maven
+          path: apache-maven/target/
+
+      - name: Upload built Maven Wrapper
+        uses: actions/upload-artifact@v2
+        if: ${{ matrix.os == 'ubuntu-latest' && matrix.java == '11' }}
+        with:
+          name: built-maven-wrapper
+          path: maven-wrapper/target/maven-wrapper.jar
+
+  integration-test:
+    needs: build
+    runs-on: ubuntu-latest
+
+    steps:
+      - name: Collect environment context variables
+        shell: bash
+        run: |
+          set +e
+          repo=maven-integration-testing
+          user=${GITHUB_REPOSITORY%/*}
+          branch=${GITHUB_REF#refs/heads/}
+          target_branch=master
+          target_user=apache
+          if [ $branch != "master" ]; then
+            git ls-remote https://github.com/$user/$repo.git | grep $GITHUB_REF > /dev/null
+            if [ $? -eq 0 ]; then
+              echo "Found a branch \"$branch\" in fork \"$user/$repo\", configuring this for the integration tests to be run against."
+              target_branch=$branch
+              target_user=$user
+            else
+              echo "Could not find fork \"$user/$repo\" or a branch \"$branch\" in this fork. Falling back to \"$target_branch\" in \"$target_user/$repo\"."
+            fi
+          else
+            echo "Integration tests will run against $target_user/$repo for master builds."
+          fi
+          echo "::set-env name=REPO_BRANCH::$target_branch"
+          echo "::set-env name=REPO_USER::$target_user"
+
+      - name: Checkout maven-integration-testing
+        uses: actions/checkout@v2
+        with:
+          repository: ${{ env.REPO_USER }}/maven-integration-testing
+          path: maven-integration-testing/
+          ref: ${{ env.REPO_BRANCH }}
+
+      - name: Download built Maven
+        uses: actions/download-artifact@v2
+        with:
+          name: built-maven
+          path: built-maven/
+
+      - name: Download built Maven Wrapper
+        uses: actions/download-artifact@v2
+        with:
+          name: built-maven-wrapper
+          path: built-maven-wrapper/
+
+      - name: Running integration tests
+        run: mvn install -e -B -V -Prun-its,embedded -Dmaven.repo.local=$GITHUB_WORKSPACE/repo/ -DmavenDistro="$GITHUB_WORKSPACE/built-maven/apache-maven-bin.zip" -DwrapperDistroDir="$GITHUB_WORKSPACE/built-maven/" -DmavenWrapper="$GITHUB_WORKSPACE/built-maven-wrapper/maven-wrapper.jar" -f maven-integration-testing/pom.xml