Air Plugins Extending and customizing uDeploy (IBM UrbanCode Deploy)

Slides:



Advertisements
Similar presentations
17 Copyright © 2005, Oracle. All rights reserved. Deploying Applications by Using Java Web Start.
Advertisements

Extending Eclipse Kai-Uwe Mätzel IBM OTI Labs Zurich
Introduction to Maven 2.0 An open source build tool for Enterprise Java projects Mahen Goonewardene.
AHRT: The Automated Human Resources Tool BY Roi Ceren Muthukumaran Chandrasekaran.
Snejina Lazarova Senior QA Engineer, Team Lead CRMTeam Dimo Mitev Senior QA Engineer, Team Lead SystemIntegrationTeam Telerik QA Academy SOAP-based Web.
6/11/2015Page 1 Web Services-based Distributed System B. Ramamurthy.
Presented by IBM developer Works ibm.com/developerworks/ 2006 January – April © 2006 IBM Corporation. Making the most of Creating Eclipse plug-ins.
Peoplesoft: Building and Consuming Web Services
Chapter 6 DOJO TOOLKITS. Objectives Discuss XML DOM Discuss JSON Discuss Ajax Response in XML, HTML, JSON, and Other Data Type.
INTRODUCTION TO WEB DATABASE PROGRAMMING
Submitted by: Madeeha Khalid Sana Nisar Ambreen Tabassum.
Maven and Stack Starter Michael Youngstrom. Notes This is a training NOT a presentation Please ask questions Prerequisites – Introduction to Java Stack.
Project Source Code Structure and Build Process ● Remember consistency matters as source code structure, build process, and release processes are all intertwined.
C Copyright © 2009, Oracle. All rights reserved. Appendix C: Service-Oriented Architectures.
T Network Application Frameworks and XML Web Services and WSDL Sasu Tarkoma Based on slides by Pekka Nikander.
CustomWare Asia Pacific Pty Ltd All Rights Reserved Integration Quality Assurance – WmUnit.
Basic Programming in Ruby Today’s Topics: Introduction last class irb history log Methods Classes (briefly) Using 3 rd Party Libraries rubygems ‘ require.
London April 2005 London April 2005 Creating Eyeblaster Ads The Rich Media Platform The Rich Media Platform Eyeblaster.
SAN DIEGO SUPERCOMPUTER CENTER Working with Inca Reporters Jim Hayes Inca Workshop September 4-5, 2008.
Python and REST Kevin Hibma. What is REST? Why REST? REST stands for Representational State Transfer. (It is sometimes spelled "ReST".) It relies on a.
11 Web Services. 22 Objectives You will be able to Say what a web service is. Write and deploy a simple web service. Test a simple web service. Write.
Proprietary & Confidential Java WebStart Created by Bob Hays.
Copyright Theorem Solutions Ltd 2001 Tony Ranger Technical Director Theorem Solutions Ltd. The PDM
SOAP-based Web Services Telerik Software Academy Software Quality Assurance.
GLite build and integration system Building and Packaging Robert HARAKALY
ClearQuest XML Server with ClearCase Integration Northwest Rational User’s Group February 22, 2007 Frank Scholz Casey Stewart
ICM – API Server & Forms Gary Ratcliffe.
1 G52IWS: Example Web-services Chris Greenhalgh. 2 Contents Software requirements AXIS web service run-time components Getting started with Jetty & AXIS.
SOAP, Web Service, WSDL Week 14 Web site:
1 PSI/PhUSE Single Day Event – SAS Applications – June 11, 2009 SAS Drug Development from the Inside Magnus Mengelbier Director.
1 Chapter 1 INTRODUCTION TO WEB. 2 Objectives In this chapter, you will: Become familiar with the architecture of the World Wide Web Learn about communication.
CS3220 Web and Internet Programming RESTful Web Service
Appium Studio Appium testing made easy at any scale.
David Hatten Developer, UrbanCode 17 October 2013
UNICOS Application Builder Architecture
CS 330 Class 7 Comments on Exam Programming plan for today:
Build Automation with Gradle
Business Directory REST API
IBM Workload Scheduler 2015 Take the Complexity Out of Workload Automation, while Keeping the Technology Up-to-Date IEM fixlets and Centralized Agent Update.
Section 13 - Integrating with Third Party Tools
T Network Application Frameworks and XML Web Services and WSDL Sasu Tarkoma Based on slides by Pekka Nikander.
Play Framework: Introduction
Node.js Express Web Services
Get the Most Out of GoAnywhere: Agents
Advanced Integration and Deployment Techniques
PHP / MySQL Introduction
End-to-End REST Service Testing Automation
Testing REST IPA using POSTMAN
Continuous Integration For Databases
Chapter 5 Objectives Understand How to Plan a Windows 7 Deployment with Answer Files. Capture System Image Using Sysprep and ImageX. Use Deployment Image.
Maven IIB9 Plug-in Version 9.0
Continuous deployment best practices, methods and tools.
Module 01 ETICS Overview ETICS Online Tutorials
Testing RESTful Web APIs
Course: Module: Lesson # & Name Instructional Material 1 of 32 Lesson Delivery Mode: Lesson Duration: Document Name: 1. Professional Diploma in ERP Systems.
MySQL Migration Toolkit
End to End Monitoring Solution using Open Source Technology where webMethods 9.10 is used as ESB IBM Confidential.
XML Based Learning Environment
Registry Applications Data Model
Maven IIB9 Plug-in Version 9.0
Introduction to Web Services
Distributed System using Web Services
Configuration management suite
Chapter 42 Web Services.
Python and REST Kevin Hibma.
Consuming Web Services with 2E Generated Objects
Web Application Development Using PHP
Plug-In Architecture Pattern
DIBBs Brown Dog BDFiddle
Presentation transcript:

