2020-04-28 20:25:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								== Spring Framework Concourse pipeline
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-03 18:36:09 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								The Spring Framework uses https://concourse-ci.org/[Concourse] for its CI build and other automated tasks.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								The Spring team has a dedicated Concourse instance available at https://ci.spring.io with a build pipeline
							 
						 
					
						
							
								
									
										
										
										
											2021-10-11 22:22:30 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								for https://ci.spring.io/teams/spring-framework/pipelines/spring-framework-6.0.x[Spring Framework 6.0.x].
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 20:25:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=== Setting up your development environment
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								If you're part of the Spring Framework project on GitHub, you can get access to CI management features.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								First, you need to go to https://ci.spring.io and install the client CLI for your platform (see bottom right of the screen).
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								You can then login with the instance using:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[source]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								----
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$ fly -t spring login -n spring-framework -c https://ci.spring.io
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								----
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Once logged in, you should get something like:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[source]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								----
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$ fly ts
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								name                  url                   team                  expiry
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								spring                https://ci.spring.io  spring-framework      Wed, 25 Mar 2020 17:45:26 UTC
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								----
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=== Pipeline configuration and structure
							 
						 
					
						
							
								
									
										
										
										
											2021-03-03 18:36:09 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 20:25:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								The build pipelines are described in `pipeline.yml` file.
							 
						 
					
						
							
								
									
										
										
										
											2021-03-03 18:36:09 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 20:25:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								This file is listing Concourse resources, i.e. build inputs and outputs such as container images, artifact repositories, source repositories, notification services, etc.
							 
						 
					
						
							
								
									
										
										
										
											2021-03-03 18:36:09 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 20:25:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								It also describes jobs (a job is a sequence of inputs, tasks and outputs); jobs are organized by groups.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								The `pipeline.yml` definition contains `((parameters))` which are loaded from the `parameters.yml` file or from our https://docs.cloudfoundry.org/credhub/[credhub instance].
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								You'll find in this folder the following resources:
							 
						 
					
						
							
								
									
										
										
										
											2021-03-03 18:36:09 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 20:25:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								* `pipeline.yml` the build pipeline
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* `parameters.yml` the build parameters used for the pipeline
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* `images/` holds the container images definitions used in this pipeline
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* `scripts/` holds the build scripts that ship within the CI container images
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* `tasks` contains the task definitions used in the main `pipeline.yml`
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=== Updating the build pipeline
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Updating files on the repository is not enough to update the build pipeline, as changes need to be applied.
							 
						 
					
						
							
								
									
										
										
										
											2021-03-03 18:36:09 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 20:25:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								The pipeline can be deployed using the following command:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[source]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								----
							 
						 
					
						
							
								
									
										
										
										
											2021-10-11 22:22:30 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								$ fly -t spring set-pipeline -p spring-framework-6.0.x -c ci/pipeline.yml -l ci/parameters.yml
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 20:25:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								----
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-03 18:36:09 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								NOTE: This assumes that you have credhub integration configured with the appropriate secrets.