mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-04 05:50:17 +00:00 
			
		
		
		
	Start out by documenting general expectations on when CI is run, how anyone can run Azure pipelines, and how GitLab CI pipelines can be run. Signed-off-by: Tom Rini <trini@konsulko.com>
		
			
				
	
	
		
			71 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
.. SPDX-License-Identifier: GPL-2.0+
 | 
						|
 | 
						|
Continuous Integration testing
 | 
						|
==============================
 | 
						|
 | 
						|
All changes require passing our continuous integration tests prior to being
 | 
						|
merged in to mainline.  To help facilitate merges being accepted quickly,
 | 
						|
custodians are encouraged but not required to run a pipeline prior to sending a
 | 
						|
pull request.  Individual developers submitting significant or widespread
 | 
						|
changes are encouraged to run a pipeline themselves prior to posting.
 | 
						|
 | 
						|
In order to make this process as easy as possible, the ability to run a CI
 | 
						|
pipeline is provided in both Azure and GitLab.  Both of these pipelines perform
 | 
						|
their Linux build jobs on the same Docker container image and to cover the same
 | 
						|
platforms.  In addition, Azure is also used to confirm that our host tools can
 | 
						|
be built with mingw to run on Windows.
 | 
						|
 | 
						|
Each of the pipelines is written in such as way as to be a "world build" style
 | 
						|
test and as such we try and build all possible platforms.  In addition, for all
 | 
						|
platforms that support being run in QEMU we run them in QEMU and use our pytest
 | 
						|
suite.  See :doc:`py_testing` for more information about those tests.
 | 
						|
 | 
						|
Azure Pipelines
 | 
						|
---------------
 | 
						|
 | 
						|
This pipeline is defined in the top-level ``.azure-pipelines.yml`` file.
 | 
						|
Currently there are two ways to run a Microsoft Azure Pipeline test for U-Boot.
 | 
						|
 | 
						|
The first way is to create an account with Microsoft at
 | 
						|
https://azure.microsoft.com/en-us/services/devops/ and then use the
 | 
						|
``.azure-pipelines.yml`` file in the U-Boot repository as the pipeline
 | 
						|
description.
 | 
						|
 | 
						|
The second way is to use GitHub.  This requires a GitHub account
 | 
						|
and to fork the repository at https://github.com/u-boot/u-boot and to then
 | 
						|
submit a pull request as this will trigger an Azure pipeline run.  Clicking on
 | 
						|
your pull request on the list at https://github.com/u-boot/u-boot/pulls and
 | 
						|
then the "Checks" tab will show the results.
 | 
						|
 | 
						|
GitLab CI Pipelines
 | 
						|
-------------------
 | 
						|
 | 
						|
This pipeline is defined in the top-level ``.gitlab-ci.yml`` file.  Currently,
 | 
						|
we support running GitLab CI pipelines only for custodians, due to the
 | 
						|
resources the project has available.  For Custodians, it is a matter of
 | 
						|
enabling the pipeline feature in your project repository following the standard
 | 
						|
GitLab documentation.  For non-custodians, the pipeline itself is part of the
 | 
						|
tree and should be able to be used on any GitLab instance, with whatever
 | 
						|
runners you are able to provide.  While it is intended to be able to run this
 | 
						|
pipeline on the free public instances provided at https://gitlab.com/ a problem
 | 
						|
with our squashfs tests currently prevents this.
 | 
						|
 | 
						|
Docker container
 | 
						|
----------------
 | 
						|
 | 
						|
As previously stated, both of the above pipelines build using the same Docker
 | 
						|
container image.  This is maintained in the U-Boot source tree at
 | 
						|
``tools/docker/Dockerfile`` and new images are made as needed to support new
 | 
						|
tests or features.  This file needs to be updated whenever adding new external
 | 
						|
tool requirements to tests.
 | 
						|
 | 
						|
Customizing CI
 | 
						|
--------------
 | 
						|
 | 
						|
As noted above, the CI pipelines perform a world build.  While this is good for
 | 
						|
overall project testing, it can be less useful for testing specific cases or
 | 
						|
developing features.  In that case, it can be useful as part of your own
 | 
						|
testing cycle to edit these pipelines in separate local commits to pair them
 | 
						|
down to just the jobs you're interested in.  These changes must be removed
 | 
						|
prior to submission.
 |