Continuous integration / deployment can be a daunting task. Especially if you are a team of one, or one among a small team. TeamCity is "continuous integration for everyone" It's a self hosted CI build server that is highly customizable for just about any project. I've built RocketFuel's CI/CD system on a spare box with TeamCity and customized it to handle legacy PHP applications and modern framework based projects. We'll cover install and configuration and all of the flexibility of setting up projects at that build, test, report errors, and trigger deployments for various application scenarios.
3. Continuous Integration
Frequently integrate code changes into the
existing code repository
Merging branches to master/production
Automated build tests to ensure issues found
quickly
Does not have to be deployed
4. Continuous Delivery
Produce valuable changes in code in short cycles
to be released at any time.
AKA: Continuous Deployment
Automated build tests to ensure issues found
quickly
Deployment happens on successful build
6. Which is right for you?
Your goal should be Continuous Integration (at
least!)
Strive for Continuous Delivery if it makes sense
Applications with a live event component may
not be suited for Continuous Delivery
7. The Problem
2 Developers and now scaling up
No longer 1 developer == 1 project
Version control is the obvious answer
What happens if the team just learning version
control?
9. Our Problem
Scaling up meant more developers contributing
to same code bases
Previously 1 developer per codebase
10. Our Process
Master always deployable / not broken
Feature branching off master
Feature branches merged to dev/staging
dev/feature merged to master (release / deploy)
11. What we needed
Private build testing
Cheap or Free (had to prove value to
stakeholders / managers)
Customizable for some pretty uncommon things
(So we thought)
15. Great Atlassian integrations
Utilizes Amazon’s EC2 for build agents
Greater appeal if you’re already using Atlassian
and Amazon products
https://www.atlassian.com/software/bamboo
16. Fully Functional Free Version (Limited Configs &
Build Agents)
Enterprise option (unlimited configs, more build
agents)
Self hosted (Bring your own hardware)
Runs on Windows / OS X / Linux
17. Installation
You’ll need Java installed
Configure Database (or use internal TeamCity)
Just want to poke around a bit?
https://github.com/curzona/vagrant-teamcity
Create Admin Account
47. Quick Note
You can add VCS Roots before or after you create a build configuration.
In our first example we did it before, in this example we did it after.
66. Some CI pain points
You have to duplicate your production
environment within TeamCity / other CI service
Starting out there will be a lot of trial & error
Don’t forget to back up your CI server configs!
67. Payoff is better than
the pain
Quick feedback on commits
Confidence level of your merges is huge
Less time resolving conflicts
Automate your deployments
Advanced build notifications