Container-driven Continuous Deployment with Docker, Git, and Jenkins
In the early 2000s, eXtreme Programming (XP) introduced agility to software engineers. Contemporary cultural and technical innovations - container technology, distributed version control systems, the proliferation of free and open source software, and the DevOps movement - have significantly expanded our possibilities.
In this one day, hands-on workshop, we’ll build a modern continuous deployment pipeline based on Git, Jenkins, and Docker. Starting with continuous integration, we’ll practice Git workflows enabling parallel development with pull requests and explicit dependency management through the use of forked repositories. We’ll then extend the ecosystem to support ad-hoc testing environments, multi-versioned deployments, and build promotion. We’ll survey tools and techniques for production deployments touching on Docker Swarm, Google Kubernetes, ChatOps, and emerging tools used in serverless architectures such as Amazon Lambda.
While technologies change, values and principles continue to guide our choices. We’ll end with reflection and a guided discussion on how core XP values - simplicity, feedback, communication, courage - can serve as a compass for environmental and workflow decisions that impact our customers and teammates.
Outline/Structure of the Workshop
- Introduction and Agenda
- Form Teams
- Introducing our sample application
- In the beginning... Continuous Integration
- Job Creation in Jenkins
- Build Scripts as Controlled Artifacts
- CI and Testing - two great tastes that go great together!
- Then things became nonlinear... Git, Pull Requests, and Forking
- Git patterns and anti-patterns
- Solid commit messages
- Solid branch names
- Rebase onto master
- Git log options
- More...
- Github Flow
- Pull Requests
- Request Early, Pull Late
- Dependency Management with Forked Repositories
- Avoiding #npmgate-like Issues
- Git patterns and anti-patterns
- Extending our pipeline to continuous delivery
- Introduction to Docker
- The anatomy and economics of containers
- Let's "Dockerize" our application
- Sourcing pre-existing images from Docker Hub
- Docker Compose
- Let's extend our CI pipeline to deploy our application
- Multi-job Pipelines in Jenkins
- Full blown continuous deployment with Docker Swarm
- Introduction to Swarm Mode
- Configuring a cluster to run in a cloud provider
- Deploying application updates
- Managing the cluster once it's into place
- Emerging topics in the DevOps space
- Orchestration with Google Kubernetes
- Push button deployment with a simple chat bot
- Serverless architecture and options - now.sh and Amazon Lambda
- Final conversation
- A (very, very) brief history of DevOps and XP
- Feeling tool fatigue? Let values and principles drive you.
- Workshop retrospective - learnings and leanings.
Learning Outcome
- How to create multiple, low-cost environments for testing and deploying applications
- Basic proficiency with common docker commands and usage patterns
- Overview of a popular toolchain (Jenkins/Git/Docker) and awareness of emerging tooling
- Evolving a CI/CD strategy in a simple, non-speculative way
- Leveraging the distributed powers of Git
Target Audience
Developers and Testers Interested in DevOps and Automation
schedule Submitted 6 years ago
People who liked this proposal, also liked:
-
keyboard_arrow_down
Joshua Kerievsky - Modern Agile
45 Mins
Keynote
Executive
Genuine agility is enormously effective in helping us achieve our dreams. The trouble is, Agile has grown into a complex tangle of roles and rituals, frameworks and tools, processes and certifications. We need a return to simplicity. Modern Agile is here to help.
Designed for people in many domains (not just IT), Modern Agile is defined by four guiding principles:
- Make People Awesome,
- Make Safety a Prerequisite,
- Experiment & Learn Rapidly and
- Deliver Value Continuously.
Understanding and deeply practicing these four principles will help you get better results faster.
In this talk I’ll share how these four principles power world-famous companies and how they can help you work with greater speed, simplicity, safety and success.
-
keyboard_arrow_down
Nate Clinton - Conversations with Machines
45 Mins
Keynote
Intermediate
Now that we talk to our computers, what new possibilities and tradeoffs (and business models) will emerge? Today's "digital assistants" are relatively weak, but hint at an evolution in our way of living and working and transacting. In this session, we'll explore the current state of conversational interfaces, speculate about the future of the intelligent assistant, and point to how humans will play a role that new world.
-
keyboard_arrow_down
Joshua Kerievsky - The Art of Refactoring
480 Mins
Workshop
Intermediate
Code that is difficult to understand, hard to modify and challenging to extend is hazardous to developers, users and organizations. Refactoring, or improving the design of existing code, is one of our greatest defenses against such code. Yet many programmers lack formal training in refactoring. Furthermore, management tends to lack knowledge about the value of refactoring. This one-day workshop is designed to address these needs. You’ll learn the art of refactoring safely, when, why and how to refactor hazardous code, strategies and tactics for refactoring, as well as refactoring to patterns. You’ll also learn how refactoring impacts business concerns and vice-versa. Come to this class prepared to code with a pair and a mob as we refactor example code and help you learn the art of refactoring.
-
keyboard_arrow_down
Alexandra West - A Visual Thinking Warmup
90 Mins
Workshop
Beginner
Do strong personalities dominate your development team? Are code reviews painful? Are you blindly following orders from a backlog, or are you learning from observation?
Visual Thinking Strategies, or VTS, is a cross-disciplinary technique applicable to anyone working in a collaborative setting where observation is key. VTS develops critical thinking skills by viewing and discussing works of art in a group. It is backed by over 30 years of field research showing its effectiveness and accessibility. By allowing individuals to talk about art - without needing a background in the field - VTS advances skills you can use to create more relevant products and stronger teams: Observing, Brainstorming, Speculating, Reasoning with Evidence, Cultivating a Point of View, and Revision & Elaboration.
During this interactive exercise, we’ll discuss selected works of art as a group. There are no right answers or group consensus being sought. We’re creating an environment and process for looking, thinking, reasoning and revision - skills that are mission-critical to anyone working in a software design or development role. After our group discussion, participants will learn the basics of image selection and facilitating VTS sessions within their own organizations. In addition to the above, we'll cover how VTS can help you and your team with the following: Comfort with Ambiguity, Openness to the Unfamiliar, Civil Debate, and Willingness to Participate in Group Thinking.
-
keyboard_arrow_down
Scott Ambler - Disciplined Agile In A Nutshell
480 Mins
Workshop
Beginner
Disciplined Agile (DA) is an IT process decision framework for delivering sophisticated agile solutions in the enterprise. It builds on the existing proven practices from agile methods such as Scrum, Extreme Programming (XP), Lean software development, Unified Process, and Agile Modeling to include other aspects necessary for success in the enterprise. DA fills in the gaps left by mainstream methods by providing guidance on how to effectively plan and kickstart complex projects as well as how to apply a full lifecycle approach, with lightweight milestones, effective metrics, and agile governance.
The one-day workshop is not technical and is suitable for all team members. Many group exercises reinforce the principles learned. The workshop is also valuable for management tasked with moving from traditional approaches to agile.
-
keyboard_arrow_down
Woody Zuill - Mob Programming: A Whole Team Approach
45 Mins
Talk
Intermediate
Mob Programming is a development practice where the whole team works on the same thing, at the same time, in the same space, and on the same computer. It is a whole-team approach to doing all the work the team does including designing, coding, testing, and working with the customers, users and other stakeholders. This is an evolutionary step beyond pair programming and accentuates face-to-face communication, team alignment, collaboration, and self-organizing team concepts of the Agile approach to software development.
Mob Programming can be a highly effective approach to software development. There are numerous teams doing Mob Programming all over the world, including distributed teams, and there has been a great deal of positive reports of success. Please join me as I share how the concept got started, the benefits, techniques we use, and some of the problems we've faced.
-
keyboard_arrow_down
George Dinwiddie - Evolutionary Anatomy of Test Automation Code
George DinwiddieAgile Consultant & Coach, Co-Founder of AgileDC ConferenceiDIA Computing, LLCschedule 6 years ago
90 Mins
Workshop
Intermediate
Many people agree that one important outcome of Behavior Driven Development is a set of regression tests to demonstrate the desired behavior and ensure that it is maintained over time. Then they often struggle to do so in a manner that remains maintainable as the system and the test code grows larger. Sometimes they even abandon their tests and start over, repeatedly.
In this session we'll examine the evolutionary history of an application and its test suite. We'll stop at various stages in its life to consider the choices we might make to address growing complexity.
We'll work using Cucumber-JVM and Java in order to be accessible to a large audience. You can apply these concepts in other languages and test frameworks. Rather than depending on having enough laptops set up, we'll use mob programming to enable everyone's participation.
If you'd prefer exploring on your own machine, bring your laptop loaded and ready to go. Clone the code repository from https://github.com/gdinwiddie/EquineHoroscope to get the code and its history. Unzip http://idiacomputing.com/pub/EquineHoroscopeJars.zip in the same directory for the dependencies. (Download sample at https://leanpub.com/EvolutionaryAnatomy/ for even more detailed instructions.) I'll be using Eclipse, and the instructions are tuned for that, but you can use any Java IDE.
Bonus: Participants will receive a coupon for a free e-book on the material. -
keyboard_arrow_down
David Laribee - Testing Strategy: New Model, Better Outcome
45 Mins
Talk
Beginner
Pyramids? Quadrants? Cupcakes?! There are a wide array of models that describe approaches to test automation strategy and their possible positive (or negative) outcomes.
In this talk, we’ll survey the landscape of testing models: models that range from technical to product to cultural mindsets, including best practices and anti-patterns. I’ll add detail and nuance to each of these models in the form of professional experience, real world example, and case study.
With a new lens, focusing on testing strategy as an act of curation, I'll share a new approach to evolving a testing strategy appropriate for your product development team's specific context.
-
keyboard_arrow_down
Julian Harty - Analytics Driven Software Engineering for Mobile Apps
480 Mins
Workshop
Advanced
There's little need to work in a vacuum as an isolated developer or team. Our software tools, our apps, and our users all provide information we can use to help us improve our practices and the apps we produce. Some tools provide leading information - that's available and can be applied before we release the app. Other information lags the release of our app to testers and users, we receive the information as the app is being used.
The information may help us reflect on our existing work, what went well and what we missed or didn't do quite as well as we'd like to do. We can also use it to improve how we work in future, for instance to test more effectively and efficiently, to learn from production and real world use of our software, etc. We can choose to work faster, increase the value of the feedback we receive, and shorten the feedback cycles so we can iterate faster and more purposefully.
In this interactive workshop we will be able to investigate and review some of the many and varied tools and sources of information. We will compare information that is easily available with techniques such as implementing and applying mobile analytics and designing automated tests to help us collect high-value, relevant information explicitly. We’ll also investigate the capabilities and tools that are available to developers and those who support mobile apps to harness these tools and the data they provide to refine and improve our testing. We'll also consider automated testing, their sweet-spots and their blindspots.
In addition to general mobile testing techniques we’ll investigate ways to help decide what to test next and what might survive in the morass of “won’t be tested”. As we learn more about specific aspects of an app, we can further refine the testing and use various analytics and research to improve our testing. There’s plenty of data available to help us improve the testing and even the development of mobile apps if we choose to collect and use it. Privacy and protection of the users is also key and part of being a trustworthy, professional tester so we’ll touch on these topics and how they’re generally designed and implemented in mobile apps.
-
keyboard_arrow_down
Woody Zuill / Todd Little - NoEstimates?
Woody ZuillAgile Guide / Trainer / DeveloperZuill DevelopmentTodd LittleChairmanKanban Universityschedule 6 years ago
480 Mins
Workshop
Beginner
Let’s explore the purpose and use of estimates in the management of software development efforts, and consider possible alternatives. Why do we estimate and are we making estimates that are actually useful? We say we depend on estimates to make important decisions, and yet we’re often disappointed by the results.
Why are we so challenged at estimation? Are estimates for cost, time, or effort always needed? Is it possible there are other ways to approach our work? If we didn’t estimate, how could we still be successful at making businesses successful?
The default use of an "estimate-driven" approach is pervasive in software development efforts, and while estimates can be useful, it is worthwhile to scrutinize our use of estimates for cost, time, and effort, and to seek better ways to manage software development projects.
There are a number of things to explore and many questions to ask. For example, do we really need estimates for all the things we are currently using them? Are we getting a reasonable benefit from them? Is it possible to manage software development projects without these estimates, or at least with fewer estimates? Is there a way to prove that estimates are helping us make good decisions?
In this session we’ll participate in some interactive information gathering exercises to see if we can gain a shared idea of our current understanding of the purpose and use of estimates. We will examine the nature of software development projects and explore some real data to shed light on the art and science of software estimation. Our exploration goal is to see if we can work together to come up with some ideas about improving on the traditional approaches to using estimates.
-
keyboard_arrow_down
David Laribee - Full Stack, Hands-on TDD with JavaScript
960 Mins
Workshop
Intermediate
This workshop readies developers for success with Test-Driven Development. Together we’ll take small steps toward working a full, double loop TDD workflow. Over the course of two days attendees gain comfort with the TDD workflow, integrating it with other important practices such as pair programming, source control, emergent design, domain-driven design and lightweight modeling.
It’s two solid days of intense work — over 60% hands-on, iterative exercises. The rest of the time is a mix of fast, dense lightning talks, case study reviews, chalk-talks and facilitated group discussions.
-
keyboard_arrow_down
David Laribee - Effecting Change as a Developer
45 Mins
Talk
Beginner
As an independent agile coach, I encounter a lot of developers frustrated by their home team culture. The same questions come up time and again: "how do I get my team to adopt XYZ?" This question assumes a solution instead of framing a problem and involving a group in conceiving and developing an answer. With a little conscious work, we can hone our skills as influencers and stop operating from unconscious, unexamined motivations. When we reframe effecting change in this way, our efficacy improves dramatically.
In this talk, I'll share a mindset for improving effecting change through ethical influence and group involvement. I'll end by sharing a toolbox of simple change tools you can apply to your teams the very next day.