Air Plugins Extending and customizing uDeploy (IBM UrbanCode Deploy) and uBuild (IBM UrbanCode Build)

Presenting Today Matt: Lead Developer Eric: Consulting

Out of the box integrations – a good start

But your team is unique

So our integrations are “Plug-ins”

Make Integrating Easy Why Plugin-ins? Simple interface. Just need what’s unique to your stuff

Why Plugin-ins? Wrap existing scripts

Why Plugin-ins? Custom Fit

The Plan Plugin Basics Finding and Uploading Plugins The Anatomy of a Plugin Basic Plugin Authoring Tools for Bidirectional Integrations

The Plan Plugin Basics Finding and Uploading Plugins The Anatomy of a Plugin Basic Plugin Authoring Tools for Bidirectional Integrations

What is a Plugin? A package that provides new automation capabilities Format is a zip file containing: Description of ‘steps’ Description of inputs to those steps Scripts or code that execute those steps Upgrade rules uBuild & uDeploy share a plugin architecture: Air

The Plan Plugin Basics Finding and Uploading Plugins The Anatomy of a Plugin Basic Plugin Authoring Tools for Bidirectional Integrations

Getting Plugins

1) Go to Plugins.urbancode.com.

2) Download some plugins

3) Load them via the browser

New steps are immediately available

Plugin -> Agent How: Pulled automatically When: As it gets used This first execution will appear to take longer as plugin transport time is rolled into the step.

The Plan Plugin Basics Finding and Uploading Plugins The Anatomy of a Plugin Basic Plugin Authoring Tools for Bidirectional Integrations

The Anatomy of an Air Plugin Definition: What steps, input and how to invoke Upgrade Rules Info.xml: Versioning Payload: Scripts, libraries and tools that accomplish the plugin’s goals Packaging: Wrap contents in a zip file

Plugin Definition Expressed in the plugin.xml Definition of properties (settings) used by various levels of the plugin Lists the steps the plugin makes available and which commands or scripts to execute

Upgrade Definition Supports upgrading from one plugin version to the next Required when: Adding or renaming steps or properties

Payload Everything that makes the integration “go”

The Plan Plugin Basics Finding and Uploading Plugins The Anatomy of a Plugin Basic Plugin Authoring Tools for Bidirectional Integrations

