An introduction to Atlassian Bitbucket PipelinesDave Clark
Slides from the session at the October 2016 Sydney Docker meet up. Group event page: https://www.meetup.com/Sydney-Docker-User-Group/events/234458971/
The purpose of the session was to introduce attendees to building, testing and deploying using Docker containers via Bitbucket Pipelines.
I have evidence that using git and GitHub for documentation and community doc techniques can give us 300 doc changes in a month. I’ve bet my career on these methods and I want to share with you.
In one of our weekly training, we’ve talked about Git. Here is a quick overview of the main concepts, basic commands and branching strategy, how to work with Git, how to contribute to an OSS project, …
An introduction to Atlassian Bitbucket PipelinesDave Clark
Slides from the session at the October 2016 Sydney Docker meet up. Group event page: https://www.meetup.com/Sydney-Docker-User-Group/events/234458971/
The purpose of the session was to introduce attendees to building, testing and deploying using Docker containers via Bitbucket Pipelines.
I have evidence that using git and GitHub for documentation and community doc techniques can give us 300 doc changes in a month. I’ve bet my career on these methods and I want to share with you.
In one of our weekly training, we’ve talked about Git. Here is a quick overview of the main concepts, basic commands and branching strategy, how to work with Git, how to contribute to an OSS project, …
A hands-on workshop that covers 18 best practices in 4 categories or in other words ✅️ Dos & Don'ts.
After a general introduction, we will have a look at the essential practices (aka must do), then move to the image practices, then we will go through the security practices, and finally, some general practices.
Please note, this workshop assumes that you have a basic knowledge of Docker.
Hands-on repo:
https://github.com/aabouzaid/docker-best-practices-workshop
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)Per Henrik Lausten
See my blog post about the presentation:
http://per.lausten.dk/blog/2012/11/source-control-with-domino-designer-8-5-3-and-git-my-talk-at-dannotes-november-2012.html
Artūrs Liepiņš from Accenture Latvia will talk about the cloud-hosted Continuous Integration service Travis CI – its strengths and weaknesses and how it compares to more traditional tools like Jenkins. The presentation will showcase automated building, testing and deployment to various services, including a live sample application going through these phases. Also, some promising alternative solutions will be introduced.
Artūrs Liepiņš is a young DevOps engineer exploring the latest and greatest in automation, virtualization and cloud technologies.
From Arm to Z: Building, Shipping, and Running a Multi-platform Docker Swarm ...Docker, Inc.
We live in a multi-platform world, and who doesn't want their project to run on all of them? The last few DockerCon events have covered the introduction of multi-platform image capabilities into the Docker registry and engine releases. Now it's time to put these features to good use building applications across architectures and running them all in a heterogeneous Docker Swarm! In this talk we'll cover the new `docker manifest` command for making multi-architecture images; how to emulate architectures in docker containers on your own machine; and give a live demonstration of these capabilities with a Docker Swarm consisting of workers of different CPU architectures, including armhf, ppc64le, s390x, and x86_64. We'll also share some pointers for making sure your project is multi-platform ready! Three Takeaways: 1. Attendees will be introduced to manifest lists and how to create multi-arch images using the new 'docker manifest' command. 2. Attendees will learn how to easily create and deploy a basic multi-arch service using multi-platform images. 3. Bonus: Attendees will learn how to run non-native docker containers on their systems.
At Tuenti, we do two code pushes per week, sometimes modifying thousands of files and running thousands of automated tests and build operations before, to ensure not only that the code works but also that proper localization is applied, bundles are generated and files get deployed to hundreds of servers as fast and reliable as possible.
We use opensource tools like Mercurial, MySQL, Jenkins, Selenium, PHPUnit and Rsync among our own in-house ones, and have different development, testing, staging and production environments.
We had to fight with problems like statics bundling and versioning, syntax errors and of course the fact that we have +100 engineers working on the codebase, sometimes merging and releasing more than a dozen branches the same day. We also switched from Subversion to Mercurial to obtain more flexibility and faster branching operations.
With this talk we will explain the process of how code changes in ourcode repository end up in live code, detailing some practices and tips that we apply.
Jenkins Pipeline @ Scale. Building Automation Frameworks for Systems IntegrationOleg Nenashev
This is a follow-up presentation to my talk at CloudBees | Jenkins Automotive and Embedded Day 2016, where I was presenting Pipeline usage strategies for use-cases in the Embedded area. In this presentation I talk about Jenkins Pipeline features for automation frameworks and talk about lessons learned in several project.
Jenkins is an open source automation server written in Java. Jenkins helps to automate the non-human part of the software development process, with continuous integration and facilitating technical aspects of continuous delivery. It is a server-based system that runs in servlet containers such as Apache Tomcat.
Jenkins is a Continuous Integration tool to manage your environment that fires off jobs like cron or when a button is pushed. This talk will walk you through setting up a Jenkins site, complete with slave nodes on the servers doing the real work, and some simple jobs to get a feel for what it can do for you.
Real life examples included based on an actual migration between data centers requiring Jenkins had to be installed fresh.
This talk has been presented at:
2016-08-20 in Philadelphia
- https://fosscon.us/
2016-08-26 in Cluj-Napoca, Romania
- http://act.yapc.eu/ye2016/talk/6751
- https://youtu.be/Nj84bBCssps
Presentation delivered by Darran Lofthouse, Principal Software Engineer, Red Hat & Kabir Khan, Principal Software Engineer, Red Hat, during London JBoss User Group event on the 21st of May 2014.
Seven Habits of Highly Effective Jenkins Users (2014 edition!)Andrew Bayer
What plugins, tools and behaviors can help you get the most out of your Jenkins setup without all of the pain? We'll find out as we go over a set of Jenkins power tools, habits and best practices that will help with any Jenkins setup.
A hands-on workshop that covers 18 best practices in 4 categories or in other words ✅️ Dos & Don'ts.
After a general introduction, we will have a look at the essential practices (aka must do), then move to the image practices, then we will go through the security practices, and finally, some general practices.
Please note, this workshop assumes that you have a basic knowledge of Docker.
Hands-on repo:
https://github.com/aabouzaid/docker-best-practices-workshop
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)Per Henrik Lausten
See my blog post about the presentation:
http://per.lausten.dk/blog/2012/11/source-control-with-domino-designer-8-5-3-and-git-my-talk-at-dannotes-november-2012.html
Artūrs Liepiņš from Accenture Latvia will talk about the cloud-hosted Continuous Integration service Travis CI – its strengths and weaknesses and how it compares to more traditional tools like Jenkins. The presentation will showcase automated building, testing and deployment to various services, including a live sample application going through these phases. Also, some promising alternative solutions will be introduced.
Artūrs Liepiņš is a young DevOps engineer exploring the latest and greatest in automation, virtualization and cloud technologies.
From Arm to Z: Building, Shipping, and Running a Multi-platform Docker Swarm ...Docker, Inc.
We live in a multi-platform world, and who doesn't want their project to run on all of them? The last few DockerCon events have covered the introduction of multi-platform image capabilities into the Docker registry and engine releases. Now it's time to put these features to good use building applications across architectures and running them all in a heterogeneous Docker Swarm! In this talk we'll cover the new `docker manifest` command for making multi-architecture images; how to emulate architectures in docker containers on your own machine; and give a live demonstration of these capabilities with a Docker Swarm consisting of workers of different CPU architectures, including armhf, ppc64le, s390x, and x86_64. We'll also share some pointers for making sure your project is multi-platform ready! Three Takeaways: 1. Attendees will be introduced to manifest lists and how to create multi-arch images using the new 'docker manifest' command. 2. Attendees will learn how to easily create and deploy a basic multi-arch service using multi-platform images. 3. Bonus: Attendees will learn how to run non-native docker containers on their systems.
At Tuenti, we do two code pushes per week, sometimes modifying thousands of files and running thousands of automated tests and build operations before, to ensure not only that the code works but also that proper localization is applied, bundles are generated and files get deployed to hundreds of servers as fast and reliable as possible.
We use opensource tools like Mercurial, MySQL, Jenkins, Selenium, PHPUnit and Rsync among our own in-house ones, and have different development, testing, staging and production environments.
We had to fight with problems like statics bundling and versioning, syntax errors and of course the fact that we have +100 engineers working on the codebase, sometimes merging and releasing more than a dozen branches the same day. We also switched from Subversion to Mercurial to obtain more flexibility and faster branching operations.
With this talk we will explain the process of how code changes in ourcode repository end up in live code, detailing some practices and tips that we apply.
Jenkins Pipeline @ Scale. Building Automation Frameworks for Systems IntegrationOleg Nenashev
This is a follow-up presentation to my talk at CloudBees | Jenkins Automotive and Embedded Day 2016, where I was presenting Pipeline usage strategies for use-cases in the Embedded area. In this presentation I talk about Jenkins Pipeline features for automation frameworks and talk about lessons learned in several project.
Jenkins is an open source automation server written in Java. Jenkins helps to automate the non-human part of the software development process, with continuous integration and facilitating technical aspects of continuous delivery. It is a server-based system that runs in servlet containers such as Apache Tomcat.
Jenkins is a Continuous Integration tool to manage your environment that fires off jobs like cron or when a button is pushed. This talk will walk you through setting up a Jenkins site, complete with slave nodes on the servers doing the real work, and some simple jobs to get a feel for what it can do for you.
Real life examples included based on an actual migration between data centers requiring Jenkins had to be installed fresh.
This talk has been presented at:
2016-08-20 in Philadelphia
- https://fosscon.us/
2016-08-26 in Cluj-Napoca, Romania
- http://act.yapc.eu/ye2016/talk/6751
- https://youtu.be/Nj84bBCssps
Presentation delivered by Darran Lofthouse, Principal Software Engineer, Red Hat & Kabir Khan, Principal Software Engineer, Red Hat, during London JBoss User Group event on the 21st of May 2014.
Seven Habits of Highly Effective Jenkins Users (2014 edition!)Andrew Bayer
What plugins, tools and behaviors can help you get the most out of your Jenkins setup without all of the pain? We'll find out as we go over a set of Jenkins power tools, habits and best practices that will help with any Jenkins setup.
Ever wondered about the new Cloud offerings out there? What is a PaaS? What is this thing called OpenShift?
Whether your business is running on applications based on Java EE6, PHP or Ruby, the cloud is turning out to be the perfect environment for developing your business. There are plenty of clouds and platform-as-a-services to choose from, but where to start?
Join us for an action-packed hour of power where we'll show you how to deploy your existing application written in the language of your choice - Java, Ruby, PHP, Perl or Python, with the framework of your choice - EE6, CDI, Seam, Spring, Zend, Cake, Rails, Sinatra, PerlDancer or Django to the OpenShift PaaS in just minutes. All this and without having to rewrite your app to get it to work the way the cloud provider thinks your app should work.
You can have your business applications running in the cloud on OpenShift Express in seconds, while also making use of the web browser do the heavy-lifting of provisioning clusters, deploying, monitoring and auto-scaling apps in OpenShift Flex.
If you want to learn about OpenShift PaaS and see how investing 45 mins of your time can change everything you thought you knew about putting your business applications in the cloud, this session is for you!
Spenser Reinhardt's presentation on Detecting Security Breaches With Docker, Honeypots, & Nagios.
The presentation was given during the Nagios World Conference North America held Oct 13th - Oct 16th, 2014 in Saint Paul, MN. For more information on the conference (including photos and videos), visit: http://go.nagios.com/conference
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Michael Lihs
Presentation about open source tools to set up continuous integration and continuous deployment. Covers Git, Gitlab, Chef, Vagrant, Jenkins, Gatling, Dashing, TYPO3 Surf and some other tools. Shows some best practices for testing with Behat and Functional Testing.
In recent years there has been a tremendous amount of progress and innovation around tools and applications available to web developers that improve the quality, efficiency and speed of our applications, and it is hard to keep up with all of it.
In the modern era, software is commonly delivered as a service: called web apps, or software-as-a-service. The twelve-factor app is a methodology for building software-as-a-service apps that:
Use declarative formats for setup automation, to minimize time and cost for new developers joining the project;Have a clean contract with the underlying operating system, offering maximum portability between execution environments;Are suitable for deployment on modern cloud platforms, obviating the need for servers and systems administration;Minimize divergence between development and production, enabling continuous deployment for maximum agility;And can scale up without significant changes to tooling, architecture, or development practices.
The twelve-factor methodology can be applied to apps written in any programming language, and which use any combination of backing services (database, queue, memory cache, etc).
Whether you're a seasoned Java developer looking to start hacking on EE6 or you just wrote your first line of Ruby yesterday, the cloud is perfect for developing apps in any modern language or framework. Join us for an action-packed hour of power where we'll show you how to deploy an application written in a language of your choice - Java, Ruby, PHP, Perl or Python, with a framework of your choice - EE6, CDI, Seam, Zend, Rails, Sinatra, PerlDancer or Django to the OpenShift PaaS in just minutes. Use the following promotional code when signing up to try out OpenShift: CODEMOTION
- What's Software Deployment
- A Minimal Python Web Application
- Trouble Shoot
- Interface between Web Server and Application
- Standardization/Automation/Monitoring/Availability
OpenShift Primer - get your business into the Cloud today!Eric D. Schabell
Whether your business is running on applications based on Java EE6, PHP or Ruby, the cloud is turning out to be the perfect environment for developing your business.
There are plenty of clouds and platform-as-a-services to choose from, but where to start? Join us for an action-packed hour of power where we'll show you how to deploy your existing application written in the language of your choice - Java, Ruby, PHP, Perl or Python, with the framework of your choice - EE6, CDI, Seam, Spring, Zend, Cake, Rails, Sinatra, PerlDancer or Django to the OpenShift PaaS in just minutes.
All this and without having to rewrite your app to get it to work the way the cloud provider thinks your app should work.
You can have your business applications running in the cloud on OpenShift Express in seconds, while also making use of the web browser do the heavy-lifting of provisioning clusters, deploying, monitoring and auto-scaling apps in OpenShift Flex.
If you want to learn how the OpenShift PaaS and investing an hour of your time can change everything you thought you knew about putting your business applications in the cloud, this session is for you!
Understanding Globus Data Transfers with NetSageGlobus
NetSage is an open privacy-aware network measurement, analysis, and visualization service designed to help end-users visualize and reason about large data transfers. NetSage traditionally has used a combination of passive measurements, including SNMP and flow data, as well as active measurements, mainly perfSONAR, to provide longitudinal network performance data visualization. It has been deployed by dozens of networks world wide, and is supported domestically by the Engagement and Performance Operations Center (EPOC), NSF #2328479. We have recently expanded the NetSage data sources to include logs for Globus data transfers, following the same privacy-preserving approach as for Flow data. Using the logs for the Texas Advanced Computing Center (TACC) as an example, this talk will walk through several different example use cases that NetSage can answer, including: Who is using Globus to share data with my institution, and what kind of performance are they able to achieve? How many transfers has Globus supported for us? Which sites are we sharing the most data with, and how is that changing over time? How is my site using Globus to move data internally, and what kind of performance do we see for those transfers? What percentage of data transfers at my institution used Globus, and how did the overall data transfer performance compare to the Globus users?
A Comprehensive Look at Generative AI in Retail App Testing.pdfkalichargn70th171
Traditional software testing methods are being challenged in retail, where customer expectations and technological advancements continually shape the landscape. Enter generative AI—a transformative subset of artificial intelligence technologies poised to revolutionize software testing.
Enhancing Research Orchestration Capabilities at ORNL.pdfGlobus
Cross-facility research orchestration comes with ever-changing constraints regarding the availability and suitability of various compute and data resources. In short, a flexible data and processing fabric is needed to enable the dynamic redirection of data and compute tasks throughout the lifecycle of an experiment. In this talk, we illustrate how we easily leveraged Globus services to instrument the ACE research testbed at the Oak Ridge Leadership Computing Facility with flexible data and task orchestration capabilities.
Unleash Unlimited Potential with One-Time Purchase
BoxLang is more than just a language; it's a community. By choosing a Visionary License, you're not just investing in your success, you're actively contributing to the ongoing development and support of BoxLang.
top nidhi software solution freedownloadvrstrong314
This presentation emphasizes the importance of data security and legal compliance for Nidhi companies in India. It highlights how online Nidhi software solutions, like Vector Nidhi Software, offer advanced features tailored to these needs. Key aspects include encryption, access controls, and audit trails to ensure data security. The software complies with regulatory guidelines from the MCA and RBI and adheres to Nidhi Rules, 2014. With customizable, user-friendly interfaces and real-time features, these Nidhi software solutions enhance efficiency, support growth, and provide exceptional member services. The presentation concludes with contact information for further inquiries.
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxrickgrimesss22
Discover the essential features to incorporate in your Winzo clone app to boost business growth, enhance user engagement, and drive revenue. Learn how to create a compelling gaming experience that stands out in the competitive market.
In software engineering, the right architecture is essential for robust, scalable platforms. Wix has undergone a pivotal shift from event sourcing to a CRUD-based model for its microservices. This talk will chart the course of this pivotal journey.
Event sourcing, which records state changes as immutable events, provided robust auditing and "time travel" debugging for Wix Stores' microservices. Despite its benefits, the complexity it introduced in state management slowed development. Wix responded by adopting a simpler, unified CRUD model. This talk will explore the challenges of event sourcing and the advantages of Wix's new "CRUD on steroids" approach, which streamlines API integration and domain event management while preserving data integrity and system resilience.
Participants will gain valuable insights into Wix's strategies for ensuring atomicity in database updates and event production, as well as caching, materialization, and performance optimization techniques within a distributed system.
Join us to discover how Wix has mastered the art of balancing simplicity and extensibility, and learn how the re-adoption of the modest CRUD has turbocharged their development velocity, resilience, and scalability in a high-growth environment.
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Globus
Large Language Models (LLMs) are currently the center of attention in the tech world, particularly for their potential to advance research. In this presentation, we'll explore a straightforward and effective method for quickly initiating inference runs on supercomputers using the vLLM tool with Globus Compute, specifically on the Polaris system at ALCF. We'll begin by briefly discussing the popularity and applications of LLMs in various fields. Following this, we will introduce the vLLM tool, and explain how it integrates with Globus Compute to efficiently manage LLM operations on Polaris. Attendees will learn the practical aspects of setting up and remotely triggering LLMs from local machines, focusing on ease of use and efficiency. This talk is ideal for researchers and practitioners looking to leverage the power of LLMs in their work, offering a clear guide to harnessing supercomputing resources for quick and effective LLM inference.
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...informapgpstrackings
Keep tabs on your field staff effortlessly with Informap Technology Centre LLC. Real-time tracking, task assignment, and smart features for efficient management. Request a live demo today!
For more details, visit us : https://informapuae.com/field-staff-tracking/
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Mind IT Systems
Healthcare providers often struggle with the complexities of chronic conditions and remote patient monitoring, as each patient requires personalized care and ongoing monitoring. Off-the-shelf solutions may not meet these diverse needs, leading to inefficiencies and gaps in care. It’s here, custom healthcare software offers a tailored solution, ensuring improved care and effectiveness.
Navigating the Metaverse: A Journey into Virtual Evolution"Donna Lenk
Join us for an exploration of the Metaverse's evolution, where innovation meets imagination. Discover new dimensions of virtual events, engage with thought-provoking discussions, and witness the transformative power of digital realms."
Accelerate Enterprise Software Engineering with PlatformlessWSO2
Key takeaways:
Challenges of building platforms and the benefits of platformless.
Key principles of platformless, including API-first, cloud-native middleware, platform engineering, and developer experience.
How Choreo enables the platformless experience.
How key concepts like application architecture, domain-driven design, zero trust, and cell-based architecture are inherently a part of Choreo.
Demo of an end-to-end app built and deployed on Choreo.
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus
As part of the DOE Integrated Research Infrastructure (IRI) program, NERSC at Lawrence Berkeley National Lab and ALCF at Argonne National Lab are working closely with General Atomics on accelerating the computing requirements of the DIII-D experiment. As part of the work the team is investigating ways to speedup the time to solution for many different parts of the DIII-D workflow including how they run jobs on HPC systems. One of these routes is looking at Globus Compute as a way to replace the current method for managing tasks and we describe a brief proof of concept showing how Globus Compute could help to schedule jobs and be a tool to connect compute at different facilities.
May Marketo Masterclass, London MUG May 22 2024.pdfAdele Miller
Can't make Adobe Summit in Vegas? No sweat because the EMEA Marketo Engage Champions are coming to London to share their Summit sessions, insights and more!
This is a MUG with a twist you don't want to miss.
Code reviews are vital for ensuring good code quality. They serve as one of our last lines of defense against bugs and subpar code reaching production.
Yet, they often turn into annoying tasks riddled with frustration, hostility, unclear feedback and lack of standards. How can we improve this crucial process?
In this session we will cover:
- The Art of Effective Code Reviews
- Streamlining the Review Process
- Elevating Reviews with Automated Tools
By the end of this presentation, you'll have the knowledge on how to organize and improve your code review proces
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Anthony Dahanne
Les Buildpacks existent depuis plus de 10 ans ! D’abord, ils étaient utilisés pour détecter et construire une application avant de la déployer sur certains PaaS. Ensuite, nous avons pu créer des images Docker (OCI) avec leur dernière génération, les Cloud Native Buildpacks (CNCF en incubation). Sont-ils une bonne alternative au Dockerfile ? Que sont les buildpacks Paketo ? Quelles communautés les soutiennent et comment ?
Venez le découvrir lors de cette session ignite
Cyaniclab : Software Development Agency Portfolio.pdfCyanic lab
CyanicLab, an offshore custom software development company based in Sweden,India, Finland, is your go-to partner for startup development and innovative web design solutions. Our expert team specializes in crafting cutting-edge software tailored to meet the unique needs of startups and established enterprises alike. From conceptualization to execution, we offer comprehensive services including web and mobile app development, UI/UX design, and ongoing software maintenance. Ready to elevate your business? Contact CyanicLab today and let us propel your vision to success with our top-notch IT solutions.
2. About
Leonid Mamchenkov
● System administrator, web developer
● 20+ years of experience
■ Primetel
■ FxPro
■ Easy Forex
■ Qobo
● Open Source fan and advocate
■ Linux (Fedora, CentOS, Red Hat)
■ PHP (bash, perl)
■ MySQL
■ Nginx
■ Git
■ Vim
Qobo Ltd
● Established in February 2013
● Offices in Nicosia, Limassol, London
● Web design, development, hosting
■ WordPress
■ WooCommerce
■ Amazon AWS
● Software development
■ CakePHP
■ Qobrix Platform
■ CRM Systems
■ Intranets
■ Portals
■ Integrations
3. What is deployment?
Application
● Code (HTML, CSS, JavaScript, PHP)
● Assets (images, fonts)
● Configuration (credentials, defaults, runtime)
● Database (schema, content)
Infrastructure
● Hardware
● Operating system
● Filesystem, networking
● Services
Deployment: installing, updating or removing the application to or from a particular infrastructure.
Software deployment is all of the activities that make a software system available for use.
https://en.wikipedia.org/wiki/Software_deployment
4. Why is deployment automation important?
Speed
● Faster deployment
● Frequency
● Feedback loop
Release early, release often!
https://en.wikipedia.org/wiki/Release_early,_release_often
Quality
● Fewer human error
● Consistency
● Predictability
Cost
● Machine vs. human
● Reuse
● Troubleshooting
5. Evolution of the Web (last 20 years)
Overall:
● More users
● More data
● More devices
● More features
● More expectations
Technologies:
Static HTML, Cookies, SSI, CGI, SSL, XML,
RPC, API, AJAX, RSS, Web 2.0, Mobile Web,
WebSockets, IoT, Big Data, cloud computing,
and more ...
As the web evolved, so did the deployment of the web applications.
6. Prehistoric days : before deploy.sh
Application
● Very small and basic.
● Often, just a few static HTML and image files.
● Sometimes, an occasional CGI script.
Infrastructure
● Shared hosting with limited access.
● Single server.
● No version control.
● No SSH access.
Deployment: manual upload via FTP or some sort of web-based control panel.
If you are still here, at least look at some FTP deployment / smart upload tools, like SmartFTP.
7. The birth of deploy.sh
#!/bin/bash
rsync -re ssh . leonid@example.com:~/public_html/
ssh leonid@example.com << EOF
cd ~/public_html/
chown -R leonid.nobody {logs,tmp,uploads}
mysql -u leonid example_com < db/mysql.sql
EOF
echo “All Done”
Basic automation
● Simple, step-by-step
● Mostly shell
● No specialized tools
● Basic remote access
● No error handling
● Very specific
● Not portable
● No concurrency control
● No trail
● No changesets
● No documentation
● Often insecure
8. Version control / The birth of build.sh
#!/bin/bash
ssh leonid@example.com << EOF
cd ~/public_html/
git pull origin master
./bin/build.sh
EOF
echo “All Done”
Improvements
● More reliable file synchronization
● Much faster on larger projects
● Basic permissions management
● Changesets
● Git/Subversion hooks
● Basic concurrency control
● More portability
● Often better security
● Submodules, exports, etc.
Separation of concerns between deployment
and build processes. Deployment seems
simple and easy. Build process - not so
much.
9. The explosion of build tools
<?php
class DbCreate extends AbstractCommand {
public function mysqlDbCreate($host, $port, $name, $user, $pass) {
$this->taskMysqlDbCreate()
->host($host)->port($port)
->user($user)->pass($pass)
->db($name)->run();
}
}
Improvements
● Specialized syntax
● Dependency management
● Improved error handling
● Improved output / verbosity
● Improved portability
● Reusable tasks and modules
● Documentation
Tools
GNU make, CMake, Apache Ant,
Phing, Rake, Phake, Capistrano,
Robo, Deployer, many others.
10. More specialized tools : build parts
<?php
use SymfonyComponentFinderFinder;
$iterator = Finder::create()->files()->name(‘*.php’)->in(‘./src’);
$sami = new SamiSami($iterator, [
‘title’ => ‘My Project’,
‘build_dir’ => ‘build/docs/source’,
‘cache_dir’ => ‘build/docs/source/cache’,
]);
return $sami;
Build specialization
● Testing frameworks
● Asset management
● Documentation
● Dependency management
Tools
phpUnit, JUnit, Nightwatch JS, Sass,
LESS, minify, phpDocumentor,
Doxygen, Sami, composer, npm,
bower, gulp, grant, yarn, and many
more.
11. More specialized tools : database management
<?php
use MigrationsAbstractMigration;
class AddEmailFieldToUsers extends AbstractMigration {
public function change() {
$table = $this->table(‘users’);
$table->addColumn(‘email’, ‘string’, [‘limit’ => 255]);
$table->update();
}
}
Database management
● Versioned schema
● SQL abstraction
● Cross-platform / cross-engine
● Testable changes
● Upgrade and rollback
● Initial data import / seeders
● Data manipulation
● Documentation improvements
● Conflict resolution
Tools
Doctrine, Phinx, DBDeploy, etc.
12. configure.sh? Infrastructure as Code
---
- name: Nginx and PHP setup
hosts: web-servers
roles:
- geerlingguy.nginx
- geerlingguy.php
- geerlingguy.php-mysql
- geerlingguy.composer
- geerlingguy.letsencrypt
Server provisioning, virtualization,
orchestration, configuration
management
● Automation
● Documentation
● Testable installations
● Concurrency
● Reusable configurations
● Consistency
Tools
Ansible, Puppet, Chef, Salt, Docker,
Kubernetes, Amazon AWS, Heroku,
and many more.
18. HipChat Example : API
<?php
$payload = $this->app->request->getBody();
$payload = json_decode($payload, true);
$user = $payload[‘item’][‘message’][‘from’][‘id’];
$user = hipchatToUnix($user);
$command = $payload[‘item’][‘message’][‘message’];
$command = preg_replace(‘#^/deploy #’, ‘’, $command);
# $command = “update example.com live v2.0”
exec(“/usr/bin/sudo -u $user /usr/local/bin/deploy.sh $command”);
Keep in mind
● Security! Security! Security!
● JSON contains context
● Handle failure
● Handle timeouts
● Log excessively!
● Check existing implementations
There is more than one way to do it.
19. Things can get rather complex
Deployment Stages
● Install
● Update
● Rollback
● Remove
Different Environments
● Development
● Test
● Staging / Pre-production
● Live / Production
Layered Infrastructure
● Web servers
● Database servers
● Load balancers
● Caching / proxy servers
Atomic Deployments
● Multiple deployed versions
● Common assets, user uploads
● Database migrations
● Caching
20. KISS : Keep it simple, stupid
● Communicate! Deployment is part of the culture, not just technology.
● Opt for existing solutions and best practices. Do not reinvent the wheel.
● Opt for gradual changes. One step at a time. And baby steps too!
● Smaller, independent units are easier to handle. But don’t overdo it.
● Confidence is the key.
● Keep up! After all, technology constantly evolves.