continuous integration - cdn.cs50.net · travis ci travis-ci.com anna nagy [email protected] ||...
TRANSCRIPT
![Page 2: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/2.jpg)
![Page 3: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/3.jpg)
![Page 4: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/4.jpg)
GitHub Education Pack → education.github.com/pack clubs/organizations → email: [email protected]
background info docs:
docs.travis-ci.com/user/for-beginners docs.travis-ci.com/user/getting-started
education.travis-ci.com
![Page 5: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/5.jpg)
(polyglot summer fellowship for womxn/nb engineers) foundation.travis-ci.org
railsgirlssummerofcode.org
![Page 6: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/6.jpg)
Some stats…
![Page 7: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/7.jpg)
1.3M repos
![Page 8: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/8.jpg)
380M CI jobs
![Page 9: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/9.jpg)
168 years of CI jobs/month
![Page 10: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/10.jpg)
About CI…
![Page 11: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/11.jpg)
What happens when you write a big chunk of code, and try to fit it to a codebase all at once?
… you know how this ends.
Story Time!
![Page 12: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/12.jpg)
Integration == adding code to a codebase
Continuous Integration
![Page 13: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/13.jpg)
Integration == adding code to a codebase
Continuous == Doing that thing over and over - maybe, like, without a break in cadence
Continuous Integration
![Page 14: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/14.jpg)
(1) the engineering process of merging code as it is written (2) the automation system that compiles and tests code
Phrase Overloading
![Page 15: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/15.jpg)
Testing in Industry…
![Page 16: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/16.jpg)
Write your tests.
Code is Tested
![Page 17: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/17.jpg)
Automated vs. Manual
Functional vs. Non-Functional Test
Types of Tests
![Page 18: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/18.jpg)
A machine follows a script to verify an “assertion” These are part of a codebase, and run in CI
Automated Tests
![Page 19: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/19.jpg)
…tests a specific functionality (or several) of the system “does this element meet the requirements that it is supposed to meet?”
Unit tests, integration tests, end-to-end tests
Functional Tests
![Page 20: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/20.jpg)
![Page 21: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/21.jpg)
Unit Test Example
![Page 22: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/22.jpg)
Here’s some code:
markdownImageString(repo, branch) { const url = this.repositoryUrl(repo); const imageUrl = this.imageUrl(repo, branch); return `[![Build Status](${imageUrl})](${url})`; }
![Page 23: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/23.jpg)
Here’s a unit test:
test('it generates a Markdown image string with a repo and a branch', function (assert) { const service = this.owner.lookup(
'service:status-images'); const markdown = service.markdownImageString( this.repo, branch);
assert.equal(markdown, `[![Build Status](${root}/travis-ci/travis- web.svg?branch=primary)](${secureRoot}/ travis-ci/travis-web)`); });
![Page 24: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/24.jpg)
we know the method is still doing what it is supposed to be doing!
If this test passes…
![Page 25: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/25.jpg)
Positives - things work as they should be working Contrapositives - things fail as they should be failing
Goal: maintain logic + integrity of the application
What to test for…
![Page 26: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/26.jpg)
Software Engineering is done in teams
![Page 27: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/27.jpg)
Builds & Building…
![Page 28: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/28.jpg)
compile/convert this source code into something runnable
Verb
![Page 29: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/29.jpg)
xkcd, 303 - you’ve prob seen this one :)
![Page 30: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/30.jpg)
the end result of a build process
Noun
![Page 31: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/31.jpg)
![Page 32: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/32.jpg)
![Page 33: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/33.jpg)
Why CI Systems?
![Page 34: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/34.jpg)
“Works on my machine”
![Page 35: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/35.jpg)
Clean environments, everyone has the same environment
Reproducibility
![Page 36: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/36.jpg)
Test in an environment that matches your production environment!
… and does not have all your helper scripts and dependencies
Tidy Deploys
![Page 37: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/37.jpg)
Improved confidence in code + PRs Projects with CI release twice as often, PR acceptance is 1.6 hours sooner
cope.eecs.oregonstate.edu/CISurvey
Faster Development
![Page 38: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/38.jpg)
Code Coverage, Linting, Language Runtimes Dependency Management , Config Management
Deployment, Container-Building (deployment environments) Documentation Generation, Demo Generation
Automate all the things!
![Page 39: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/39.jpg)
CD needs CI - “is this code deployable now?”/“deploy all changes to the code?”
… tests are really important to this
CICD
![Page 40: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/40.jpg)
Some Examples
![Page 41: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/41.jpg)
![Page 42: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/42.jpg)
github.com/cs50/manual50/blob/master/.travis.yml
language: ruby rvm: 2.2 cache: bundler script: bundle exec jekyll build deploy: provider: elasticbeanstalk edge: source: cs50/dpl force_update: true access_key_id: "$AWS_ACCESS_KEY_ID" secret_access_key: "$AWS_SECRET_ACCESS_KEY" region: us-east-1 app: manual50 env: manual50 bucket_name: travis50 on: branch: master slack: secure: $long_token
![Page 43: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/43.jpg)
![Page 44: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/44.jpg)
github.com/travis-ci/travis-build/blob/master/.travis.yml
before_script: - bundle exec rake clean assets:precompile script: - bundle exec rake spec - ./script/validate-bash-syntax after_success: bundle exec codeclimate-test-reporter before_deploy: ruby script/build_s3_index_html.rb
![Page 45: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/45.jpg)
Demo
![Page 46: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/46.jpg)
In Review…
![Page 47: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/47.jpg)
Turn this code into something runnable, then run these tests and see what we get Historical builds become a kind of semi-living audit-log for tests
Code Quality & Reliability
Builds & Testing
![Page 48: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/48.jpg)
Software Engineering teams use CI systems to build and test code as it is changed
CI also functions as a kind of automation hub - notifications, artifacts uploading, deployment
CD - Continuous Delivery/Deployment: “could this be deployed at any step?” vs. “is this deployed at every step?”
CICD in the Wild
![Page 49: Continuous Integration - cdn.cs50.net · Travis CI travis-ci.com Anna Nagy anna@travis-ci.com || @acnagy Continuous Integration & Why You Care](https://reader033.vdocuments.site/reader033/viewer/2022052001/6013f99a1fc99d2d6c758aa2/html5/thumbnails/49.jpg)
Travis CI travis-ci.com
Anna Nagy [email protected] || @acnagy
Questions?Thank you!
education.travis-ci.com