Example: Atlassian Jira Plugin.xml header:

Example: Atlassian Jira Plugins contain one or more steps. Each has: A description (what is it) Properties (inputs) Post-processing (how do we know if it passed?) A command (how to make it go)

Example: Atlassian Jira Step properties look like this:

Example: Atlassian Jira - Properties

Example: Atlassian Jira - Properties

Example: Atlassian Jira - Properties

Example: Atlassian Jira – Post-Processing <post-processing> <![CDATA[ if (properties.get("exitCode") != 0){ properties.put( "Status”, "Failure”); } else { properties.put("Status", "Success"); } ]]> </post-processing>

Post Processing Fanciness Look for all instances of “Downloading file x” in the log, and create a property listing all ‘x’. scanner.register("Downloading file .*", function(lineNumber, line) { line = line.substring("Downloading file '".length); line = line.substring(0, line.length-1) var changedFiles = properties.get("changedFiles"); if (changedFiles == null) { changedFiles = ""; } changedFiles = changedFiles+line+"\n"; properties.put("changedFiles", changedFiles); }); scanner.scan();

Commands Args may be: value, file or path. <command program="${GROOVY_HOME}/bin/groovy"> <arg file="replace_tokens.groovy"/> <arg file="${PLUGIN_INPUT_PROPS}"/> <arg file="${PLUGIN_OUTPUT_PROPS}"/> </command> Args may be: value, file or path.

Payloads: Example script Cross platform un-tar

Payloads: Example script (setup) final def workDir = new File('.').canonicalFile final def props = new Properties(); def inputPropsFile = new File(args[0]); inputPropsStream = new FileInputStream(inputPropsFile); props.load(inputPropsStream); def dirOffset = props['dir']?:'.' def tarball = props['tarball']; def compression = props['compression']; def overwrite = Boolean.valueOf(props['overwrite']);

Payloads: Example script (execution) def ant = new AntBuilder() if (overwrite) { ant.untar( dest:dirOffset, failOnEmptyArchive: 'true', compression: compression, overwrite: 'true', src: tarball) } else { overwrite: 'false',

You don’t have to use Groovy

Why do we? Steps can run any script you write. Why does Urbancode usually use Groovy? Groovy is on every agent Groovy cross platform Groovy is very good at XML Groovy is fun to learn, concise and effective Other good choices: Perl, Ruby, VBScript, Python Etc, etc, etc

Common plugin strategies Construct a command line call Web services Wrap existing shell & perl scripts Exploit utilities installed with the agent (Ant)

The Plan Plugin Basics Finding and Uploading Plugins The Anatomy of a Plugin Basic Plugin Authoring Tools for Bidirectional Integrations

uDeploy Post-processing Rest services API Easily capture deployment information Rest services API 2 Wrappers: Command line and Java.

uBuild Web services accept metrics Construct an XML message Post to web message

uBuild Web services accept metrics Construct an XML message Post to web message String url = baseUrl + "rest/buildlife/${buildLifeId}/testcoverage?reportName=${name}” ProtocolSocketFactory socketFactory = new OpenSSLProtocolSocketFactory() Protocol https = new Protocol("https", socketFactory, 443) Protocol.registerProtocol("https", https) PostMethod postMethod = new PostMethod(url) if (authToken) { postMethod.setRequestHeader("Authorization-Token", authToken) postMethod.setRequestHeader("Content-Type", "application/xml") } postMethod.setRequestEntity(new StringRequestEntity(xml)); HttpClient client = new HttpClient() def responseCode = client.executeMethod(postMethod)

uBuild Web services accept metrics Easiest to work from examples Construct an XML message Post to web message Easiest to work from examples

In Summary Plugins extend Urbancode product’s automation They get you a custom fit Get them from plugins.urbancode.com Creating your own isn’t too hard

Additional Resources on Plugins Plugins.urbancode.com Plenty of examples Online Docs Schemas and additional how-to reference. Process flows

eminick@us.ibm.com Slideshare.net/Urbancode Q&A eminick@us.ibm.com Slideshare.net/Urbancode