Skip to content

[ci][ftr][kbn/test] split up CI jobs#25838

Merged
spalger merged 6 commits intoelastic:masterfrom
spalger:implement/ci-groups
Nov 20, 2018
Merged

[ci][ftr][kbn/test] split up CI jobs#25838
spalger merged 6 commits intoelastic:masterfrom
spalger:implement/ci-groups

Conversation

@spalger
Copy link
Copy Markdown
Contributor

@spalger spalger commented Nov 17, 2018

Based on #22359, thank you @LeeDr for kicking off this effort!
Fixes #22041

Our current CI jobs take about 2 hours to complete, which is long, and even worse when they have to be re-run because of a flaky test failure. Since the Kibana project just keep growing, and functional testing is a very useful way to test our software, we need to find a way to scale our tests. This PR splits the existing 3 CI jobs into 20 to help with that.

Each job sets up its own environment, many build Kibana in the process, and then run a small chunk of the tests that our old jobs did.

Just like the current jobs it takes about 15 minutes to bootstrap the environment. Because we have so many jobs now we are at an increased risk of observing transient network failures while installing node modules, so to prevent this issue we are working with infra to bake the node_modules, es, and optimizer caches into the testing images. This helps us decrease the risk of network related failures, and helps speed things up a bit.

In the future we hope to decrease the redundancy in the CI jobs do, but setting up relationships between jobs is a difficult process that will take time to figure out.

All of our non-ftr tests run, along with the functional tests that don't run against built versions of Kibana, run in the kibana-intake or x-pack-intake jobs (linting, license checks, api_integration, etc.). The other job are for tests run by the functional test runner that execute against a built version of Kibana.

The functional test runner knows which tests to run in which group using suite tags which we introduced in #25021. Tests in test/functional can use tags ciGroup1 through ciGroup12 to assign a suite to a specific job. Tests in x-pack/test/* can use the tags ciGroup1 through ciGroup6. If you use a tag that is not supported or forget to tag your tests the CI job will refuse to run.

The jobs are somewhat balanced right now, so when adding a new set of tests please consider the execution time of the other tests and avoid adding your tests to a group that is already slower than others.

@elasticmachine
Copy link
Copy Markdown
Contributor

Pinging @elastic/kibana-operations

@elasticmachine

This comment has been minimized.

@spalger spalger force-pushed the implement/ci-groups branch from e3f492b to 8128877 Compare November 17, 2018 01:35
@elasticmachine
Copy link
Copy Markdown
Contributor

💚 Build Succeeded

@spalger spalger force-pushed the implement/ci-groups branch from 8128877 to 8055ca3 Compare November 17, 2018 08:35
@elasticmachine
Copy link
Copy Markdown
Contributor

💚 Build Succeeded

@elasticmachine
Copy link
Copy Markdown
Contributor

💚 Build Succeeded

@elasticmachine
Copy link
Copy Markdown
Contributor

💚 Build Succeeded

@elasticmachine
Copy link
Copy Markdown
Contributor

💚 Build Succeeded

@tylersmalley
Copy link
Copy Markdown
Member

Much better!

          27 tests are excluded by the ciGroup tags, make sure that
          all test suites have a "ciGroup{X}" tag and that "tasks/functional_test_groups.js"
          knows about the tag that you are using.

          tags: {"include":["ciGroup1","ciGroup2","ciGroup3","ciGroup4","ciGroup5","ciGroup6","ciGroup7","ciGroup8","ciGroup9","ciGroup10","ciGroup11","ciGroup12"]}

          - dashboard app using legacy data dashboard time picker Visualization updated when time picker changes
          - dashboard app using legacy data dashboard time picker Saved search updated when time picker changes
          - dashboard app using legacy data bwc shared urls 6.0 urls loads an unsaved dashboard
          - dashboard app using legacy data bwc shared urls 6.0 urls loads a saved dashboard
          - dashboard app using legacy data bwc shared urls 6.0 urls uiState in url takes precedence over saved dashboard state
          - dashboard app using legacy data dashboard panel controls panel edit controls are hidden in view mode
          - dashboard app using legacy data dashboard panel controls panel edit controls are shown in edit mode
          - dashboard app using legacy data dashboard panel controls panel edit controls are shown in edit mode after a hard refresh
          - dashboard app using legacy data dashboard panel controls panel edit controls on an expanded panel are hidden in view mode
          - dashboard app using legacy data dashboard panel controls panel edit controls on an expanded panel in edit mode hides remove icons
          - dashboard app using legacy data dashboard panel controls panel edit controls visualization object edit menu opens a visualization when edit link is clicked
          - dashboard app using legacy data dashboard panel controls panel edit controls visualization object edit menu deletes the visualization when delete link is clicked
          - dashboard app using legacy data dashboard panel controls panel edit controls saved search object edit menu opens a saved search when edit link is clicked
          - dashboard app using legacy data dashboard panel controls panel edit controls saved search object edit menu deletes the saved search when delete link is clicked
          - dashboard app using legacy data dashboard panel controls panel expand control shown in edit mode
          - dashboard app using legacy data dashboard state Overriding colors on an area chart is preserved
          - dashboard app using legacy data dashboard state Saved search with no changes will update when the saved object changes
          - dashboard app using legacy data dashboard state Saved search with column changes will not update when the saved object changes
          - dashboard app using legacy data dashboard state Tile map with no changes will update with visualization changes
          - dashboard app using legacy data dashboard state retains dark theme
          - dashboard app using legacy data dashboard state Directly modifying url updates dashboard state for query parameter
          - dashboard app using legacy data dashboard state Directly modifying url updates dashboard state for panel size parameters
          - dashboard app using legacy data dashboard state Directly modifying url updates dashboard state when removing a panel
          - dashboard app using legacy data dashboard state Directly modifying url updates dashboard state for embeddable config color parameters on a visualization updates a pie slice color on a soft refresh
          - dashboard app using legacy data dashboard state Directly modifying url updates dashboard state for embeddable config color parameters on a visualization and updates the pie slice legend color
          - dashboard app using legacy data dashboard state Directly modifying url updates dashboard state for embeddable config color parameters on a visualization resets a pie slice color to the original when removed
          - dashboard app using legacy data dashboard state Directly modifying url updates dashboard state for embeddable config color parameters on a visualization resets the legend color as well

@spalger spalger merged commit fad8d0c into elastic:master Nov 20, 2018
spalger pushed a commit to spalger/kibana that referenced this pull request Nov 20, 2018
* [ci][ftr][kbn/test] split up CI jobs

* [ci] run --assert-none-excluded in ci groups, before builds

* [ftr] improve error message when excluded tests found

* [ci] document other places the ciGroups live
spalger pushed a commit that referenced this pull request Nov 20, 2018
* [ci][ftr][kbn/test] split up CI jobs (#25838)

* [ci][ftr][kbn/test] split up CI jobs

* [ci] run --assert-none-excluded in ci groups, before builds

* [ftr] improve error message when excluded tests found

* [ci] document other places the ciGroups live

* [grunt] fix --kibana-install-dir value
@spalger
Copy link
Copy Markdown
Contributor Author

spalger commented Nov 20, 2018

6.x/6.6: c64fab0

@spalger spalger deleted the implement/ci-groups branch November 20, 2018 23:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants