Integrating software
An introduction
Integration, etc.
Software
Software life-cycle
Adjacent activities
Software
What makes software?
The problem it solves
The code
There's more to software
Software
?
Code it
Run it
Profit
Software
Ohnoe bugs
Fix it
Run it
Profit
Software
Version control
git
GitHub, GitLab, BitBucket
Code -> Code repository
Building
Compiling
Unit tests
Other resources
Building
Build server
Clones the code repository
Compiles the code
Runs the unit tests
Creates the executable (artifact)
Building
Build server
TeamCity, Jenkins
Building
Executable
Artifact repository
All the versions
Artifact repository
Plain filesystem, FTP
Dedicated server
Artifactory, JFrog, NuGet, etc.
Executable -> Artifact repository
Collaboration
Collaborate on it?
Make sure it works?
Distribute it?
Collaboration
More people => more fun
More code => more complexity
Integration
Get everybody's work together
Pull Requests
Code review
Continuous Integration (CI)
Integrate often
Automate as much as possible
Unit tests
Testing
Unit tests
Integration tests
Other types of tests
Testing
Development team
Testing team
Different needs
Testing
Separate environment
Safe
OK to
break stuff
Artifact repository -> Environments
Environments
Isolated
Whole system
Specific
Environments
DEV
Development, testing
Full speed ahead!
Safe
Breaking things is OK
Environments
ACC
Acceptance, staging
Less breakage
Breaking things is still OK
Fix things immediately
Environments
PROD
Production, live
Tread lightly
$$$
Environments
ENV VARs
Configuration
Connection strings, accounts, IPs
Only difference
Deployment
Install the software
Download executable
Configure server
Etc
ENV_VARs -> Environments
Hm
Made with Slides.com