SlideShare uma empresa Scribd logo
1 de 67
Baixar para ler offline
Continuous Integration
& Continuous Delivery
with OpenSource Tools
Annotated Version
• The grey slides are additional slides added to the
presentation to make it easier to understand on
Slideshare etc.
@kaktusmimi
lihsmi.ch
Inspired by…
Jo
Dani
Paddy
Seb
Daniel
Christiane
Inspiration
• This talk was inspired a lot by the work of my
colleagues at punkt.de
• And a presentation of Sebastian Helzle at FOSSASIA
2014
• http://www.slideshare.net/Sebobo/continuous-
delivery-with-open-source-tools
Motivation
Tests
Version Control
Jenkins
Deployment
Configuration Management
Monitoring
Summary & Further Reading
Server
Developer
Delivery
Motivation
• We want to deliver our Software from Development to
Production
• In small increments
Feedback
Motivation
• As a developer we want to improve constantly
• Build - Measure - Learn is a Mantra for Learning
• Feedback supports Learning
• Continuous Integration and Delivery is a
constant source of Feedback
• The earlier the Feedback - the better
FTP to live Server
Live Server
FTP to test Server
Test Server
FTP to live Server
FTP to test Server
Test Server
FTP to live Server
All developers work on
single Dev Server
instance
FTP to live Server
Dev Server
Live Server
Version Control Build
gitlab triggers
Unit TestsCommit Stage
build succeeds
UI Tests
Acceptance Stage
DB Tests
tests pass
tests pass
Deployment Stage
tests pass
build succeeds
Build locally
Demo Stage
Production Stage
rsync
rsync
git push
Developer
Feedback
Evolution of Software
Delivery
• One developer ships his software to live server using
FTP
• We start to use a Test Server to protect the production
server
• Multiple developers make the scenario more complex
• Introduction of a developer server
• Setup of a sophisticated deployment chain
① Git
First Step Towards Continuous Integration
if you don’t use it yet

USE GIT
Gitlab Server
git pull / push
Developer
Reviewer
Merge / Decline
Feature Branch
Master Branch
Master Feature
git checkout -b feature
pull
!
Merge Request Workflow
• No developer is allowed to directly push to master
• Each developer opens a merge request for a finished
feature
• Any other developer can review the request and merge
it into master
• Provides a first feedback loop!
② Tests
Functional Testing
• Test that your code is working
• Not how it is working
• More black-box testing
• Incorporate your Database
• End-to-End testing
/** @test */

public function createCustomerCreatesExpectedCustomer() {

$this->customerService->createCustomer('4711', 'MickeyMouse');

$this->persistenceManager->persistAll();

$this->assertSame(
'4711',
$this->customerRepository->findAll()->getFirst()->getId()
);

}
Use Integration Tests
• Unit tests might be the wrong tool to test, whether
your application is working
• Integration Tests provide a full stack test that detect
defects easier
Feature: Language menu

In order to switch the language on the website

As a website user

I need to be able to select the language in a menu



Background:

Given I am in "desktop" layout

And I am on "/"



Scenario: Switching the language from english to
german

When I follow "Language"

And I wait for 500 milliseconds

And I follow "Deutsch"

Then I should be on "/de.html"
/**
* Given I am in "desktop" layout

*

* @When I am in :layout layout

*/

public function iResizeTheWindowToLayout($layout) {

if (array_key_exists($layout, $this->screenSizes)) {

$currentLayout = $this->screenSizes[$layout];

$this->getSession()->getDriver()->resizeWindow(

$currentLayout['width'], $currentLayout['height'], 'current');

return TRUE;

}

throw new Exception(sprintf('Layout "%s" not defined', $layout));

}
Frontend Tests with Behat
• Behat Tests provide full-stack tests including the
frontend
• Behat uses easy-to-read language„Gherkin“ for writing
tests
• Selenium is used to run the tests
③ Jenkins
Jenkins
• Java Application
• Can be deployed into Tomcat or Standalone
• Many Plugins available
• Basically a Task Runner
Deployment Stage
* Demo
Deployment
* Production
Deployment
Acceptance Stage
* Functional Tests
* Frontend Tests
Commit Stage
* Clone Repository
* Build Project
* Unit Tests
Triggered

