Skip to content

part of the test

part of the test #630

# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
name: Build and test
# trigger on every commit push and PR for all branches except pushes for backport branches
on:
push:
branches: ['**', '!backport/**']
paths-ignore:
- '**/*.md'
- 'docs/**'
pull_request:
branches: ['**']
paths-ignore:
- '**/*.md'
- 'docs/**'
env:
TEST_BROWSER_HEADLESS: 1
CI: 1
GCS_UPLOAD_PREFIX: fake
TEST_OPENSEARCH_DASHBOARDS_HOST: localhost
TEST_OPENSEARCH_DASHBOARDS_PORT: 6610
TEST_OPENSEARCH_TRANSPORT_PORT: 9403
TEST_OPENSEARCH_PORT: 9400
OSD_SNAPSHOT_SKIP_VERIFY_CHECKSUM: true
NODE_OPTIONS: "--max-old-space-size=6144 --dns-result-order=ipv4first"
jobs:
#build-lint-test:
# name: Build and Verify on ${{ matrix.name }}
# strategy:
# fail-fast: false
# matrix:
# os: [ubuntu-latest, windows-latest]
# include:
# - os: ubuntu-latest
# name: Linux
# - os: windows-latest
# name: Windows
# runs-on: ${{ matrix.os }}
# steps:
# - name: Configure git's autocrlf (Windows only)
# if: matrix.os == 'windows-latest'
# run: |
# git config --global core.autocrlf false
# - name: Checkout code
# uses: actions/checkout@v3
# - name: Setup JDK (Windows only)
# if: matrix.os == 'windows-latest'
# uses: actions/setup-java@v3
# with:
# java-version: '11'
# distribution: 'adopt'
# - name: Setup Node
# uses: actions/setup-node@v3
# with:
# node-version-file: '.nvmrc'
# registry-url: 'https://registry.npmjs.org'
# - name: Setup Yarn
# run: |
# npm uninstall -g yarn
# npm i -g yarn@1.22.10
# yarn config set network-timeout 1000000 -g
# - name: Configure Yarn Cache (Linux)
# if: matrix.os != 'windows-latest'
# run: echo "YARN_CACHE_LOCATION=$(yarn cache dir)" >> $GITHUB_ENV
# - name: Configure Yarn Cache (Windows)
# if: matrix.os == 'windows-latest'
# run: |
# echo "YARN_CACHE_LOCATION=$(yarn cache dir)" >> $env:GITHUB_ENV
# echo C:\Program Files\Git\usr\bin>>"%GITHUB_PATH%"
# - name: Initialize Yarn Cache
# uses: actions/cache@v3
# with:
# path: ${{ env.YARN_CACHE_LOCATION }}
# key: yarn-${{ hashFiles('**/yarn.lock') }}
# restore-keys: |
# yarn-
# - name: Run bootstrap (Linux)
# if: matrix.os != 'windows-latest'
# run: yarn osd bootstrap
# - name: Run bootstrap (Windows)
# if: matrix.os == 'windows-latest'
# run: yarn osd bootstrap || yarn osd bootstrap
# - name: Run linter
# id: linter
# run: yarn lint
# - name: Validate NOTICE file
# id: notice-validate
# run: yarn notice:validate
# - name: Run unit tests with coverage
# id: unit-tests
# run: yarn test:jest:ci:coverage
# - name: Run mocha tests with coverage
# id: mocha-tests
# run: yarn test:mocha:coverage
# - name: Upload Code Coverage
# id: upload-code-coverage
# uses: codecov/codecov-action@v3
# with:
# directory: ./target/opensearch-dashboards-coverage
# flags: ${{ matrix.name }}
# - name: Run integration tests
# id: integration-tests
# run: yarn test:jest_integration:ci
functional-tests:
name: Run functional tests on ${{ matrix.name }} (ciGroup${{ matrix.group }})
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
group: [9]
include:
- os: ubuntu-latest
name: Linux
- os: windows-latest
name: Windows
runs-on: ${{ matrix.os }}
steps:
- run: echo Running functional tests for ciGroup${{ matrix.group }}
- name: Configure git's autocrlf (Windows only)
if: matrix.os == 'windows-latest'
run: |
git config --global core.autocrlf false
- name: Checkout code
uses: actions/checkout@v3
- name: Setup JDK (Windows only)
if: matrix.os == 'windows-latest'
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'adopt'
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
registry-url: 'https://registry.npmjs.org'
- name: Setup Yarn
run: |
npm uninstall -g yarn
npm i -g yarn@1.22.10
yarn config set network-timeout 1000000 -g
- name: Configure Yarn Cache (Linux)
if: matrix.os != 'windows-latest'
run: echo "YARN_CACHE_LOCATION=$(yarn cache dir)" >> $GITHUB_ENV
- name: Configure Yarn Cache (Windows)
if: matrix.os == 'windows-latest'
run: |
echo "YARN_CACHE_LOCATION=$(yarn cache dir)" >> $env:GITHUB_ENV
echo C:\Program Files\Git\usr\bin>>"%GITHUB_PATH%"
- name: Initialize Yarn Cache
uses: actions/cache@v3
with:
path: ${{ env.YARN_CACHE_LOCATION }}
key: yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
yarn-
- name: Setup chromedriver
run: node scripts/upgrade_chromedriver.js
- name: Run bootstrap (Linux)
if: matrix.os != 'windows-latest'
run: yarn osd bootstrap
- name: Run bootstrap (Windows)
if: matrix.os == 'windows-latest'
run: yarn osd bootstrap || yarn osd bootstrap
- name: Build plugins
run: node scripts/build_opensearch_dashboards_platform_plugins --no-examples --workers 10
- name: Run CI test group ${{ matrix.group }}
id: ftr-tests
run: node scripts/functional_tests.js --config test/functional/config.js --include ciGroup${{ matrix.group }}
env:
CI_GROUP: ciGroup${{ matrix.group }}
CI_PARALLEL_PROCESS_NUMBER: ciGroup${{ matrix.group }}
JOB: ci${{ matrix.group }}
CACHE_DIR: ciGroup${{ matrix.group }}
- uses: actions/upload-artifact@v3
if: failure()
with:
name: failure-artifacts-ci${{ matrix.group }}
path: |
test/*/failure_debug/
test/*/screenshots/
#build-min-artifact-tests:
# name: Build min release artifacts on ${{ matrix.name }}
# strategy:
# matrix:
# include:
# - os: ubuntu-latest
# name: Linux x64
# ext: tar.gz
# suffix: linux-x64
# script: build-platform --linux --skip-os-packages
# - os: ubuntu-latest
# name: Linux ARM64
# ext: tar.gz
# suffix: linux-arm64
# script: build-platform --linux-arm --skip-os-packages
# - os: windows-latest
# name: Windows x64
# ext: zip
# suffix: windows-x64
# script: build-platform --windows --skip-os-packages
# runs-on: ${{ matrix.os }}
# defaults:
# run:
# working-directory: ./artifacts
# steps:
# - name: Configure git's autocrlf (Windows only)
# if: matrix.os == 'windows-latest'
# run: |
# git config --global core.autocrlf false
# working-directory: .
# - name: Checkout code
# uses: actions/checkout@v3
# with:
# path: ./artifacts
# - name: Setup Node
# uses: actions/setup-node@v3
# with:
# node-version-file: './artifacts/.nvmrc'
# registry-url: 'https://registry.npmjs.org'
# - name: Setup Yarn
# run: |
# npm uninstall -g yarn
# npm i -g yarn@1.22.10
# yarn config set network-timeout 1000000 -g
# - name: Configure Yarn Cache (Linux)
# if: matrix.os != 'windows-latest'
# run: echo "YARN_CACHE_LOCATION=$(yarn cache dir)" >> $GITHUB_ENV
# - name: Configure Yarn Cache (Windows)
# if: matrix.os == 'windows-latest'
# run: |
# echo "YARN_CACHE_LOCATION=$(yarn cache dir)" >> $env:GITHUB_ENV
# echo C:\Program Files\Git\usr\bin>>"%GITHUB_PATH%"
# - name: Initialize Yarn Cache
# uses: actions/cache@v3
# with:
# path: ${{ env.YARN_CACHE_LOCATION }}
# key: yarn-${{ hashFiles('**/yarn.lock') }}
# restore-keys: |
# yarn-
# - name: Get package version (Linux)
# if: matrix.os != 'windows-latest'
# run: |
# echo "VERSION=$(yarn --silent pkg-version)" >> $GITHUB_ENV
# - name: Get artifact build name (Linux)
# if: matrix.os != 'windows-latest'
# run: |
# echo "ARTIFACT_BUILD_NAME=opensearch-dashboards-${{ env.VERSION }}-${{ matrix.suffix }}.${{ matrix.ext }}" >> $GITHUB_ENV
# - name: Get package version (Windows)
# if: matrix.os == 'windows-latest'
# run: |
# echo "VERSION=$(yarn --silent pkg-version)" >> $env:GITHUB_ENV
# - name: Get artifact build name (Windows)
# if: matrix.os == 'windows-latest'
# run: |
# echo "ARTIFACT_BUILD_NAME=opensearch-dashboards-${{ env.VERSION }}-${{ matrix.suffix }}.${{ matrix.ext }}" >> $env:GITHUB_ENV
# - name: Run bootstrap
# run: yarn osd bootstrap
# - name: Build `${{ matrix.name }}`
# run: yarn ${{ matrix.script }} --release
# - uses: actions/upload-artifact@v3
# if: success()
# with:
# name: ${{ matrix.suffix }}-${{ env.VERSION }}
# path: ./artifacts/target/${{ env.ARTIFACT_BUILD_NAME }}
# retention-days: 1
#bwc-tests:
# needs: [build-min-artifact-tests]
# runs-on: ubuntu-latest
# container:
# image: docker://opensearchstaging/ci-runner:ci-runner-rockylinux8-opensearch-dashboards-integtest-v2
# options: --user 1001
# name: Run backwards compatibility tests
# defaults:
# run:
# working-directory: ./artifacts
# strategy:
# matrix:
# version: [osd-2.0.0, osd-2.1.0, osd-2.2.0, osd-2.3.0, osd-2.4.0, osd-2.5.0]
# steps:
# - name: Checkout code
# uses: actions/checkout@v3
# with:
# path: ./artifacts
# - run: echo Running backwards compatibility tests for version ${{ matrix.version }}
# - run: echo [NOTE] These tests will be ran using Linux x64 release builds without security
# - name: Setup Node
# uses: actions/setup-node@v3
# with:
# node-version-file: './artifacts/.nvmrc'
# registry-url: 'https://registry.npmjs.org'
# - name: Setup Yarn
# run: |
# npm uninstall -g yarn
# npm i -g yarn@1.22.10
# yarn config set network-timeout 1000000 -g
# - name: Get package version
# run: |
# echo "VERSION=$(yarn --silent pkg-version)" >> $GITHUB_ENV
# - name: Set OpenSearch URL
# run: |
# echo "OPENSEARCH_URL=https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/${{ env.VERSION }}/latest/linux/x64/tar/dist/opensearch/opensearch-${{ env.VERSION }}-linux-x64.tar.gz" >> $GITHUB_ENV
# - name: Verify if OpenSearch is available for version
# id: verify-opensearch-exists
# run: |
# if curl -I -L ${{ env.OPENSEARCH_URL }}; then
# echo "::set-output name=version-exists::true"
# fi
# - name: Skipping tests
# if: steps.verify-opensearch-exists.outputs.version-exists != 'true'
# run: echo Tests were skipped because an OpenSearch release build does not exist for this version yet!
# - name: Setting environment variable to run tests for ${{ matrix.version }}
# if: steps.verify-opensearch-exists.outputs.version-exists == 'true'
# run: echo "BWC_VERSIONS=${{ matrix.version }}" >> $GITHUB_ENV
# - name: Download OpenSearch Dashboards
# uses: actions/download-artifact@v3
# id: download
# with:
# name: linux-x64-${{ env.VERSION }}
# path: ./artifacts/
# if: steps.verify-opensearch-exists.outputs.version-exists == 'true'
# - name: Run tests
# if: steps.verify-opensearch-exists.outputs.version-exists == 'true'
# run: |
# ./bwctest.sh -s false -o ${{ env.OPENSEARCH_URL }} -d ${{ steps.download.outputs.download-path }}/opensearch-dashboards-${{ env.VERSION }}-linux-x64.tar.gz
# - uses: actions/upload-artifact@v3
# if: ${{ failure() && steps.verify-opensearch-exists.outputs.version-exists == 'true' }}
# with:
# name: ${{ matrix.version }}-test-failures
# path: |
# ./artifacts/bwc_tmp/test/cypress/videos/*
# ./artifacts/bwc_tmp/test/cypress/screenshots/*
# ./artifacts/bwc_tmp/test/cypress/results/*
# retention-days: 1