ci_testing.rst 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. .. SPDX-License-Identifier: GPL-2.0+
  2. Continuous Integration testing
  3. ==============================
  4. All changes require passing our continuous integration tests prior to being
  5. merged in to mainline. To help facilitate merges being accepted quickly,
  6. custodians are encouraged but not required to run a pipeline prior to sending a
  7. pull request. Individual developers submitting significant or widespread
  8. changes are encouraged to run a pipeline themselves prior to posting.
  9. In order to make this process as easy as possible, the ability to run a CI
  10. pipeline is provided in both Azure and GitLab. Both of these pipelines perform
  11. their Linux build jobs on the same Docker container image and to cover the same
  12. platforms. In addition, Azure is also used to confirm that our host tools can
  13. be built with mingw to run on Windows.
  14. Each of the pipelines is written in such as way as to be a "world build" style
  15. test and as such we try and build all possible platforms. In addition, for all
  16. platforms that support being run in QEMU we run them in QEMU and use our pytest
  17. suite. See :doc:`py_testing` for more information about those tests.
  18. Azure Pipelines
  19. ---------------
  20. This pipeline is defined in the top-level ``.azure-pipelines.yml`` file.
  21. Currently there are two ways to run a Microsoft Azure Pipeline test for U-Boot.
  22. The first way is to create an account with Microsoft at
  23. https://azure.microsoft.com/en-us/services/devops/ and then use the
  24. ``.azure-pipelines.yml`` file in the U-Boot repository as the pipeline
  25. description.
  26. The second way is to use GitHub. This requires a GitHub account
  27. and to fork the repository at https://github.com/u-boot/u-boot and to then
  28. submit a pull request as this will trigger an Azure pipeline run. Clicking on
  29. your pull request on the list at https://github.com/u-boot/u-boot/pulls and
  30. then the "Checks" tab will show the results.
  31. GitLab CI Pipelines
  32. -------------------
  33. This pipeline is defined in the top-level ``.gitlab-ci.yml`` file. Currently,
  34. we support running GitLab CI pipelines only for custodians, due to the
  35. resources the project has available. For Custodians, it is a matter of
  36. enabling the pipeline feature in your project repository following the standard
  37. GitLab documentation. For non-custodians, the pipeline itself is part of the
  38. tree and should be able to be used on any GitLab instance, with whatever
  39. runners you are able to provide. While it is intended to be able to run this
  40. pipeline on the free public instances provided at https://gitlab.com/ a problem
  41. with our squashfs tests currently prevents this.
  42. Docker container
  43. ----------------
  44. As previously stated, both of the above pipelines build using the same Docker
  45. container image. This is maintained in the U-Boot source tree at
  46. ``tools/docker/Dockerfile`` and new images are made as needed to support new
  47. tests or features. This file needs to be updated whenever adding new external
  48. tool requirements to tests.
  49. Customizing CI
  50. --------------
  51. As noted above, the CI pipelines perform a world build. While this is good for
  52. overall project testing, it can be less useful for testing specific cases or
  53. developing features. In that case, it can be useful as part of your own
  54. testing cycle to edit these pipelines in separate local commits to pair them
  55. down to just the jobs you're interested in. These changes must be removed
  56. prior to submission.