by

Commit
green green
Jenkins Stages
• Commit Stage
• Fast feedback: project builds, unit tests run?
• Acceptance Stage
• Slower tests: Integration tests and Frontend tests
• Deployment Stage
• Responsible for the Deployments to Staging and
Production
TL;DR
Do not „programm“ your
CI / CD tasks in Jenkins -
use scripts and make
them part of your projects!
④ Surf
TYPO3 Surf
• A Remote Server Automation and Deployment Tool
• Written in PHP
• Based on the TYPO3 Flow Framework
• Can be deployed as a Flow Package or Standalone
Deployment Workflow
• Build Locally
• Run Tests
• Ship / Transfer
• Run Smoketests
• Only switch Release if Tests pass
Surf Concepts
$workflow set up HOW to deploy
$node set up WHERE to deploy
$application set up WHAT to deploy
$deployment glue it all together
<?php



$workflow = new TYPO3SurfDomainModelSimpleWorkflow();



$node = new TYPO3SurfDomainModelNode('staging');

$node->setOptions(array(

'username' => '<username>',

'composerCommandPath' => '/usr/local/bin/composer'

));

$node->setHostname($host);



$application = new TYPO3SurfApplicationTYPO3Neos('<project_name>');

$application->setOptions(array(

'repositoryUrl' => '<git_remote_url>',

'keepReleases' => 5,

'packageMethod' => 'git',

'transferMethod' => 'rsync',

'updateMethod' => NULL

));

$application->setDeploymentPath('<deployment_path>');

$application->addNode($node);



$deployment->addApplication($application);



$deployment->onInitialize(function() use ($workflow, $application, $project) {

$workflow->afterStage('migrate', 'codecoon:importContent');

});
/var/apache/XXXXXX/staging/XXXXX/releases$ ls
20141105100124
20141105102935
20141112095924
20141118055114
20141118072225
20141119041835
20141120045634
current -> ./20141119041835
previous -> ./20141118072225
next -> ./20141120045634
/var/apache/XXXXXX$ ls -la
htdocs -> staging/XXXXXX/releases/current/htdocs
⑤ Chef

