|
1 |
| -# Running AD integ tests stored in https://github.com/opensearch-project/opensearch-dashboards-functional-test |
2 |
| -# In the future we should pull dependencies from bundled build snapshots. Because that is not available |
3 |
| -# yet we build the cluster from source (besides core Opensearch, which is a pulled min artifact). |
4 |
| -name: Remote integ tests workflow |
5 |
| -on: |
6 |
| - push: |
7 |
| - branches: |
8 |
| - - "*" |
9 |
| - pull_request: |
10 |
| - branches: |
11 |
| - - "*" |
| 1 | +name: FTR E2E AD Workbench Test |
| 2 | + |
| 3 | +on: [pull_request, push] |
| 4 | + |
| 5 | +env: |
| 6 | + CI: 1 |
| 7 | + # avoid warnings like "tput: No value for $TERM and no -T specified" |
| 8 | + TERM: xterm |
| 9 | + OPENSEARCH_DASHBOARDS_VERSION: 'main' |
| 10 | + OPENSEARCH_VERSION: '3.0.0' |
| 11 | + OPENSEARCH_PLUGIN_VERSION: '3.0.0.0' |
| 12 | + |
12 | 13 | jobs:
|
13 |
| - test-without-security: |
14 |
| - name: Run integ tests without security |
| 14 | + tests: |
| 15 | + name: Run FTR E2E AD Workbench Tests |
15 | 16 | strategy:
|
| 17 | + fail-fast: false |
16 | 18 | matrix:
|
17 |
| - os: [ubuntu-latest, windows-latest] |
18 |
| - java: [11] |
19 |
| - include: |
20 |
| - - os: windows-latest |
21 |
| - cypress_cache_folder: ~/AppData/Local/Cypress/Cache |
22 |
| - - os: ubuntu-latest |
23 |
| - cypress_cache_folder: ~/.cache/Cypress |
| 19 | + os: [ ubuntu-latest ] |
| 20 | + jdk: [ 11 ] |
24 | 21 | runs-on: ${{ matrix.os }}
|
| 22 | + |
25 | 23 | steps:
|
26 |
| - - name: Set up Java 11 |
27 |
| - uses: actions/setup-java@v3 |
| 24 | + - name: Set up JDK |
| 25 | + uses: actions/setup-java@v1 |
28 | 26 | with:
|
29 |
| - distribution: 'corretto' |
30 |
| - java-version: '11' |
31 |
| - |
32 |
| - - name: Enable longer filenames |
33 |
| - if: ${{ matrix.os == 'windows-latest' }} |
34 |
| - run: git config --system core.longpaths true |
| 27 | + java-version: ${{ matrix.jdk }} |
35 | 28 |
|
36 |
| - - name: Checkout OpenSearch Dashboards |
| 29 | + - name: Checkout Anomaly-Detection |
37 | 30 | uses: actions/checkout@v2
|
38 | 31 | with:
|
39 |
| - repository: opensearch-project/OpenSearch-Dashboards |
| 32 | + path: anomaly-detection |
| 33 | + repository: opensearch-project/anomaly-detection |
40 | 34 | ref: '${{ github.base_ref }}'
|
41 |
| - path: OpenSearch-Dashboards |
42 | 35 |
|
43 |
| - - name: Checkout Anomaly Detection OpenSearch Dashboards plugin |
| 36 | + - name: Run OpenSearch with plugin |
| 37 | + run: | |
| 38 | + cd anomaly-detection |
| 39 | + ./gradlew run & |
| 40 | + timeout 300 bash -c 'while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' localhost:9200)" != "200" ]]; do sleep 5; done' |
| 41 | + shell: bash |
| 42 | + |
| 43 | + - name: Check OpenSearch Running on Linux |
| 44 | + if: ${{ runner.os != 'Windows'}} |
| 45 | + run: curl http://localhost:9200/ |
| 46 | + shell: bash |
| 47 | + |
| 48 | + - name: Checkout OpenSearch Dashboards |
44 | 49 | uses: actions/checkout@v2
|
45 | 50 | with:
|
46 |
| - path: OpenSearch-Dashboards/plugins/anomaly-detection-dashboards-plugin |
| 51 | + path: OpenSearch-Dashboards |
| 52 | + repository: opensearch-project/OpenSearch-Dashboards |
| 53 | + ref: ${{ env.OPENSEARCH_DASHBOARDS_VERSION }} |
| 54 | + fetch-depth: 0 |
| 55 | + filter: | |
| 56 | + cypress |
| 57 | + test |
47 | 58 |
|
48 |
| - - name: Setup Node |
49 |
| - uses: actions/setup-node@v3 |
| 59 | + - name: Checkout AD in OpenSearch Dashboards Plugins Dir |
| 60 | + uses: actions/checkout@v2 |
50 | 61 | with:
|
51 |
| - node-version-file: './OpenSearch-Dashboards/.nvmrc' |
52 |
| - registry-url: 'https://registry.npmjs.org' |
| 62 | + path: OpenSearch-Dashboards/plugins/anomaly-detection-dashboards-plugin |
53 | 63 |
|
54 |
| - - name: Install Yarn |
55 |
| - # Need to use bash to avoid having a windows/linux specific step |
56 |
| - shell: bash |
| 64 | + - id: tool-versions |
57 | 65 | run: |
|
58 |
| - YARN_VERSION=$(node -p "require('./OpenSearch-Dashboards/package.json').engines.yarn") |
59 |
| - echo "Installing yarn@$YARN_VERSION" |
60 |
| - npm i -g yarn@$YARN_VERSION |
61 |
| -
|
62 |
| - - run: node -v |
63 |
| - - run: yarn -v |
| 66 | + echo "node_version=$(cat .node-version)" >> $GITHUB_OUTPUT |
| 67 | + echo "yarn_version=$(jq -r '.engines.yarn' package.json)" >> $GITHUB_OUTPUT |
| 68 | + working-directory: OpenSearch-Dashboards |
| 69 | + shell: bash |
64 | 70 |
|
65 |
| - - name: Checkout Anomaly-Detection |
66 |
| - uses: actions/checkout@v2 |
| 71 | + - uses: actions/setup-node@v1 |
67 | 72 | with:
|
68 |
| - path: anomaly-detection |
69 |
| - repository: opensearch-project/anomaly-detection |
70 |
| - ref: '${{ github.base_ref }}' |
| 73 | + node-version: ${{ steps.tool-versions.outputs.node_version }} |
| 74 | + registry-url: 'https://registry.npmjs.org' |
71 | 75 |
|
72 |
| - - name: Run OpenSearch with plugin |
| 76 | + - name: Setup Opensearch Dashboards |
73 | 77 | run: |
|
74 |
| - cd anomaly-detection |
75 |
| - CONFIG_PATH=../OpenSearch-Dashboards/plugins/anomaly-detection-dashboards-plugin/opensearch_dashboards.json |
76 |
| - OPENSEARCH_VERSION=$(node -p "require('$CONFIG_PATH').opensearchDashboardsVersion")-SNAPSHOT |
77 |
| - echo "Using OpenSearch version $OPENSEARCH_VERSION" |
78 |
| - ./gradlew run -Dopensearch.version=$OPENSEARCH_VERSION & |
79 |
| - timeout 300 bash -c 'while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' localhost:9200)" != "200" ]]; do sleep 5; done' |
| 78 | + npm uninstall -g yarn |
| 79 | + echo "Installing yarn ${{ steps.tool-versions.outputs.yarn_version }}" |
| 80 | + npm i -g yarn@${{ steps.tool-versions.outputs.yarn_version }} |
| 81 | + yarn cache clean |
| 82 | + yarn add sha.js |
| 83 | + working-directory: OpenSearch-Dashboards |
80 | 84 | shell: bash
|
81 | 85 |
|
82 |
| - - name: Bootstrap the plugin |
| 86 | + - name: Boodstrap Opensearch Dashboards |
83 | 87 | run: |
|
84 |
| - cd OpenSearch-Dashboards/plugins/anomaly-detection-dashboards-plugin |
85 | 88 | yarn osd bootstrap --single-version=loose
|
86 |
| -
|
87 |
| - - name: Run OpenSearch Dashboards server |
| 89 | + working-directory: OpenSearch-Dashboards/plugins/anomaly-detection-dashboards-plugin |
| 90 | + |
| 91 | + - name: Run Opensearch Dashboards with AD Installed |
88 | 92 | run: |
|
89 |
| - cd OpenSearch-Dashboards |
90 |
| - yarn start --no-base-path --no-watch & |
91 |
| - shell: bash |
92 |
| - |
93 |
| - # Window is slow so wait longer |
94 |
| - - name: Sleep until OSD server starts - windows |
95 |
| - if: ${{ matrix.os == 'windows-latest' }} |
96 |
| - run: Start-Sleep -s 400 |
97 |
| - shell: powershell |
| 93 | + nohup yarn start --no-base-path --no-watch | tee dashboard.log & |
| 94 | + working-directory: OpenSearch-Dashboards |
98 | 95 |
|
99 |
| - - name: Sleep until OSD server starts - non-windows |
100 |
| - if: ${{ matrix.os != 'windows-latest' }} |
101 |
| - run: sleep 300 |
| 96 | + - name : Check If OpenSearch Dashboards Is Ready |
| 97 | + if: ${{ runner.os == 'Linux' }} |
| 98 | + run: | |
| 99 | + if timeout 600 grep -q "bundles compiled successfully after" <(tail -n0 -f dashboard.log); then |
| 100 | + echo "OpenSearch Dashboards compiled successfully." |
| 101 | + else |
| 102 | + echo "Timeout for 600 seconds reached. OpenSearch Dashboards did not finish compiling." |
| 103 | + exit 1 |
| 104 | + fi |
| 105 | + working-directory: OpenSearch-Dashboards |
| 106 | + |
| 107 | + - name: Check OpenSearch Dashboards Running on Linux |
| 108 | + if: ${{ runner.os != 'Windows'}} |
| 109 | + run: curl http://localhost:5601/ |
102 | 110 | shell: bash
|
103 | 111 |
|
104 |
| - - name: Checkout opensearch-dashboards-functional-test |
| 112 | + - name: Checkout Dashboards Functioanl Test Repo |
105 | 113 | uses: actions/checkout@v2
|
106 | 114 | with:
|
107 | 115 | path: opensearch-dashboards-functional-test
|
108 | 116 | repository: opensearch-project/opensearch-dashboards-functional-test
|
109 |
| - ref: '${{ github.base_ref }}' |
| 117 | + ref: ${{ env.OPENSEARCH_DASHBOARDS_VERSION }} |
| 118 | + fetch-depth: 0 |
| 119 | + |
| 120 | + - name: Install Cypress |
| 121 | + run: | |
| 122 | + npm install cypress --save-dev |
| 123 | + shell: bash |
| 124 | + working-directory: opensearch-dashboards-functional-test |
110 | 125 |
|
111 | 126 | - name: Get Cypress version
|
112 | 127 | id: cypress_version
|
113 | 128 | run: |
|
114 |
| - echo "::set-output name=cypress_version::$(cat ./opensearch-dashboards-functional-test/package.json | jq '.devDependencies.cypress' | tr -d '"')" |
| 129 | + echo "::set-output name=cypress_version::$(cat ./package.json | jq '.dependencies.cypress' | tr -d '"')" |
| 130 | + working-directory: opensearch-dashboards-functional-test |
115 | 131 |
|
116 |
| - - name: Cache Cypress |
117 |
| - id: cache-cypress |
118 |
| - uses: actions/cache@v1 |
| 132 | + - name: Run Cypress tests |
| 133 | + run: | |
| 134 | + yarn cypress:run-without-security --browser chromium --spec 'cypress/integration/plugins/anomaly-detection-dashboards-plugin/*.js' |
| 135 | + working-directory: opensearch-dashboards-functional-test |
| 136 | + |
| 137 | + - name: Capture failure screenshots |
| 138 | + uses: actions/upload-artifact@v1 |
| 139 | + if: failure() |
119 | 140 | with:
|
120 |
| - path: ${{ matrix.cypress_cache_folder }} |
121 |
| - key: cypress-cache-v2-${{ runner.os }}-${{ hashFiles('**/package.json') }} |
122 |
| - env: |
123 |
| - CYPRESS_INSTALL_BINARY: ${{ steps.cypress_version.outputs.cypress_version }} |
124 |
| - - run: npx cypress cache list |
125 |
| - - run: npx cypress cache path |
126 |
| - |
127 |
| - - name: Run AD cypress tests |
128 |
| - uses: cypress-io/github-action@v2 |
| 141 | + name: cypress-screenshots-${{ matrix.os }} |
| 142 | + path: opensearch-dashboards-functional-test/cypress/screenshots |
| 143 | + |
| 144 | + - name: Capture failure test video |
| 145 | + uses: actions/upload-artifact@v1 |
| 146 | + if: failure() |
129 | 147 | with:
|
130 |
| - working-directory: opensearch-dashboards-functional-test |
131 |
| - command: yarn run cypress run --env SECURITY_ENABLED=false --spec cypress/integration/plugins/anomaly-detection-dashboards-plugin/**/*.js |
132 |
| - env: |
133 |
| - CYPRESS_CACHE_FOLDER: ${{ matrix.cypress_cache_folder }} |
| 148 | + name: cypress-videos-${{ matrix.os }} |
| 149 | + path: opensearch-dashboards-functional-test/cypress/videos |
0 commit comments