SlideShare a Scribd company logo
Delivery Pipeline for
Windows Machines
18.09.2017 @buzdin
for fun and profit
Working as a consultant
• DevOps
• Test Automation
• Software Architecture (aka Microservices)
• Java Development
• Web Development (not JavaScript)
Continuous Delivery
Getting a code change to production in a most efficient way
(preferably automated)
Delivery Pipeline for Windows Machines
Lets build a delivery pipeline!
https://xebialabs.com/periodic-table-of-devops-tools/
Jenkins Pipeline
Git
checkout
Gradle
build
Run Integ
Tests
Publish to
Nexus
Deploy to
Dev
Run Func
Tests
Push to
Release
Deploy to
Staging
Delivery Pipeline for Windows Machines
Steps to Deploy
• Generate SSH Certificate
• Provision Linux via Ansible
• Install dependencies via apt-get
• Download artefact from Artifactory via curl
• Start app as a service using systemd
• Think about switching to Docker later
Things to Consider
• Clustering – round-robin or
hash-based?
• Blue-green deployment
strategy?
• Should we take Kubernetes
or simply Docker Swarm?
VS
Delivery Pipeline for Windows Machines
Delivery Pipeline for Windows Machines
Delivery Pipeline for Windows Machines
Mission Impossible
1. Don’t spend any money on licenses
2. Automate using familiar tools
3. You have a Mac
4. Don’t think about Docker all the time
Delivery Pipeline for Windows Machines
Step #1 Where to get a
Windows VM?
Create Compute Instance
Create Account
Connect with RDP
Linux Windows
ansible ?
ssh ?
apt-get ?
systemd ?
docker ?
Ansible Core Concepts
• Works on SSH and Python
• Tasks (what to do)
• Playbook (aggregations of tasks)
• Inventory files (where to connect)
• Lots of configs, modules and plugins
• All written in YAML
https://www.ansible.com/
http://docs.ansible.com/ansible/list_of_windows_modules.html
Ansible Win Tasks
win_file
win_copy
win_service
win_uri
win_get tasks:
- name: Create a directory
win_file:
path: “C:Applogs“
state: directory
Useful commands:
Getting There From MacOS
$ pip install ansible
$ pip install "pywinrm>=0.2.2"
Windows Remote
Management Protocol
https://msdn.microsoft.com/en-us/library/aa384426(v=vs.85).aspx
“Windows Remote Management (WinRM) is the
Microsoft implementation of WS-Management
Protocol, a standard Simple Object Access Protocol
(SOAP)-based, firewall-friendly protocol that allows
hardware and operating systems, from different
vendors, to interoperate.”
Linux Windows
ansible ansible
ssh ?
apt-get ?
systemd ?
docker ?
PowerShell
https://msdn.microsoft.com/powershell
PowerShell
PowerShell Curl
https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Invoke-RestMethod?view=powershell-5.1
> Invoke-WebRequest -Uri http://my.artifactory/repo/artifact
-OutFile app.jar
$ curl http://my.artifactory/repo/artifact
--output app.jar
PowerShell Remoting
> Enable-PSRemoting –force
> Enter-PSSession -ComputerName 127.0.0.1 -Credential User
$ ssh user@127.0.0.1
Enable Ansible Remoting
Add Firewall Rule
Success!
PowerShell on MacOS
https://github.com/PowerShell/PowerShell/
Works on MacOS 10.12 Sierra
built on .NET Core
Linux Windows
ansible ansible
ssh PowerShell
apt-get ?
systemd ?
docker ?
$ sudo apt-get install java
VS
Chocolatey
https://chocolatey.org/
Install Package with
Chocolatey
> Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope
CurrentUser
> choco install jdk8 -y -params 'installdir=c:java8'
> Set-ExecutionPolicy AllSigned; iex ((New-Object
System.Net.WebClient).DownloadString('https://chocolatey.org/
install.ps1'))
Ansible Support
tasks:
- name: Install Java
win_chocolatey:
name: jdk8
state: present
params: "installdir=c:java8"
Linux Windows
ansible ansible
ssh PowerShell
apt-get Chocolatey
systemd ?
docker ?
$ sudo systemctl restart apache2.service
VS
Non-Sucking Service
Manager
https://nssm.cc/
“nssm is a service helper which doesn't suck.”
NSSM Usage
Ansible Support
tasks:
win_nssm:
name: “my_service"
application: “c:java8binjavaw.exe”
start_mode: manual
state: started
stdout_file: "{{logs_path}}stdout.log"
stderr_file: "{{logs_path}}stderr.log"
app_parameters_free_form: “{{java_opts}}"
DEMO TIME
Delivery Pipeline for Windows Machines
Linux Windows
ansible ansible
ssh PowerShell
apt-get Chocolatey
systemd NSSM
docker ?
Delivery Pipeline for Windows Machines
https://www.brianchristner.io/docker-image-base-os-size-comparison/
???
windowsservercore:latest
9426 mb
Layers: ???
~2000x
Nice to Know
• Possible to install Docker on Windows
• Not possible to run Windows containers and Linux
containers at the same time
Linux Windows
ansible ansible
ssh PowerShell
apt-get Chocolatey
systemd NSSM
docker WAT?
What have we learned today?
Same Tools, Patterns &
Practices Apply
https://octoverse.github.com/
Delivery Pipeline for Windows Machines
Microsoft DevOps
sort of…
https://github.com/buzdin/ansible-winows-gcloud

More Related Content

PDF
How to Build Your Own Test Automation Framework?
PDF
How to grow your own Microservice?
PDF
Pragmatic Java Test Automation
PPTX
Jbehave selenium
PPT
Testing In Java
PDF
Testcontainers - Geekout EE 2017 presentation
PPTX
Testing Java EE apps with Arquillian
PPT
Data driven automation testing of web applications using selenium
How to Build Your Own Test Automation Framework?
How to grow your own Microservice?
Pragmatic Java Test Automation
Jbehave selenium
Testing In Java
Testcontainers - Geekout EE 2017 presentation
Testing Java EE apps with Arquillian
Data driven automation testing of web applications using selenium

What's hot (20)

PDF
Acceptance Test-driven Development with Cucumber-jvm
PPTX
Lecture android best practices
PDF
Take Control of your Integration Testing with TestContainers
PDF
Open Source Software Testing Tools
PPTX
Java Development EcoSystem
PPTX
Soap UI - Lesson45
PPTX
ASP.NET security vulnerabilities
PPTX
Microsoft Fakes, Unit Testing the (almost) Untestable Code
PDF
Node.js quick intro
PPTX
Web Services and Introduction of SOAPUI
PPTX
Unit Testing in Swift
PPTX
Introduction to SoapUI day 4-5
PPTX
PowerShell Plus v4.7 Overview
PPTX
Exactpro Systems for KSTU Students in Kostroma
PPTX
Continuous Delivery - Automate & Build Better Software with Travis CI
PDF
Data Driven Testing
PDF
Test and Behaviour Driven Development (TDD/BDD)
PPTX
Test your microservices with REST-Assured
PDF
Exploring No Mans Land with Keyword-Driven Testing
PPTX
Spring Test Framework
Acceptance Test-driven Development with Cucumber-jvm
Lecture android best practices
Take Control of your Integration Testing with TestContainers
Open Source Software Testing Tools
Java Development EcoSystem
Soap UI - Lesson45
ASP.NET security vulnerabilities
Microsoft Fakes, Unit Testing the (almost) Untestable Code
Node.js quick intro
Web Services and Introduction of SOAPUI
Unit Testing in Swift
Introduction to SoapUI day 4-5
PowerShell Plus v4.7 Overview
Exactpro Systems for KSTU Students in Kostroma
Continuous Delivery - Automate & Build Better Software with Travis CI
Data Driven Testing
Test and Behaviour Driven Development (TDD/BDD)
Test your microservices with REST-Assured
Exploring No Mans Land with Keyword-Driven Testing
Spring Test Framework
Ad

Similar to Delivery Pipeline for Windows Machines (20)

PDF
Omaha (Google Update) server
PPTX
Docker - Demo on PHP Application deployment
PPT
Docker, a new LINUX container technology based light weight virtualization
PPT
Linux containers and docker
PPTX
Deploying windows containers with kubernetes
PDF
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill ...
PDF
Containerizing your Security Operations Center
PPTX
#dddsw - Modernizing .NET Apps with Docker
PPTX
Docker intro
PPTX
Azure Bootcamp 2016 - Docker Orchestration on Azure with Rancher
PPTX
What's New in Docker - February 2017
PPT
2 Linux Container and Docker
PDF
Apache OpenWhisk Serverless Computing
PPT
Develop with linux containers and docker
PPTX
Vagrant and chef
PPTX
#SDD2017 - Modernizing .NET Apps with Docker
PDF
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
PDF
DevOps Workflow: A Tutorial on Linux Containers
PDF
Jenkins CI for MacDevOps
PPSX
CloudStack + KVM: Your Local Cloud Lab
Omaha (Google Update) server
Docker - Demo on PHP Application deployment
Docker, a new LINUX container technology based light weight virtualization
Linux containers and docker
Deploying windows containers with kubernetes
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill ...
Containerizing your Security Operations Center
#dddsw - Modernizing .NET Apps with Docker
Docker intro
Azure Bootcamp 2016 - Docker Orchestration on Azure with Rancher
What's New in Docker - February 2017
2 Linux Container and Docker
Apache OpenWhisk Serverless Computing
Develop with linux containers and docker
Vagrant and chef
#SDD2017 - Modernizing .NET Apps with Docker
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
DevOps Workflow: A Tutorial on Linux Containers
Jenkins CI for MacDevOps
CloudStack + KVM: Your Local Cloud Lab
Ad

More from Dmitry Buzdin (20)

PDF
How Payment Cards Really Work?
PDF
Как построить свой фреймворк для автотестов?
PPTX
Big Data Processing Using Hadoop Infrastructure
PDF
JOOQ and Flyway
PDF
Developing Useful APIs
PPTX
Whats New in Java 8
PPTX
Архитектура Ленты на Одноклассниках
PDF
Dart Workshop
PDF
Riding Redis @ask.fm
PDF
Rubylight JUG Contest Results Part II
PDF
Rubylight Pattern-Matching Solutions
PDF
Refactoring to Macros with Clojure
PPTX
Poor Man's Functional Programming
PDF
Rubylight programming contest
PPTX
Continuous Delivery
PPTX
Introduction to DevOps
PDF
Thread Dump Analysis
PDF
Mlocjs buzdin
PDF
Web polyglot programming
PPTX
Code Structural Analysis
How Payment Cards Really Work?
Как построить свой фреймворк для автотестов?
Big Data Processing Using Hadoop Infrastructure
JOOQ and Flyway
Developing Useful APIs
Whats New in Java 8
Архитектура Ленты на Одноклассниках
Dart Workshop
Riding Redis @ask.fm
Rubylight JUG Contest Results Part II
Rubylight Pattern-Matching Solutions
Refactoring to Macros with Clojure
Poor Man's Functional Programming
Rubylight programming contest
Continuous Delivery
Introduction to DevOps
Thread Dump Analysis
Mlocjs buzdin
Web polyglot programming
Code Structural Analysis

Recently uploaded (20)

PPTX
Intro to ISO 9001 2015.pptx wareness raising
PPTX
ART-APP-REPORT-FINctrwxsg f fuy L-na.pptx
PPT
The Effect of Human Resource Management Practice on Organizational Performanc...
PDF
natwest.pdf company description and business model
PPTX
NORMAN_RESEARCH_PRESENTATION.in education
PPTX
An Unlikely Response 08 10 2025.pptx
PPTX
Research Process - Research Methods course
PDF
Microsoft-365-Administrator-s-Guide_.pdf
PPTX
lesson6-211001025531lesson plan ppt.pptx
PPTX
2025-08-10 Joseph 02 (shared slides).pptx
PDF
Tunisia's Founding Father(s) Pitch-Deck 2022.pdf
PPTX
Tour Presentation Educational Activity.pptx
PPTX
PurpoaiveCommunication for students 02.pptx
PPTX
Anesthesia and it's stage with mnemonic and images
PPTX
Project and change Managment: short video sequences for IBA
DOCX
"Project Management: Ultimate Guide to Tools, Techniques, and Strategies (2025)"
PPTX
water for all cao bang - a charity project
PPTX
Self management and self evaluation presentation
PDF
Presentation1 [Autosaved].pdf diagnosiss
PPTX
3RD-Q 2022_EMPLOYEE RELATION - Copy.pptx
Intro to ISO 9001 2015.pptx wareness raising
ART-APP-REPORT-FINctrwxsg f fuy L-na.pptx
The Effect of Human Resource Management Practice on Organizational Performanc...
natwest.pdf company description and business model
NORMAN_RESEARCH_PRESENTATION.in education
An Unlikely Response 08 10 2025.pptx
Research Process - Research Methods course
Microsoft-365-Administrator-s-Guide_.pdf
lesson6-211001025531lesson plan ppt.pptx
2025-08-10 Joseph 02 (shared slides).pptx
Tunisia's Founding Father(s) Pitch-Deck 2022.pdf
Tour Presentation Educational Activity.pptx
PurpoaiveCommunication for students 02.pptx
Anesthesia and it's stage with mnemonic and images
Project and change Managment: short video sequences for IBA
"Project Management: Ultimate Guide to Tools, Techniques, and Strategies (2025)"
water for all cao bang - a charity project
Self management and self evaluation presentation
Presentation1 [Autosaved].pdf diagnosiss
3RD-Q 2022_EMPLOYEE RELATION - Copy.pptx

Delivery Pipeline for Windows Machines