| # 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: Submarine |
| |
| # Trigger the workflow on push or pull request |
| on: [push, pull_request] |
| |
| env: |
| VERSION: "0.8.0-SNAPSHOT" |
| BUILD_FLAG: "clean install -ntp -DskipTests -am" |
| TEST_FLAG: "test -DskipRat -ntp" |
| jobs: |
| generate-k8s-versions-array: |
| runs-on: ubuntu-latest |
| outputs: |
| matrix: ${{ steps.set-matrix.outputs.matrix }} |
| steps: |
| - id: set-matrix |
| run: | |
| echo "::set-output name=matrix::[\"v1.18.20\", \"v1.19.16\", \"v1.20.15\", \"v1.21.10\"]" |
| submarine-operator-verify-codegen: |
| runs-on: ubuntu-latest |
| timeout-minutes: 10 |
| env: |
| working-directory: "github.com/apache/submarine" |
| steps: |
| - uses: actions/checkout@v2 |
| with: |
| fetch-depth: 0 |
| path: ${{ env.working-directory }} |
| - name: Setup Golang 1.17.2 |
| uses: actions/setup-go@v2 |
| with: |
| go-version: "1.17.2" |
| - name: Check golang version |
| working-directory: ${{ env.working-directory }}/submarine-cloud-v2 |
| run: go version |
| - name: Install Dependencies |
| working-directory: ${{ env.working-directory }}/submarine-cloud-v2 |
| run: go mod vendor |
| - name: Verify Codegen |
| working-directory: ${{ env.working-directory }}/submarine-cloud-v2 |
| run: ./hack/verify-codegen.sh |
| submarine-operator-e2e-test: |
| needs: generate-k8s-versions-array |
| runs-on: ubuntu-latest |
| timeout-minutes: 60 |
| strategy: |
| matrix: |
| k8s-version: ${{fromJSON(needs.generate-k8s-versions-array.outputs.matrix)}} |
| fail-fast: false |
| steps: |
| - uses: actions/checkout@v2 |
| with: |
| fetch-depth: 50 |
| - name: Set up JDK 1.8 |
| uses: actions/setup-java@v1 |
| with: |
| java-version: "1.8" |
| - name: Set up Maven 3.6.3 |
| uses: stCarolas/setup-maven@v4 |
| with: |
| maven-version: 3.6.3 |
| - name: Setup Golang 1.17.2 |
| uses: actions/setup-go@v2 |
| with: |
| go-version: "1.17.2" |
| - uses: actions/cache@v2 |
| with: |
| path: ~/.m2/repository |
| key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} |
| restore-keys: | |
| ${{ runner.os }}-maven- |
| - name: Check version |
| run: | |
| mvn --version |
| java -version |
| go version |
| helm version |
| kind version |
| - name: Create kind cluster |
| run: kind create cluster --config ./.github/config/kind-config-kind.yaml --wait 3m --image kindest/node:${{ matrix.k8s-version }} |
| - name: Download Istio 1.13.0 |
| run: | |
| curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.13.0 sh - |
| cd istio-1.13.0 |
| echo "$PWD/bin" >> $GITHUB_PATH |
| - name: Install Istio |
| run: istioctl install -y --set values.global.proxy.resources.requests.cpu=10m |
| - name: Show K8s cluster information |
| run: | |
| kubectl cluster-info |
| kubectl version |
| kubectl get pods -n kube-system |
| echo "current-context:" $(kubectl config current-context) |
| echo "environment-kubeconfig:" ${KUBECONFIG} |
| - name: Build Image locally |
| run: .github/scripts/build-image-locally.sh |
| - name: Install Golang Dependencies |
| working-directory: submarine-cloud-v2 |
| run: go mod vendor |
| - name: Install Helm Dependencies |
| run: | |
| sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/ |
| sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld |
| helm install --wait --set dev=true --set storageClass.provisioner=rancher.io/local-path --set storageClass.volumeBindingMode=WaitForFirstConsumer submarine ./helm-charts/submarine |
| - name: Run end-to-end test |
| working-directory: submarine-cloud-v2 |
| run: go test -v -timeout 30m ./test/e2e |
| - name: Failure status |
| run: | |
| kubectl describe nodes |
| kubectl get all -A |
| kubectl get events -A --sort-by='{.lastTimestamp}' |
| kubectl describe submarine -A |
| if: ${{ failure() }} |
| - name: Delete temporary build artifacts before caching |
| run: | |
| #Never cache local artifacts |
| rm -rf ~/.m2/repository/org/apache/submarine |
| if: always() |
| submarine-operator-v3-e2e-test: |
| needs: generate-k8s-versions-array |
| runs-on: ubuntu-latest |
| timeout-minutes: 60 |
| strategy: |
| matrix: |
| k8s-version: ${{fromJSON(needs.generate-k8s-versions-array.outputs.matrix)}} |
| fail-fast: false |
| steps: |
| - uses: actions/checkout@v2 |
| with: |
| fetch-depth: 50 |
| - name: Set up JDK 1.8 |
| uses: actions/setup-java@v1 |
| with: |
| java-version: "1.8" |
| - name: Set up Maven 3.6.3 |
| uses: stCarolas/setup-maven@v4 |
| with: |
| maven-version: 3.6.3 |
| - name: Setup Golang 1.17.2 |
| uses: actions/setup-go@v2 |
| with: |
| go-version: "1.17.2" |
| - uses: actions/cache@v2 |
| with: |
| path: ~/.m2/repository |
| key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} |
| restore-keys: | |
| ${{ runner.os }}-maven- |
| - name: Check version |
| run: | |
| mvn --version |
| java -version |
| go version |
| helm version |
| kind version |
| - name: Create kind cluster |
| run: kind create cluster --config ./.github/config/kind-config-kind.yaml --wait 3m --image kindest/node:${{ matrix.k8s-version }} |
| - name: Download Istio 1.13.0 |
| run: | |
| curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.13.0 sh - |
| cd istio-1.13.0 |
| echo "$PWD/bin" >> $GITHUB_PATH |
| - name: Install Istio |
| run: istioctl install -y --set values.global.proxy.resources.requests.cpu=10m |
| - name: Show K8s cluster information |
| run: | |
| kubectl cluster-info |
| kubectl version |
| kubectl get pods -n kube-system |
| echo "current-context:" $(kubectl config current-context) |
| echo "environment-kubeconfig:" ${KUBECONFIG} |
| - name: Build Image locally |
| run: .github/scripts/build-image-locally-v3.sh |
| - name: Install Golang Dependencies |
| working-directory: submarine-cloud-v3 |
| run: go mod vendor |
| - name: Install Submarine operator |
| working-directory: submarine-cloud-v3 |
| # run: make deploy |
| # GA env variable VERSION overrides the variable in makefile, |
| # which results in the wrong image name. |
| # Running commands manually instead. |
| run: | |
| cd config/manager |
| kustomize edit set image controller=apache/submarine:operator-0.8.0-SNAPSHOT |
| kustomize build ../default | kubectl apply -f - |
| - name: Install Helm Dependencies |
| run: | |
| sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/ |
| sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld |
| helm install --wait --set dev=true --set storageClass.provisioner=rancher.io/local-path --set storageClass.volumeBindingMode=WaitForFirstConsumer submarine ./helm-charts/submarine -n submarine-cloud-v3-system |
| - name: Run end-to-end test |
| working-directory: submarine-cloud-v3 |
| run: go test ./controllers/ -v -ginkgo.v |
| - name: Failure status |
| run: | |
| kubectl describe nodes |
| kubectl get all -A |
| kubectl get events -A --sort-by='{.lastTimestamp}' |
| kubectl logs -l control-plane=controller-manager -n submarine-cloud-v3-system |
| kubectl logs -l app=notebook-controller -n submarine-cloud-v3-system |
| kubectl logs -l control-plane=kubeflow-training-operator -n submarine-cloud-v3-system |
| kubectl describe submarine -A |
| if: ${{ failure() }} |
| - name: Delete temporary build artifacts before caching |
| run: | |
| #Never cache local artifacts |
| rm -rf ~/.m2/repository/org/apache/submarine |
| if: always() |
| submarine-e2e: |
| runs-on: ubuntu-latest |
| timeout-minutes: 60 |
| services: |
| mysql: |
| image: mysql:5.7 |
| env: |
| MYSQL_ROOT_PASSWORD: "password" |
| ports: |
| - 3306:3306 |
| # wait until mysql is health |
| options: --health-cmd "mysqladmin ping" --health-interval 10s --health-timeout 10s --health-retries 10 |
| steps: |
| - uses: actions/checkout@v2 |
| with: |
| fetch-depth: 50 |
| - name: Cache jacoco.exec |
| uses: actions/cache@v2 |
| with: |
| path: ./submarine-test/test-e2e/target/jacoco.exec |
| key: ${{ runner.os }}-docker-${{ github.sha }} |
| - name: Set up JDK 1.8 |
| uses: actions/setup-java@v1 |
| with: |
| java-version: "1.8" |
| - name: Set up Maven 3.6.3 |
| uses: stCarolas/setup-maven@v4 |
| with: |
| maven-version: 3.6.3 |
| - name: Check version |
| run: | |
| mvn --version |
| java -version |
| chromedriver --version |
| python3 -V |
| - name: Prepare default mysql-data |
| run: | |
| pip install mysql-connector-python |
| python3 ./dev-support/database/init-database.py |
| - name: Build with Maven |
| run: | |
| echo ">>> mvn ${BUILD_FLAG} -B" |
| mvn ${BUILD_FLAG} -B |
| - name: Test |
| env: |
| TEST_FLAG: "verify -DskipRat -ntp" |
| TEST_MODULES: "-pl :submarine-test-e2e" |
| run: | |
| echo ">>> mvn ${TEST_FLAG} ${TEST_MODULES} -B" |
| mvn ${TEST_FLAG} ${TEST_MODULES} -B |
| submarine-k8s: |
| needs: generate-k8s-versions-array |
| runs-on: ubuntu-latest |
| timeout-minutes: 60 |
| strategy: |
| matrix: |
| k8s-version: ${{fromJson(needs.generate-k8s-versions-array.outputs.matrix)}} |
| fail-fast: false |
| steps: |
| - uses: actions/checkout@v2 |
| with: |
| fetch-depth: 50 |
| - name: Cache jacoco.exec |
| uses: actions/cache@v2 |
| with: |
| path: ./submarine-test/test-k8s/target/jacoco.exec |
| key: ${{ runner.os }}-docker-${{ github.sha }} |
| - name: Set up JDK 1.8 |
| uses: actions/setup-java@v1 |
| with: |
| java-version: "1.8" |
| - name: Set up Maven 3.6.3 |
| uses: stCarolas/setup-maven@v4 |
| with: |
| maven-version: 3.6.3 |
| - uses: actions/cache@v2 |
| with: |
| path: ~/.m2/repository |
| key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} |
| restore-keys: | |
| ${{ runner.os }}-maven- |
| - name: Check version |
| run: | |
| mvn --version |
| java -version |
| helm version |
| kind version |
| - name: Create kind cluster |
| run: kind create cluster --config ./.github/config/kind-config-kind.yaml --wait 3m --image kindest/node:${{ matrix.k8s-version }} |
| - name: Download Istio 1.13.0 |
| run: | |
| curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.13.0 sh - |
| cd istio-1.13.0 |
| echo "$PWD/bin" >> $GITHUB_PATH |
| - name: Install Istio |
| run: istioctl install -y --set values.global.proxy.resources.requests.cpu=10m |
| - name: Show K8s cluster information |
| run: | |
| kubectl cluster-info |
| kubectl version |
| kubectl get pods -n kube-system |
| echo "current-context:" $(kubectl config current-context) |
| echo "environment-kubeconfig:" ${KUBECONFIG} |
| - name: Build with Maven |
| run: | |
| echo ">>> mvn ${BUILD_FLAG} -B" |
| mvn ${BUILD_FLAG} -B |
| - name: Build Image locally |
| run: .github/scripts/build-image-locally.sh |
| - name: Start submarine |
| run: bash ./.github/scripts/start-submarine.sh |
| - name: Test |
| env: |
| TEST_FLAG: "verify -DskipRat -ntp" |
| TEST_MODULES: "-pl :submarine-test-k8s" |
| run: | |
| echo ">>> mvn ${TEST_FLAG} ${TEST_MODULES} -B" |
| mvn ${TEST_FLAG} ${TEST_MODULES} -B |
| - name: Failure status |
| run: | |
| kubectl describe nodes |
| kubectl get pods |
| kubectl -n default get events --sort-by='{.lastTimestamp}' |
| if: ${{ failure() }} |
| - name: Delete temporary build artifacts before caching |
| run: | |
| #Never cache local artifacts |
| rm -rf ~/.m2/repository/org/apache/submarine |
| if: always() |
| submarine-commons-runtime: |
| runs-on: ubuntu-latest |
| timeout-minutes: 30 |
| steps: |
| - uses: actions/checkout@v2 |
| with: |
| fetch-depth: 50 |
| - name: Cache jacoco.exec |
| uses: actions/cache@v2 |
| with: |
| path: ./submarine-commons/commons-runtime/target/jacoco.exec |
| key: ${{ runner.os }}-docker-${{ github.sha }} |
| - name: Set up JDK 1.8 |
| uses: actions/setup-java@v1 |
| with: |
| java-version: "1.8" |
| - name: Set up Maven 3.6.3 |
| uses: stCarolas/setup-maven@v4 |
| with: |
| maven-version: 3.6.3 |
| - name: Check version |
| run: | |
| mvn --version |
| java -version |
| - name: Build |
| env: |
| MODULES: "-pl :submarine-commons-runtime" |
| run: | |
| echo ">>> mvn $BUILD_FLAG $MODULES -B" |
| mvn $BUILD_FLAG $MODULES -B |
| - name: Test |
| env: |
| TEST_MODULES: "-pl :submarine-commons-runtime" |
| run: | |
| echo ">>> mvn $TEST_FLAG $TEST_MODULES -B" |
| mvn $TEST_FLAG $TEST_MODULES -B |
| submarine-client: |
| runs-on: ubuntu-latest |
| timeout-minutes: 30 |
| steps: |
| - uses: actions/checkout@v2 |
| with: |
| fetch-depth: 50 |
| - name: Cache jacoco.exec |
| uses: actions/cache@v2 |
| with: |
| path: ./submarine-client/target/jacoco.exec |
| key: ${{ runner.os }}-docker-${{ github.sha }} |
| - name: Set up JDK 1.8 |
| uses: actions/setup-java@v1 |
| with: |
| java-version: "1.8" |
| - name: Set up Maven 3.6.3 |
| uses: stCarolas/setup-maven@v4 |
| with: |
| maven-version: 3.6.3 |
| - name: Check version |
| run: | |
| mvn --version |
| java -version |
| - name: Build |
| env: |
| MODULES: "-pl :submarine-client" |
| run: | |
| echo ">>> mvn $BUILD_FLAG $MODULES -B" |
| mvn $BUILD_FLAG $MODULES -B |
| - name: Test |
| env: |
| TEST_MODULES: "-pl :submarine-client" |
| run: | |
| echo ">>> mvn $TEST_FLAG $TEST_MODULES -B" |
| mvn $TEST_FLAG $TEST_MODULES -B |
| submarine-server: |
| runs-on: ubuntu-latest |
| timeout-minutes: 30 |
| services: |
| mysql: |
| image: mysql:5.7 |
| env: |
| MYSQL_ROOT_PASSWORD: "password" |
| ports: |
| - 3306:3306 |
| # wait until mysql is health |
| options: --health-cmd "mysqladmin ping" --health-interval 10s --health-timeout 10s --health-retries 10 |
| minio: |
| image: bitnami/minio:2022.2.24 |
| env: |
| MINIO_ACCESS_KEY: "submarine_minio" |
| MINIO_SECRET_KEY: "submarine_minio" |
| MINIO_DEFAULT_BUCKETS: "submarine" |
| ports: |
| - 9000:9000 |
| # wait until minio is health |
| options: --health-cmd "curl http://localhost:9000/minio/health/live" --health-interval 10s --health-timeout 10s --health-retries 10 |
| |
| steps: |
| - uses: actions/checkout@v2 |
| with: |
| fetch-depth: 50 |
| - name: Cache server-database jacoco.exec |
| uses: actions/cache@v2 |
| with: |
| path: | |
| ./submarine-server/server-database/target/jacoco.exec |
| key: ${{ runner.os }}-docker-${{ github.sha }} |
| - name: Cache server-core jacoco.exec |
| uses: actions/cache@v2 |
| with: |
| path: | |
| ./submarine-server/server-core/target/jacoco.exec |
| key: ${{ runner.os }}-docker-${{ github.sha }} |
| - name: Set up JDK 1.8 |
| uses: actions/setup-java@v1 |
| with: |
| java-version: "1.8" |
| - name: Set up Maven 3.6.3 |
| uses: stCarolas/setup-maven@v4 |
| with: |
| maven-version: 3.6.3 |
| - name: Check version |
| run: | |
| mvn --version |
| java -version |
| - name: Prepare default mysql-data |
| run: | |
| python3 -V |
| sudo apt-get install python3-mysql.connector |
| python3 ./dev-support/database/init-database.py |
| - name: Build submarine-server-database |
| env: |
| MODULES: "-pl :submarine-server-database" |
| run: | |
| echo ">>> mvn $BUILD_FLAG $MODULES -B" |
| mvn $BUILD_FLAG $MODULES -B |
| - name: Test submarine-server-database |
| env: |
| TEST_MODULES: "-pl :submarine-server-database" |
| run: | |
| echo ">>> mvn $TEST_FLAG $TEST_MODULES -B" |
| mvn $TEST_FLAG $TEST_MODULES -B |
| - name: Build submarine-server-database |
| env: |
| MODULES: "-pl :submarine-server-core" |
| run: | |
| echo ">>> mvn $BUILD_FLAG $MODULES -B" |
| mvn $BUILD_FLAG $MODULES -B |
| - name: Test submarine-server-core |
| env: |
| TEST_MODULES: "-pl :submarine-server-core" |
| run: | |
| echo ">>> mvn $TEST_FLAG $TEST_MODULES -B" |
| mvn $TEST_FLAG $TEST_MODULES -B |
| submarine-workbench: |
| runs-on: ubuntu-latest |
| timeout-minutes: 30 |
| steps: |
| - uses: actions/checkout@v2 |
| with: |
| fetch-depth: 50 |
| - name: Set up Maven 3.6.3 |
| uses: stCarolas/setup-maven@v4 |
| with: |
| maven-version: 3.6.3 |
| - name: Check version |
| run: | |
| mvn --version |
| - name: Maven Build |
| env: |
| MODULES: "-pl :submarine-workbench-web" |
| run: | |
| echo ">>> mvn $BUILD_FLAG $MODULES -B" |
| mvn $BUILD_FLAG $MODULES -B |
| - name: Test with chrome |
| working-directory: ./submarine-workbench/workbench-web |
| run: npm run test -- --no-watch --no-progress --browsers=ChromeHeadlessCI |
| - name: Test with firefox |
| working-directory: ./submarine-workbench/workbench-web |
| run: npm run test -- --no-watch --no-progress --browsers=FirefoxHeadless |
| submarine-workbench-v2: |
| runs-on: ubuntu-latest |
| timeout-minutes: 30 |
| steps: |
| - uses: actions/checkout@v2 |
| with: |
| fetch-depth: 50 |
| - uses: actions/setup-node@v3 |
| with: |
| node-version: "14" |
| - name: Check version |
| run: node --version |
| - name: Install dependencies |
| working-directory: ./submarine-workbench-v2 |
| run: yarn |
| - name: Run test |
| working-directory: ./submarine-workbench-v2 |
| run: yarn test --run --coverage |
| submarine-submitter: |
| runs-on: ubuntu-latest |
| timeout-minutes: 30 |
| steps: |
| - uses: actions/checkout@v2 |
| with: |
| fetch-depth: 50 |
| - name: Cache submarine-server jacoco.exec |
| uses: actions/cache@v2 |
| with: |
| path: | |
| ./submarine-server/server-submitter/target/jacoco.exec |
| key: ${{ runner.os }}-docker-${{ github.sha }} |
| - name: Cache submitter-k8s jacoco.exec |
| uses: actions/cache@v2 |
| with: |
| path: | |
| ./submarine-server/server-submitter/submitter-k8s/target/jacoco.exec |
| key: ${{ runner.os }}-docker-${{ github.sha }} |
| - name: Set up JDK 1.8 |
| uses: actions/setup-java@v1 |
| with: |
| java-version: "1.8" |
| - name: Set up Maven 3.6.3 |
| uses: stCarolas/setup-maven@v4 |
| with: |
| maven-version: 3.6.3 |
| - name: Check version |
| run: | |
| mvn --version |
| java -version |
| - name: Build |
| env: |
| MODULES: "-pl :submarine-server-submitter,:submarine-submitter-k8s" |
| run: | |
| echo ">>> mvn $BUILD_FLAG $MODULES -B" |
| mvn $BUILD_FLAG $MODULES -B |
| - name: Test |
| env: |
| # There is a `submarine-submitter-k8s` package under the `submarine-server-submitter` that also needs to be tested |
| TEST_MODULES: "-pl :submarine-server-submitter,:submarine-submitter-k8s" |
| run: | |
| echo ">>> mvn $TEST_FLAG $TEST_MODULES -B" |
| mvn $TEST_FLAG $TEST_MODULES -B |
| rat: |
| name: Check License |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v2 |
| - uses: actions/setup-java@v1 |
| with: |
| java-version: "1.8" |
| - run: mvn org.apache.rat:apache-rat-plugin:check |
| linter: |
| name: Check Style |
| runs-on: ubuntu-latest |
| timeout-minutes: 30 |
| steps: |
| - uses: actions/checkout@v2 |
| - name: Set up JDK 1.8 |
| uses: actions/setup-java@v1 |
| with: |
| java-version: "1.8" |
| - name: Set up Maven 3.6.3 |
| uses: stCarolas/setup-maven@v4 |
| with: |
| maven-version: 3.6.3 |
| - name: Setup Golang 1.16.2 |
| uses: actions/setup-go@v2 |
| with: |
| go-version: "1.16.2" |
| - uses: actions/setup-node@v3 |
| with: |
| node-version: "14" |
| - name: Check version |
| run: | |
| mvn --version |
| java -version |
| go version |
| node --version |
| - uses: actions/cache@v2 |
| with: |
| path: ~/.m2/repository |
| key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} |
| restore-keys: | |
| ${{ runner.os }}-maven- |
| - name: Java Style |
| if: always() |
| run: ./dev-support/style-check/lint-java.sh |
| - name: Scala Style |
| if: always() |
| run: ./dev-support/style-check/lint-scala.sh |
| - name: Angular Style |
| if: always() |
| run: ./dev-support/style-check/lint-angular.sh |
| - name: Go Style |
| if: always() |
| run: ./dev-support/style-check/lint-go.sh |
| - name: React Style |
| if: always() |
| working-directory: ./submarine-workbench-v2 |
| run: | |
| yarn add prettier@^2.6.2 |
| yarn checkformat |
| sonarcloud-and-codecov: |
| name: SonarCloud and Codecov |
| runs-on: ubuntu-latest |
| needs: |
| - submarine-e2e |
| - submarine-k8s |
| - submarine-submitter |
| - submarine-server |
| - submarine-client |
| - submarine-commons-runtime |
| steps: |
| - uses: actions/checkout@v2 |
| with: |
| fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis |
| - name: Cache Maven packages |
| uses: actions/cache@v1 |
| with: |
| path: ~/.m2 |
| key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} |
| restore-keys: ${{ runner.os }}-m2 |
| - name: Cache test-e2e data |
| uses: actions/cache@v2 |
| with: |
| path: ./submarine-test/test-e2e/target/jacoco.exec |
| key: ${{ runner.os }}-docker-${{ github.sha }} |
| - name: Cache test-k8s data |
| uses: actions/cache@v2 |
| with: |
| path: ./submarine-test/test-k8s/target/jacoco.exec |
| key: ${{ runner.os }}-docker-${{ github.sha }} |
| - name: Cache commons-cluster data |
| uses: actions/cache@v2 |
| with: |
| path: ./submarine-commons/commons-cluster/target/jacoco.exec |
| key: ${{ runner.os }}-docker-${{ github.sha }} |
| - name: Cache commons-runtime data |
| uses: actions/cache@v2 |
| with: |
| path: ./submarine-commons/commons-runtime/target/jacoco.exec |
| key: ${{ runner.os }}-docker-${{ github.sha }} |
| - name: Cache submarine-client data |
| uses: actions/cache@v2 |
| with: |
| path: ./submarine-client/target/jacoco.exec |
| key: ${{ runner.os }}-docker-${{ github.sha }} |
| - name: Cache submarine-server-database data |
| uses: actions/cache@v2 |
| with: |
| path: | |
| ./submarine-server/server-database/target/jacoco.exec |
| key: ${{ runner.os }}-docker-${{ github.sha }} |
| - name: Cache submarine-server-core data |
| uses: actions/cache@v2 |
| with: |
| path: | |
| ./submarine-server/server-core/target/jacoco.exec |
| key: ${{ runner.os }}-docker-${{ github.sha }} |
| - name: Cache submarine-submitter data |
| uses: actions/cache@v2 |
| with: |
| path: | |
| ./submarine-server/server-submitter/target/jacoco.exec |
| key: ${{ runner.os }}-docker-${{ github.sha }} |
| - name: Cache submarine-submitter-k8s data |
| uses: actions/cache@v2 |
| with: |
| path: | |
| ./submarine-server/server-submitter/submitter-k8s/target/jacoco.exec |
| key: ${{ runner.os }}-docker-${{ github.sha }} |
| - name: Cache SonarCloud packages |
| uses: actions/cache@v1 |
| with: |
| path: ~/.sonar/cache |
| key: ${{ runner.os }}-sonar |
| restore-keys: ${{ runner.os }}-sonar |
| - name: Set up JDK 1.8 |
| uses: actions/setup-java@v1 |
| with: |
| java-version: "1.8" |
| - name: Set up Maven 3.6.3 |
| uses: stCarolas/setup-maven@v4 |
| with: |
| maven-version: 3.6.3 |
| - name: Build the project with JDK 8 |
| run: mvn install -DskipTests |
| - name: Set up JDK 11 |
| uses: actions/setup-java@v1 |
| with: |
| java-version: 11 |
| - name: Download artifacts |
| uses: actions/download-artifact@v2 |
| with: |
| path: target/artifacts |
| - name: Calculate combined coverage |
| run: ./dev-support/cicd/coverage.sh |
| - name: Build and analyze with JDK 11 # sonar-maven-plugin only support JDK 11 |
| if: github.repository == 'apache/submarine' && github.event_name == 'push' && github.ref == 'refs/heads/master' |
| run: mvn -B verify -DskipTests org.sonarsource.scanner.maven:sonar-maven-plugin:sonar -Dsonar.host.url=https://sonarcloud.io -Dsonar.organization=apache -Dsonar.projectKey=apache_submarine |
| env: |
| SONAR_TOKEN: ${{ secrets.SONARCLOUD_TOKEN }} |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| - name: Upload coverage report to Codecov |
| uses: codecov/codecov-action@v2 |
| with: |
| files: ./target/coverage/all.xml |
| - name: Delete temporary build artifacts before caching |
| run: | |
| #Never cache local artifacts |
| rm -rf ~/.m2/repository/org/apache/submarine |
| if: always() |