From db19820b7dfeeeb459562e18cf89d0cea9f494c1 Mon Sep 17 00:00:00 2001 From: yjhawar Date: Tue, 11 Apr 2023 15:19:42 +0530 Subject: [PATCH] Add github workflow --- .github/workflows/e2e.yml | 108 ++++++++++++++++++ .../java/io.cdap.plugin/tests/TestRunner.java | 4 +- 2 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/e2e.yml diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml new file mode 100644 index 0000000..e5d84e4 --- /dev/null +++ b/.github/workflows/e2e.yml @@ -0,0 +1,108 @@ +name: Build e2e tests + +on: + push: + branches: [ e2e ] + pull_request: + branches: [ e2e ] + types: [ opened, synchronize, reopened, labeled ] + workflow_dispatch: + +jobs: + build: + runs-on: k8s-runner-e2e + # We allow builds: + # 1) When triggered manually + # 2) When it's a merge into a branch + # 3) For PRs that are labeled as build and + # - It's a code change + # - A build label was just added + # A bit complex, but prevents builds when other labels are manipulated + if: > + github.event_name == 'workflow_dispatch' + || github.event_name == 'push' + || (contains(github.event.pull_request.labels.*.name, 'build') + && (github.event.action != 'labeled' || github.event.label.name == 'build') + ) + strategy: + fail-fast: false + + steps: + # Pinned 1.0.0 version + - uses: actions/checkout@v3 + with: + path: plugin + submodules: 'recursive' + ref: ${{ github.event.workflow_run.head_sha }} + + - uses: dorny/paths-filter@b2feaf19c27470162a626bd6fa8438ae5b263721 + if: github.event_name != 'workflow_dispatch' && github.event_name != 'push' + id: filter + with: + working-directory: plugin + filters: | + e2e-test: + - '**/e2e-test/**' + - name: Checkout e2e test repo + uses: actions/checkout@v3 + with: + repository: cdapio/cdap-e2e-tests + path: e2e + + - name: Cache + uses: actions/cache@v3 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ github.workflow }}-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven-${{ github.workflow }} + - name: Get Secrets from GCP Secret Manager + id: secrets + uses: 'google-github-actions/get-secretmanager-secrets@v0' + with: + secrets: |- + ORACLE_HOST:cdapio-github-builds/ORACLE_HOST + ORACLE_USERNAME:cdapio-github-builds/ORACLE_USERNAME + ORACLE_PASSWORD:cdapio-github-builds/ORACLE_PASSWORD + ORACLE_PORT:cdapio-github-builds/ORACLE_PORT + - name: Run required e2e tests + if: github.event_name != 'workflow_dispatch' && github.event_name != 'push' && steps.filter.outputs.e2e-test == 'false' + run: python3 e2e/src/main/scripts/run_e2e_test.py --testRunner TestRunnerRequired.java + env: + ORACLE_HOST: ${{ steps.secrets.outputs.ORACLE_HOST }} + ORACLE_USERNAME: ${{ steps.secrets.outputs.ORACLE_USERNAME }} + ORACLE_PASSWORD: ${{ steps.secrets.outputs.ORACLE_PASSWORD }} + ORACLE_PORT: ${{ steps.secrets.outputs.ORACLE_PORT }} + + + - name: Run all e2e tests + if: github.event_name == 'workflow_dispatch' || github.event_name == 'push' || steps.filter.outputs.e2e-test == 'true' + run: python3 e2e/src/main/scripts/run_e2e_test.py --testRunner **/**/TestRunner.java + env: + ORACLE_HOST: ${{ steps.secrets.outputs.ORACLE_HOST }} + ORACLE_USERNAME: ${{ steps.secrets.outputs.ORACLE_USERNAME }} + ORACLE_PASSWORD: ${{ steps.secrets.outputs.ORACLE_PASSWORD }} + ORACLE_PORT: ${{ steps.secrets.outputs.ORACLE_PORT }} + + + - name: Upload report + uses: actions/upload-artifact@v3 + if: always() + with: + name: Cucumber report + path: ./**/target/cucumber-reports + + - name: Upload debug files + uses: actions/upload-artifact@v3 + if: always() + with: + name: Debug files + path: ./**/target/e2e-debug + + - name: Upload files to GCS + uses: google-github-actions/upload-cloud-storage@v0 + if: always() + with: + path: ./plugin + destination: e2e-tests-cucumber-reports/${{ github.event.repository.name }}/${{ github.ref }} + glob: '**/target/cucumber-reports/**' \ No newline at end of file diff --git a/src/e2e-test/java/io.cdap.plugin/tests/TestRunner.java b/src/e2e-test/java/io.cdap.plugin/tests/TestRunner.java index 2959b32..fd0307d 100644 --- a/src/e2e-test/java/io.cdap.plugin/tests/TestRunner.java +++ b/src/e2e-test/java/io.cdap.plugin/tests/TestRunner.java @@ -25,8 +25,8 @@ @RunWith(Cucumber.class) @CucumberOptions( features = {"src/e2e-test/features"}, - glue = {"stepsdesign", "io.cdap.plugin.common.stepsdesign", "io.cdap.plugin.oracle.stepsdesign"}, - tags = {"@Oracle"}, + glue = {"stepsdesign", "io.cdap.plugin.stepsdesign"}, + tags = {"@Oracle"}, monochrome = true, plugin = {"pretty", "html:target/cucumber-html-report/oracle", "json:target/cucumber-reports/cucumber-oracle.json", "junit:target/cucumber-reports/cucumber-oracle.xml"}