&Vagrant
Developer Machine / Laptop
vagrant up
Virtual Machine
Workspace
Project 1
chef-solo
Gitlab Server
git
pull / push
ssh
mysql
samba
nfs
samba
nfs
git
ssh
http
http
chef run
ssh
Our Vagrant Approach
* We have VirtualBox and Vagrant running on our laptop
* We start a virtual machine and run Chef inside this machine
* Chef sets up
* Our services (Apache, PHP, MySQL, …)
* Our projects / webspaces
* We can now use our familiar tools to work on our projects
* It feels like „working locally“ although we have a Sandbox
* We cannot crash the host OS when crashing the Dev-Environment
* Think about packages
* Think about different software versions for different projects
* Think about how long it takes to re-install your laptop…
Workspace
Project 1
Workspace
Project 2
Workspace
Project 2
ProvisionProjects
ProvisionJenkinsServer
ConfigureApache
ConfigurePHP
&MySQL
We set up our Projects
on Jenkins
Automatically!!!
Chef & Jenkins
There shall be 2 Chef runs
1. The one that provisions our Jenkins Server [not yet finished…]
2. The one that provisions the projects inside our Jenkins Server
Those Projects are „publicly“ available
* We can use them as „normal“ Website (e.g. for Review and Manual Testing)
* We can run UI tests on them
In the future we want to change this to a master/slave approach.
⑥ Monitoring
Monitoring Stage
• Check for Website to be alive
• Send Notifications
• Email, Jabber, SMS
• Ops: Nagios — Devs: Jenkins
Performance Stage
• Check Realtime Performance of your Website
• Gatling is a great Tool for writing Performance Tests
• Visualize Results on Dashboard
Summary
Version Control Build
gitlab triggers
Unit TestsCommit Stage
build succeeds
UI Tests
Acceptance Stage
DB Tests
tests pass
tests pass
Deployment Stage
tests pass
build succeeds
Build locally
Demo Stage
Production Stage
rsync
rsync
git push
Developer
Feedback
Gitlab Server
Jenkins Server
Workspace
Project 1
Workspace
Project 2
Workspace
Project 2
provision
Selenium Server
http / RESTful Services
Repository
Project 1
Workspace
Project 2
Workspace
Project 3
git shell / ssh
http/UITesting
git clone
Production 1
Webspace
Project 1
Production 2
Webspace
Project 2
Production 3
Webspace
Project 3
ssh / rsync
www.codecoon.com
Make it fun to code again
Check it out
Questions
https://about.gitlab.com/
http://jenkins-ci.org/
https://phpunit.de/
https://www.getchef.com/
https://www.vagrantup.com/
http://www.seleniumhq.org/
http://typo3.org/additional-products/surf
http://www.sourcetreeapp.com/download/
http://dashing.io/
http://gatling.io/
http://www.martinfowler.com/articles/
continuousIntegration.html
http://www.thoughtworks.com/insights
http://david.heinemeierhansson.com/2014/tdd-is-dead-
long-live-testing.html
http://www.rbcs-us.com/documents/Why-Most-Unit-
Testing-is-Waste.pdf
http://www.mind-the-seb.de/blog/codereview-made-
simple.html
https://www.atlassian.com/git/tutorials/comparing-
workflows/forking-workflow
http://nvie.com/posts/a-successful-git-branching-
model/

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Untangling spring week12
Untangling spring week12Untangling spring week12
Untangling spring week12
 
Provisioning environments. A simplistic approach
Provisioning  environments. A simplistic approachProvisioning  environments. A simplistic approach
Provisioning environments. A simplistic approach
 
Production Ready WordPress #WPLDN
Production Ready WordPress #WPLDNProduction Ready WordPress #WPLDN
Production Ready WordPress #WPLDN
 
Git and GitHub for Documentation
Git and GitHub for DocumentationGit and GitHub for Documentation
Git and GitHub for Documentation
 
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
 
Engage 2019 Software documentation is fun if you have the right tools: Introd...
Engage 2019 Software documentation is fun if you have the right tools: Introd...Engage 2019 Software documentation is fun if you have the right tools: Introd...
Engage 2019 Software documentation is fun if you have the right tools: Introd...
 
Docker Best Practices Workshop
Docker Best Practices WorkshopDocker Best Practices Workshop
Docker Best Practices Workshop
 
Continuous Integration at Mollie
Continuous Integration at MollieContinuous Integration at Mollie
Continuous Integration at Mollie
 
Production Ready WordPress - WC Utrecht 2017
Production Ready WordPress  - WC Utrecht 2017Production Ready WordPress  - WC Utrecht 2017
Production Ready WordPress - WC Utrecht 2017
 
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
 
Untangling fall2017 week1
Untangling fall2017 week1Untangling fall2017 week1
Untangling fall2017 week1
 
JUC Europe 2015: Plugin Development with Gradle and Groovy
JUC Europe 2015: Plugin Development with Gradle and GroovyJUC Europe 2015: Plugin Development with Gradle and Groovy
JUC Europe 2015: Plugin Development with Gradle and Groovy
 
JUC Europe 2015: Scaling of Jenkins Pipeline Creation and Maintenance
JUC Europe 2015: Scaling of Jenkins Pipeline Creation and MaintenanceJUC Europe 2015: Scaling of Jenkins Pipeline Creation and Maintenance
JUC Europe 2015: Scaling of Jenkins Pipeline Creation and Maintenance
 
