Spring Cloud Pipelines


Table of Contents

1. Introduction
1.1. Project setup
1.2. How to use it?
1.2.1. Centralized pipeline creation
1.2.2. Pipeline per repository
1.3. The flow
1.4. Environments
1.5. Tests
1.5.1. Testing against stubs
1.5.2. General view
1.6. CI Server worker prerequisites
1.7. Pipeline descriptor
1.7.1. Pipeline descriptor for Cloud Foundry
1.8. Project Setup
2. Opinionated implementation
2.1. Build
2.2. Test
2.3. Stage
2.4. Prod
3. Project opinions
3.1. Cloud Foundry project opinions
3.2. Kubernetes project opinions
4. Concourse Pipeline (Cloud Foundry)
4.1. Step by step
4.1.1. Fork repos
4.1.2. Start Concourse and Artifactory
Deploy the infra JARs to Artifactory
4.1.3. Start PCF Dev
4.1.4. Setup the fly CLI
4.1.5. Setup your credentials.yml
4.1.6. Build the pipeline
4.1.7. Run the github-webhook pipeline
5. Concourse Pipeline (Kubernetes)
5.1. Step by step
5.1.1. Fork repos
5.2. Concourse in K8S (Kubernetes)
5.2.1. Deploying Artifactory to K8S
5.2.2. Setup the fly CLI
5.2.3. Setup your credentials.yml
5.2.4. Build the pipeline
5.2.5. Run the github-webhook pipeline
6. Concourse FAQ
6.1. Can I use the pipeline for some other repos?
6.2. Will this work for ANY project out of the box?
6.3. Can I modify this to reuse in my project?
6.4. I ran out of resources!! (PCF Dev)
6.5. The rollback step fails due to missing JAR ?!
6.6. Can I see the output of a job from the terminal?
6.7. I clicked the job and it’s constantly pending…​
6.8. The route is already in use (CF)
6.9. I’m unauthorized to deploy infrastructure jars
6.10. version resource is broken
7. Jenkins Pipeline (Common)
7.1. Project setup
7.2. Optional customization steps
7.2.1. Deploying infra jars to a different location
7.2.2. Setup settings.xml for Maven deployment
7.2.3. Setup Jenkins env vars
Seed properties
Global envs
7.2.4. Set Git email / user
Add Jenkins credentials for GitHub
7.3. Testing Jenkins scripts
7.4. How to work with Jenkins Job DSL plugin
7.5. Docker Image
8. Jenkins Pipeline (Cloud Foundry)
8.1. Step by step
8.1.1. Fork repos
8.1.2. Start Jenkins and Artifactory
Deploy the infra JARs to Artifactory
8.1.3. Start PCF Dev
8.1.4. Run the seed job
8.1.5. Run the github-webhook pipeline
8.2. Declarative pipeline & Blue Ocean
8.3. Jenkins Cloud Foundry customization
8.3.1. All env vars
8.3.2. Jenkins Credentials
9. Jenkins Pipeline (Kubernetes)
9.1. Step by step
9.1.1. Fork repos
9.1.2. Start Jenkins and Artifactory
Deploy the infra JARs to Artifactory
9.1.3. Run the seed job
9.1.4. Run the github-webhook pipeline
9.2. Declarative pipeline & Blue Ocean
9.3. Jenkins Kubernetes customization
9.3.1. All env vars
9.4. Preparing to connect to GCE
9.5. Connecting to a Kubo or GCE cluster
10. Jenkins FAQ
10.1. Pipeline version contains ${PIPELINE_VERSION}
10.2. Pipeline version is not passed to the build
10.3. The build times out with pipeline.sh info
10.4. Can I use the pipeline for some other repos?
10.5. Will this work for ANY project out of the box?
10.6. Can I modify this to reuse in my project?
10.7. The rollback step fails due to missing JAR ?!
10.8. I want to provide a different JDK version
10.9. Enable Groovy Token Macro Processing
10.10. I want deployment to stage and prod be automatic
10.11. I don’t want to test API compativility
10.12. I can’t tag the repo!
10.13. I’m unauthorized to deploy infrastructure jars
10.14. Signing Artifacts
10.15. Using SSH keys for git
10.16. Deploy to stage fails and doesn’t redeploy a service (Kubernetes)
10.17. I ran out of resources!! (Cloud Foundry)
10.18. Deploying to test / stage / prod fails - error finding space (Cloud Foundry)
10.19. The route is already in use (Cloud Foundry)
10.20. How to execute helper scripts against a real CF instance I’m logged into (Cloud Foundry)
11. Kubernetes setup
11.1. Kubernetes CLI Installation
11.1.1. Script Installation
11.1.2. Manual Installation
11.2. Kubernetes Cluster setup
11.2.1. Script Installation
11.2.2. Manual Installation
11.3. Run Minikube
11.4. Certificates and Workers
11.4.1. Minikube Certificates and Workers
11.4.2. Manual Certificates and Workers Setup
11.5. Generate Minikube namespaces
12. The demo setup (Cloud Foundry)
12.1. Deploying production applications to PCF Dev
12.2. Running Prometheus on CF
12.3. Running Grafana on CF
13. The demo setup (Kubernetes)
13.1. Deploying production applications to Minikube
13.2. Running Prometheus on Kubernetes
13.3. Running Grafana on Kubernetes
14. Step-by-step Cloud Foundry migration
14.1. Preview
14.2. Introduction
14.3. Sample application - initial state
14.4. Sample application - end state
14.5. Tutorial - toolset
14.6. Tutorial - overview
14.7. Tutorial - step-by-step
14.7.1. Prep: Before you begin
14.7.2. Stage 1: Scaffolding
1.1 Create GitHub branches
1.2 Add Maven wrapper
1.3 Create Bintray maven repo package
1.4 Configure distribution management using Bintray maven repo
1.5 Push changes to GitHub
1.6 Add Spring Cloud Pipelines credentials file
1.7 Set Concourse pipeline
1.8 Add Cloud Foundry manifest
1.9 Add Spring Cloud Pipelines manifest
1.10 Push changes to GitHub
1.11 Create Cloud Foundry Orgs/Spaces
1.12 Create Cloud Foundry stage and prod service instances
1.13 Update Spring Cloud Pipelines credentials file
1.14 Update Concourse pipeline with updated credentials files
Stage 1 Recap & next steps
14.7.3. Stage 2: Tests
2.1 Add Maven profiles
2.2 Add/organize tests
2.3 Enable database versioning
2.4 Push changes to GitHub
2.5 Re-run the pipelines
Stage 2 Recap & next steps
14.7.4. Stage 3: Contracts
3.1 Create a contract
3.2 Create a base class for contract tests
3.3 Enable automated contract-based testing
3.4 Enable backward compatibility API check
3.5 Push changes to GitHub
3.6 Re-run the fortune-service pipeline
3.7 Enable stubs for integration tests
3.8 Enable stubs for smoke tests
3.9 Push changes to GitHub
Stage 3 Recap
14.8. Conclusion
15. Building the project
15.1. Prerequisites
15.2. Bats submodules
15.3. Build and test
15.4. Generate docs
15.5. Distributions
15.6. Making a release
16. Customizing the project
17. Releasing the project
17.1. Publishing A Docker Image