diff --git a/.github/workflows/trigger-e2e-tests.yml b/.github/workflows/trigger-e2e-tests.yml index de2abf3..377cbbd 100644 --- a/.github/workflows/trigger-e2e-tests.yml +++ b/.github/workflows/trigger-e2e-tests.yml @@ -2,12 +2,27 @@ name: End-to-end test workflow on: workflow_dispatch: + inputs: + ror_es_version: + description: 'ReadOnlyREST Elasticsearch Version (at least one version required)' + required: false + type: string + ror_kbn_version: + description: 'ReadOnlyREST Kibana Version (at least one version required)' + required: false + type: string + mode: + description: 'Repository source for ROR plugin docker image (e.g., prod, dev)' + required: false + default: 'prod' + 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 @@ -33,13 +48,13 @@ 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 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,10 +81,63 @@ 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 }} + - 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 }} + + 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: 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 + + - 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 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/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 ..." 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"