From Virtual Machines to Containers
From Virtual Machines to ContainersFrom Virtual Machines to Containers
From Virtual Machines to Containers
 
JUC Europe 2015: Jenkins Made Easy
JUC Europe 2015: Jenkins Made EasyJUC Europe 2015: Jenkins Made Easy
JUC Europe 2015: Jenkins Made Easy
 
IBM Drupal Users Group Discussion on Managing and Deploying Configuration
IBM Drupal Users Group Discussion on Managing and Deploying ConfigurationIBM Drupal Users Group Discussion on Managing and Deploying Configuration
IBM Drupal Users Group Discussion on Managing and Deploying Configuration
 
Getting Started With Jenkins And Drupal
Getting Started With Jenkins And DrupalGetting Started With Jenkins And Drupal
Getting Started With Jenkins And Drupal
 
Working in Harmony: Manchester - Optimize development and content workflows
Working in Harmony: Manchester - Optimize development and content workflowsWorking in Harmony: Manchester - Optimize development and content workflows
Working in Harmony: Manchester - Optimize development and content workflows
 
Jenkins Reviewbot
Jenkins ReviewbotJenkins Reviewbot
Jenkins Reviewbot
 
JUC Europe 2015: Enabling Continuous Delivery for Major Retailers
JUC Europe 2015: Enabling Continuous Delivery for Major RetailersJUC Europe 2015: Enabling Continuous Delivery for Major Retailers
JUC Europe 2015: Enabling Continuous Delivery for Major Retailers
 

Destaque

Gatling Tool in Action at Devoxx 2012
Gatling Tool in Action at Devoxx 2012Gatling Tool in Action at Devoxx 2012
Gatling Tool in Action at Devoxx 2012
slandelle
 

Destaque (10)

Continuous performance: Load testing for developers with gatling
Continuous performance: Load testing for developers with gatlingContinuous performance: Load testing for developers with gatling
Continuous performance: Load testing for developers with gatling
 
Automated Testing Talk from Meet Magento New York 2014
Automated Testing Talk from Meet Magento New York 2014Automated Testing Talk from Meet Magento New York 2014
Automated Testing Talk from Meet Magento New York 2014
 
Gatling Tool in Action at DevoxxFR 2012
Gatling Tool in Action at DevoxxFR 2012Gatling Tool in Action at DevoxxFR 2012
Gatling Tool in Action at DevoxxFR 2012
 
TestWorks Conf Performance testing made easy with gatling - Guillaume Corré
TestWorks Conf Performance testing made easy with gatling - Guillaume CorréTestWorks Conf Performance testing made easy with gatling - Guillaume Corré
TestWorks Conf Performance testing made easy with gatling - Guillaume Corré
 
Las palmas devops: Pruebas de carga web
Las palmas devops: Pruebas de carga webLas palmas devops: Pruebas de carga web
Las palmas devops: Pruebas de carga web
 
Gatling Tool in Action at Devoxx 2012
Gatling Tool in Action at Devoxx 2012Gatling Tool in Action at Devoxx 2012
Gatling Tool in Action at Devoxx 2012
 
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014Démo Gatling au Performance User Group de Casablanca - 25 sept 2014
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014
 
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
 
Customer Scale: Stateless Sessions and Managing High-Volume Digital Services
Customer Scale: Stateless Sessions and Managing High-Volume Digital ServicesCustomer Scale: Stateless Sessions and Managing High-Volume Digital Services
Customer Scale: Stateless Sessions and Managing High-Volume Digital Services
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
 

Semelhante a TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools

Continuous deployment steve povilaitis
Continuous deployment   steve povilaitisContinuous deployment   steve povilaitis
Continuous deployment steve povilaitis
Steve Povilaitis
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
Howard Greenberg
 

Semelhante a TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools (20)

varun JENKINS.pptx
varun JENKINS.pptxvarun JENKINS.pptx
varun JENKINS.pptx
 
