From c96901d7e70ba250659809dc206f282de6bf9a9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Ko=C5=82odziejczyk?= Date: Mon, 24 Mar 2025 20:32:37 +0100 Subject: [PATCH 1/4] wip --- .github/workflows/trigger-e2e-tests.yml | 84 ++++++++++++++++++++++++- README.md | 4 +- environments/eck-ror/start.sh | 28 +++++++-- environments/elk-ror/start.sh | 28 +++++++-- run-env-and-tests.sh | 26 ++++++-- 5 files changed, 152 insertions(+), 18 deletions(-) diff --git a/.github/workflows/trigger-e2e-tests.yml b/.github/workflows/trigger-e2e-tests.yml index de2abf3..32b2ea5 100644 --- a/.github/workflows/trigger-e2e-tests.yml +++ b/.github/workflows/trigger-e2e-tests.yml @@ -2,12 +2,43 @@ name: End-to-end test workflow on: workflow_dispatch: + inputs: + ror_es_version: + description: 'ReadOnlyREST Elasticsearch Version' + required: false + type: string + ror_kbn_version: + description: 'ReadOnlyREST Kibana Version' + required: false + type: string + elk_version: + description: 'ELK Stack Version' + required: false + default: '8.17.3' + type: choice + options: + - '8.17.3' + - '7.17.28' + environment: + description: 'Environment to run tests in' + required: false + default: 'docker' + type: choice + options: + - 'docker' + - 'eck' + mode: + description: 'Test mode' + required: false + default: '' + type: string schedule: - cron: '0 0 * * *' pull_request: types: [opened, synchronize, reopened] jobs: + master-e2e-tests: if: github.event_name == 'schedule' || github.ref == 'refs/heads/master' || github.base_ref == 'master' runs-on: ubuntu-latest @@ -40,6 +71,7 @@ jobs: env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + develop-e2e-tests: if: github.event_name != 'schedule' && (github.ref == 'refs/heads/develop' || github.base_ref == 'develop') runs-on: ubuntu-latest @@ -66,7 +98,7 @@ jobs: - name: Run tests run: | - ./run-env-and-tests.sh --env ${{ matrix.env }} --elk ${{ matrix.version }} --ror-es ${{ env.ROR_ES_VERSION }} --ror-kbn ${{ env.ROR_KBN_VERSION }} --dev + ./run-env-and-tests.sh --env ${{ matrix.env }} --elk ${{ matrix.version }} --ror-es ${{ env.ROR_ES_VERSION }} --ror-kbn ${{ env.ROR_KBN_VERSION }} --mode ${{ env.MODE }} env: ROR_ACTIVATION_KEY: ${{ secrets.ROR_KBN_LICENSE }} ELECTRON_EXTRA_LAUNCH_ARGS: '--disable-gpu' @@ -76,3 +108,53 @@ jobs: env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + + manual-e2e-tests: + if: github.event_name == 'workflow_dispatch' + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + version: ["8.17.3", "7.17.28"] + env: [docker, eck] + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: '20' + + - name: Clean up disk space + uses: ./.github/cleanup-disk-space + + - name: Run tests + run: | + PARAMS="--env ${{ matrix.env }} --elk ${{ matrix.version }}" + + if [ -n "${{ github.event.inputs.ror_es_version }}" ]; then + PARAMS="$PARAMS --ror-es ${{ github.event.inputs.ror_es_version }}" + fi + + if [ -n "${{ github.event.inputs.ror_kbn_version }}" ]; then + PARAMS="$PARAMS --ror-kbn ${{ github.event.inputs.ror_kbn_version }}" + fi + + if [ -n "${{ github.event.inputs.mode }}" ]; then + PARAMS="$PARAMS --mode ${{ github.event.inputs.mode }}" + fi + + ./run-env-and-tests.sh $PARAMS + env: + ROR_ACTIVATION_KEY: ${{ secrets.ROR_KBN_LICENSE }} + ELECTRON_EXTRA_LAUNCH_ARGS: '--disable-gpu' + + - name: S3 Upload Videos & show logs + if: failure() + uses: ./.github/upload-videos + env: + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + + \ No newline at end of file diff --git a/README.md b/README.md index 4e4e83c..12edd24 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ To run the env: (running the given version of ROR from Docker Hub development repo) ```bash -./environments/elk-ror/start.sh --es "8.15.0" --kbn "8.15.2" --ror-es 1.62.0-pre5 --ror-kbn 1.62.0-pre5 --dev +./environments/elk-ror/start.sh --es "8.15.0" --kbn "8.15.2" --ror-es 1.62.0-pre5 --ror-kbn 1.62.0-pre5 --mode dev ``` or @@ -48,7 +48,7 @@ or (running the given version of ROR from Docker Hub development repo) ```bash -./environments/eck-ror/start.sh --es "8.15.0" --kbn "8.15.2" --ror-es 1.62.0-pre5 --ror-kbn 1.62.0-pre5 --dev +./environments/eck-ror/start.sh --es "8.15.0" --kbn "8.15.2" --ror-es 1.62.0-pre5 --ror-kbn 1.62.0-pre5 --mode dev ``` To run tests on the env: diff --git a/environments/eck-ror/start.sh b/environments/eck-ror/start.sh index caea80c..d7c5d4d 100755 --- a/environments/eck-ror/start.sh +++ b/environments/eck-ror/start.sh @@ -14,7 +14,7 @@ if ! command -v docker &> /dev/null; then fi show_help() { - echo "Usage: ./start.sh --es --kbn --eck [--ror-es (default: latest) --ror-kbn (default: latest) --dev (use dev images)]" + echo "Usage: ./start.sh --es --kbn --eck [--ror-es (default: latest) --ror-kbn (default: latest) --mode (default: prod)]" exit 1 } @@ -75,10 +75,28 @@ while [[ $# -gt 0 ]]; do show_help fi ;; - --dev) - export ROR_ES_REPO="beshultd/elasticsearch-readonlyrest-dev" - export ROR_KBN_REPO="beshultd/kibana-readonlyrest-dev" - shift + --mode) + if [[ -n $2 && $2 != --* ]]; then + case "$2" in + "prod") + export ROR_ES_REPO="beshultd/elasticsearch-readonlyrest" + export ROR_KBN_REPO="beshultd/kibana-readonlyrest" + shift 2 + ;; + "dev") + export ROR_ES_REPO="beshultd/elasticsearch-readonlyrest-dev" + export ROR_KBN_REPO="beshultd/kibana-readonlyrest-dev" + shift 2 + ;; + *) + echo "Error: --mode: Only 'prod' and 'dev' are available modes" + show_help + ;; + esac + else + echo "Error: --mode: Only 'prod' and 'dev' are available modes" + show_help + fi ;; *) echo "Unknown option: $1" diff --git a/environments/elk-ror/start.sh b/environments/elk-ror/start.sh index 3f80f6b..64d4faa 100755 --- a/environments/elk-ror/start.sh +++ b/environments/elk-ror/start.sh @@ -18,7 +18,7 @@ if [[ -z "${ROR_ACTIVATION_KEY}" ]]; then fi show_help() { - echo "Usage: ./run.sh --es --kbn [--ror-es (default: latest) --ror-kbn (default: latest) --dev (use dev images)]" + echo "Usage: ./run.sh --es --kbn [--ror-es (default: latest) --ror-kbn (default: latest) --mode (default: prod)]" exit 1 } @@ -69,10 +69,28 @@ while [[ $# -gt 0 ]]; do show_help fi ;; - --dev) - export ROR_ES_REPO="beshultd/elasticsearch-readonlyrest-dev" - export ROR_KBN_REPO="beshultd/kibana-readonlyrest-dev" - shift + --mode) + if [[ -n $2 && $2 != --* ]]; then + case "$2" in + "prod") + export ROR_ES_REPO="beshultd/elasticsearch-readonlyrest" + export ROR_KBN_REPO="beshultd/kibana-readonlyrest" + shift 2 + ;; + "dev") + export ROR_ES_REPO="beshultd/elasticsearch-readonlyrest-dev" + export ROR_KBN_REPO="beshultd/kibana-readonlyrest-dev" + shift 2 + ;; + *) + echo "Error: --mode: Only 'prod' and 'dev' are available modes" + show_help + ;; + esac + else + echo "Error: --mode: Only 'prod' and 'dev' are available modes" + show_help + fi ;; *) echo "Unknown option: $1" diff --git a/run-env-and-tests.sh b/run-env-and-tests.sh index 871edc6..a38c549 100755 --- a/run-env-and-tests.sh +++ b/run-env-and-tests.sh @@ -1,7 +1,7 @@ #!/bin/bash -e show_help() { - echo "Usage: ./run-evn-and-tests.sh --env --elk [--ror-es (default: latest) --ror-kbn (default: latest) --dev (use dev images)]" + echo "Usage: ./run-evn-and-tests.sh --env --elk [--ror-es (default: latest) --ror-kbn (default: latest) --mode (default: prod)]" exit 1 } @@ -23,7 +23,7 @@ while [[ $# -gt 0 ]]; do ENV_NAME="eck-ror" ;; *) - echo "Error: --env: Only "docker" and 'eck' are available environments" + echo "Error: --env: Only 'docker' and 'eck' are available environments" show_help ;; esac @@ -60,9 +60,25 @@ while [[ $# -gt 0 ]]; do show_help fi ;; - --dev) - MODE="--dev" - shift + --mode) + if [[ -n $2 && $2 != --* ]]; then + case "$2" in + "prod") + MODE="--mode $2" + ;; + "dev") + MODE="--mode $2" + ;; + *) + echo "Error: --mode: Only 'prod' and 'dev' are available modes" + show_help + ;; + esac + shift 2 + else + echo "Error: --mode requires a mode argument" + show_help + fi ;; *) echo "Unknown option: $1" From 273b4e9ef47d6c46241ea76aa8cb2c7749ef8288 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Ko=C5=82odziejczyk?= Date: Mon, 24 Mar 2025 20:37:49 +0100 Subject: [PATCH 2/4] wip --- .github/workflows/trigger-e2e-tests.yml | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/.github/workflows/trigger-e2e-tests.yml b/.github/workflows/trigger-e2e-tests.yml index 32b2ea5..68fe761 100644 --- a/.github/workflows/trigger-e2e-tests.yml +++ b/.github/workflows/trigger-e2e-tests.yml @@ -11,26 +11,10 @@ on: description: 'ReadOnlyREST Kibana Version' required: false type: string - elk_version: - description: 'ELK Stack Version' - required: false - default: '8.17.3' - type: choice - options: - - '8.17.3' - - '7.17.28' - environment: - description: 'Environment to run tests in' - required: false - default: 'docker' - type: choice - options: - - 'docker' - - 'eck' mode: - description: 'Test mode' + description: 'Repository source for ROR plugin docker image (e.g., prod, dev)' required: false - default: '' + default: 'prod' type: string schedule: - cron: '0 0 * * *' From a920c25914a704adf14e2470da4f11fc1357b9d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Ko=C5=82odziejczyk?= Date: Mon, 24 Mar 2025 20:45:20 +0100 Subject: [PATCH 3/4] wip --- .github/workflows/trigger-e2e-tests.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/trigger-e2e-tests.yml b/.github/workflows/trigger-e2e-tests.yml index 68fe761..73deb6f 100644 --- a/.github/workflows/trigger-e2e-tests.yml +++ b/.github/workflows/trigger-e2e-tests.yml @@ -4,11 +4,11 @@ on: workflow_dispatch: inputs: ror_es_version: - description: 'ReadOnlyREST Elasticsearch Version' + description: 'ReadOnlyREST Elasticsearch Version (at least one version required)' required: false type: string ror_kbn_version: - description: 'ReadOnlyREST Kibana Version' + description: 'ReadOnlyREST Kibana Version (at least one version required)' required: false type: string mode: @@ -102,6 +102,13 @@ jobs: version: ["8.17.3", "7.17.28"] env: [docker, eck] steps: + - name: Validate inputs + run: | + if [ -z "${{ github.event.inputs.ror_es_version }}" ] && [ -z "${{ github.event.inputs.ror_kbn_version }}" ]; then + echo "ERROR: At least one of 'ror_es_version' or 'ror_kbn_version' must be provided!" + exit 1 + fi + - name: Checkout code uses: actions/checkout@v4 From 8ffcc652765e0de9295463cbd8cd99a3e8755d5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Ko=C5=82odziejczyk?= Date: Wed, 26 Mar 2025 21:19:49 +0100 Subject: [PATCH 4/4] wip --- .github/workflows/trigger-e2e-tests.yml | 5 ----- e2e-tests/run-tests.sh | 1 + 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/trigger-e2e-tests.yml b/.github/workflows/trigger-e2e-tests.yml index 73deb6f..377cbbd 100644 --- a/.github/workflows/trigger-e2e-tests.yml +++ b/.github/workflows/trigger-e2e-tests.yml @@ -48,7 +48,6 @@ jobs: ./run-env-and-tests.sh --env ${{ matrix.env }} --elk ${{ matrix.version }} env: ROR_ACTIVATION_KEY: ${{ secrets.ROR_KBN_LICENSE }} - ELECTRON_EXTRA_LAUNCH_ARGS: '--disable-gpu' - name: S3 Upload Videos & show logs if: failure() uses: ./.github/upload-videos @@ -85,7 +84,6 @@ jobs: ./run-env-and-tests.sh --env ${{ matrix.env }} --elk ${{ matrix.version }} --ror-es ${{ env.ROR_ES_VERSION }} --ror-kbn ${{ env.ROR_KBN_VERSION }} --mode ${{ env.MODE }} env: ROR_ACTIVATION_KEY: ${{ secrets.ROR_KBN_LICENSE }} - ELECTRON_EXTRA_LAUNCH_ARGS: '--disable-gpu' - name: S3 Upload Videos & show logs if: failure() uses: ./.github/upload-videos @@ -139,7 +137,6 @@ jobs: ./run-env-and-tests.sh $PARAMS env: ROR_ACTIVATION_KEY: ${{ secrets.ROR_KBN_LICENSE }} - ELECTRON_EXTRA_LAUNCH_ARGS: '--disable-gpu' - name: S3 Upload Videos & show logs if: failure() @@ -147,5 +144,3 @@ jobs: env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - - \ No newline at end of file diff --git a/e2e-tests/run-tests.sh b/e2e-tests/run-tests.sh index a73355b..0aeab79 100755 --- a/e2e-tests/run-tests.sh +++ b/e2e-tests/run-tests.sh @@ -12,6 +12,7 @@ if [ $# -ne 1 ]; then exit 1 fi +export ELECTRON_EXTRA_LAUNCH_ARGS="--disable-gpu" KBN_VERSION="$1" echo "Running E2E Cypress tests ..."