diff --git a/.github/workflows/build_and_test_workflow.yml b/.github/workflows/build_and_test_workflow.yml index 01ca84b04b11..2c181ef50407 100644 --- a/.github/workflows/build_and_test_workflow.yml +++ b/.github/workflows/build_and_test_workflow.yml @@ -28,113 +28,15 @@ env: NODE_OPTIONS: "--max-old-space-size=6144 --dns-result-order=ipv4first" jobs: - build-lint-test: - name: Build and Verify on ${{ matrix.name }} (ciGroup${{ matrix.group }}) - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest, windows-latest] - group: [1, 2, 3, 4] - 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: Initialize Yarn Cache - uses: actions/cache@v3 - if: matrix.os != 'windows-latest' - 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 - # ciGroup 1 of unit-tests is shorter and Linux is faster - if: matrix.group == 1 && matrix.os == 'ubuntu-latest' - id: linter - run: yarn lint - - - name: Validate NOTICE file - # ciGroup 1 of unit-tests is shorter and Linux is faster - if: matrix.group == 1 && matrix.os == 'ubuntu-latest' - id: notice-validate - run: yarn notice:validate - - - name: Run unit tests group ${{ matrix.group }} with coverage - id: unit-tests - run: yarn test:jest:ci:coverage --ci-group=${{ matrix.group }} - - - name: Run mocha tests with coverage - # ciGroup 1 of unit-tests is shorter - if: matrix.group == 1 - 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 }}_${{ matrix.group }} - - - name: Run integration tests - # ciGroup 1 of unit-tests is shorter - if: matrix.group == 1 - 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: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] + os: [windows-latest] + group: [1] include: - - os: ubuntu-latest - name: Linux - os: windows-latest name: Windows runs-on: ${{ matrix.os }} @@ -209,8 +111,8 @@ jobs: - name: Setup Chrome (Windows) if: matrix.os == 'windows-latest' run: | - Remove-Item -Path 'C:\Program Files\Google\Chrome\Application' -Force - mklink /J 'C:\Program Files\Google\Chrome\Application' ${{steps.download-chrome.outputs.path}} + rmdir "C:\Program Files\Google\Chrome\Application" /S /Q + mklink /J "C:\Program Files\Google\Chrome\Application" ${{steps.download-chrome.outputs.path}} - name: Run bootstrap (Linux) if: matrix.os != 'windows-latest' @@ -240,176 +142,4 @@ jobs: 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: Initialize Yarn Cache - uses: actions/cache@v3 - if: matrix.os != 'windows-latest' - 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, osd-2.6.0, osd-2.7.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: | - yarn test:bwc -s false -o ${{ env.OPENSEARCH_URL }} -d ${{ steps.download.outputs.download-path }}/opensearch-dashboards-${{ env.VERSION }}-linux-x64.tar.gz -v ${{ matrix.version }} - - - 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