Jenkins_1679702972.pdf
Jenkins_1679702972.pdfJenkins_1679702972.pdf
Jenkins_1679702972.pdf
 
jenkins.pdf
jenkins.pdfjenkins.pdf
jenkins.pdf
 
Continuous feature-development
Continuous feature-developmentContinuous feature-development
Continuous feature-development
 
Hudson
HudsonHudson
Hudson
 
Continuous deployment steve povilaitis
Continuous deployment   steve povilaitisContinuous deployment   steve povilaitis
Continuous deployment steve povilaitis
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
 
Dev/Test scenarios in DevOps world
Dev/Test scenarios in DevOps worldDev/Test scenarios in DevOps world
Dev/Test scenarios in DevOps world
 
Continuous Integration, Deploy, Test From Beginning To End 2014
Continuous Integration, Deploy, Test From Beginning To End 2014Continuous Integration, Deploy, Test From Beginning To End 2014
Continuous Integration, Deploy, Test From Beginning To End 2014
 
Test automation proposal
Test automation proposalTest automation proposal
Test automation proposal
 
Production ready word press
Production ready word pressProduction ready word press
Production ready word press
 
Continous integration and delivery for single page applications
Continous integration and delivery for single page applicationsContinous integration and delivery for single page applications
Continous integration and delivery for single page applications
 
Devops
DevopsDevops
Devops
 
Continuous Delivery Using Jenkins
Continuous Delivery Using JenkinsContinuous Delivery Using Jenkins
Continuous Delivery Using Jenkins
 
Louisville Software Engineering Meet Up: Continuous Integration Using Jenkins
Louisville Software Engineering Meet Up: Continuous Integration Using JenkinsLouisville Software Engineering Meet Up: Continuous Integration Using Jenkins
Louisville Software Engineering Meet Up: Continuous Integration Using Jenkins
 
Continuous Delivery Agiles 2014 Medellin
Continuous Delivery Agiles 2014 MedellinContinuous Delivery Agiles 2014 Medellin
Continuous Delivery Agiles 2014 Medellin
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkins
 
JavaOne 2016 - CON3080 - Testing Java Web Applications with Selenium: A Cookbook
JavaOne 2016 - CON3080 - Testing Java Web Applications with Selenium: A CookbookJavaOne 2016 - CON3080 - Testing Java Web Applications with Selenium: A Cookbook
JavaOne 2016 - CON3080 - Testing Java Web Applications with Selenium: A Cookbook
 
Contineous integration
Contineous integrationContineous integration
Contineous integration
 
Jenkins Meetup Pune
Jenkins Meetup PuneJenkins Meetup Pune
Jenkins Meetup Pune
 

Mais de Michael Lihs

Mais de Michael Lihs (6)

Vagrant, Chef and TYPO3 - A Love Affair
Vagrant, Chef and TYPO3 - A Love AffairVagrant, Chef and TYPO3 - A Love Affair
Vagrant, Chef and TYPO3 - A Love Affair
 
Test-Driven Infrastructure with Chef
Test-Driven Infrastructure with ChefTest-Driven Infrastructure with Chef
Test-Driven Infrastructure with Chef
 
Docker
DockerDocker
Docker
 
Codecoon - A technical Case Study
Codecoon - A technical Case StudyCodecoon - A technical Case Study
Codecoon - A technical Case Study
 
DevOps Meeting Karlsruhe, 13.11.2014
DevOps Meeting Karlsruhe, 13.11.2014DevOps Meeting Karlsruhe, 13.11.2014
DevOps Meeting Karlsruhe, 13.11.2014
 
Vagrant and Chef on FOSSASIA 2014
Vagrant and Chef on FOSSASIA 2014Vagrant and Chef on FOSSASIA 2014
Vagrant and Chef on FOSSASIA 2014
 

Último

CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 

Último (20)

Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...
 

TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools