Jenkins User Conference Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf Take Control. Write a Plugin. Part II Baruch Sadogursky JFrog.

Slides:



Advertisements
Similar presentations
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 10 Servlets and Java Server Pages.
Advertisements

Mobile Agents Mouse House Creative Technologies Mike OBrien.
COM vs. CORBA.
Jenkins User Conference San Francisco, Sept #jenkinsconf Business Process Model & Notation (BPMN) Workflows in Jenkins Max Spring Cisco
Jenkins User Conference Jenkins User Conference Israel, 06 June 2013 #jenkinsconf Pre-Tested Commits with Jenkins and Reviewboard Yardena Meymann VMware.
Apache Struts Technology
Programming with Android: SDK install and initial setup Luca Bedogni Marco Di Felice Dipartimento di Informatica: Scienza e Ingegneria Università di Bologna.
Test Automation Framework Ashesh Jain 2007EE50403 Manager Amit Maheshwari.
TTCN-3 Test Case Generation from arbitrary traces Capture & Replay Bogdan Stanca-Kaposta & Theofanis Vassiliou-Gioles (Testing Technologies)
Software Frame Simulator (SFS) Technion CS Computer Communications Lab (236340) in cooperation with ECI telecom Uri Ferri & Ynon Cohen January 2007.
1 Configuring Internet- related services (April 22, 2015) © Abdou Illia, Spring 2015.
Web Applications Development Using Coldbox Platform Eddie Johnston.
DEV-13: You've Got a Problem, Here’s How to Find It
Jenkins User Conference Jenkins User Conference San Francisco, Sept #jenkinsconf Using Jenkins in the Enterprise and the Cloud Mark Prichard Kohsuke.
Android: Hello World Frank Xu Gannon University. Steps Configuration ▫Android SDK ▫Android Development Tools (ADT)  Eclipse plug-in ▫Android SDK and.
1 Classic ASP vs. ASP.NET Technical Information and Market Adoption Lance Welker University of San Diego Dr. Rebman MSIT 526 December 20, 2005.
V0.01 © 2009 Research In Motion Limited Introduction to Java Application Development for the BlackBerry Smartphone Trainer name Date.
ANDROID PROGRAMMING MODULE 1 – GETTING STARTED
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 12 1.
Big Projects  Part of this class is about picking a cool software project and building it 1.
Slide 1 of 9 Presenting 24x7 Scheduler The art of computer automation Press PageDown key or click to advance.
2007 Adobe Systems Incorporated. All Rights Reserved. 1 Joe Berkovitz VP Engineering Allurent, Inc. Continuous Integration with Flex, FlexUnit, and Ant.
Presented by…. Group 2 1. Programming language 2Introduction.
Create with SharePoint 2010 Jen Dodd Sr. Solutions Consultant
Glink: GCOS e-business in an application server architecture Summit 2000, Jim Gallagher.
Selenium automated testing in Openbravo ERP Quality Assurance Webinar April 8th, 2010.
DELTA TAU Data Systems, Inc. 1 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Power PMAC Project Management November.
Development and deployment Web applications ITNET2 Spring 2011 Jesper Rosholm Tørresø.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
Deutsches Elektronen-Synchrotron DESY Helmholtz Association of German Research Centres Hamburg, Germany The European X-Ray Laser Project.
Business Unit or Product Name © 2007 IBM Corporation Introduction of Autotest Qing Lin.
MAE Continuous Integration Administration guide July 8th, 2013.
Introduction to ColdFusion Yu Fu 2003 MEC Candidate.
Jan Hatje, DESY CSS ITER March 2009: Technology and Interfaces XFEL The European X-Ray Laser Project X-Ray Free-Electron Laser 1 CSS – Control.
1 Geospatial and Business Intelligence Jean-Sébastien Turcotte Executive VP San Francisco - April 2007 Streamlining web mapping applications.
Dudok de Wit David.  Documents management in a deskless company  SharePoint Online as a solution  Redesigning the documentary organization  Interoperability.
Java Portals and Portlets Submitted By: Rashi Chopra CIS 764 Fall 2007 Rashi Chopra.
Software Tools, Part 2 Fall, Overview Toolkits Toolkits Prototyping Languages Prototyping Languages Frameworks Frameworks Groupware Frameworks Groupware.
ABone Architecture and Operation ABCd — ABone Control Daemon Server for remote EE management On-demand EE initiation and termination Automatic EE restart.
1 Chapter Overview Defining Operators Creating Jobs Configuring Alerts Creating a Database Maintenance Plan Creating Multiserver Jobs.
Interactive Workflows Branislav Šimo, Ondrej Habala, Ladislav Hluchý Institute of Informatics, Slovak Academy of Sciences.
Celluloid An interactive media sequencing language.
Application of Design Heuristics in the Designing and Implementation of Object Oriented Informational Systems.
Building High Performance, Robust Server Applications with Internet Information Server 5.0 Van Van IIS - Program Manager Microsoft Corporation.
Low-Level Virtual Machine support for Eclipse C/C++ Development Tooling Petri Tuononen - 17/5/2011.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
Jan Hatje, DESY CSS GSI Feb. 2009: Technology and Interfaces XFEL The European X-Ray Laser Project X-Ray Free-Electron Laser 1 CSS – Control.
Jan Hatje, DESY CSS – Control System Studio EPICS collaboration meeting CSS – Control System Studio Update EPICS collaboration meeting 2008 Shanghai.
SPI NIGHTLIES Alex Hodgkins. SPI nightlies  Build and test various software projects each night  Provide a nightlies summary page that displays all.
© 2008 by Wind River; made available under the EPL v1.0 | 19-Nov-2008 TCF The Target Communication Framework Michael Scharf, Wind River wiki.eclipse.org/DSDP/TM/TCF_FAQ.
Glink for Java: applet, application and an API for integrating access to Bull, IBM, UNIX and Minitel systems with your Java based e-business applications.
Python: Building Geoprocessing Tools David Wynne, Ghislain Prince.
Plug-In Architecture Pattern. Problem The functionality of a system needs to be extended after the software is shipped The set of possible post-shipment.
Ch 2. Application Layer Myungchul Kim
/16 Final Project Report By Facializer Team Final Project Report Eagle, Leo, Bessie, Five, Evan Dan, Kyle, Ben, Caleb.
Introduction  Model contains different kinds of elements (such as hosts, databases, web servers, applications, etc)  Relations between these elements.
Introduction to Android Programming
Jenkins 2.x Chris Vogel. Agenda O Jenkins background O Installation O Jenkins 2.x highlights O Build pipelines O Pipeline DSL O Multibranch plugin.
Software and Communication Driver, for Multimedia analyzing tools on the CEVA-X Platform. June 2007 Arik Caspi Eyal Gabay.
How to link a test to a launcher (in this case a shell launcher)
z/Ware 2.0 Technical Overview
Section 13 - Integrating with Third Party Tools
1) CB plugin for Jenkins 2) Requirements Mapping
DEV-25: You've Got a Problem, Here’s How to Find It
Enterprise Computing Collaboration System Example
NGS computation services: APIs and Parallel Jobs
MVC in ASP.NET Core: The new kid on the block
In this session… Introduce what we’re talking about
Overview on CI Use JJB (Jenkins Job Builder) to manage Jenkins jobs.
Presentation transcript:

Jenkins User Conference Jenkins User Conference San Francisco, Sept #jenkinsconf Take Control. Write a Plugin. Part II Baruch Sadogursky JFrog

About me Developer Job definition: Write code Talk about it

With Jenkins from day 1 Jenkins Artifactory Plugin Hosted JUC Israel repo.jenkins-ci.org JavaOne DEMOzone JFrog & Jenkins

Vote and guessing Working with remote agents Working in multiple operation systems Creating UI using Groovy Writing custom Jelly(?) tags Maintaining backwards compatibility Agenda

Vote and guessing Working with remote agents Working in multiple operation systems Creating UI using Groovy Writing custom Jelly(?) tags Maintaining backwards compatibility Agenda

Who saw “Take Control. Write a Plugin” session on YouTube?“Take Control. Write a Plugin” session on YouTube Let me guess… one or two hands… First, let’s vote

PREVIOUSLY IN “TAKE CONTROL. WRITE A PLUGIN”… “Hello, my name is Noam Tenne”

What you can do with plugins What you can’t do with plugins Plugins statistics Overview – Why plugins

UI SCM Build Processes Slave management Tooling... Many, many, more You can even create new extension points! What can I extend?

IDE All majors have good support We love IntelliJ IDEA Build tool Can be Maven or Gradle Environment

Target: Rewarding failing builds with insulting mockery Global configuration: Motivation phrase Project configuration: Is motivator enabled Outcome: Message appears in log after failure The “Motivation” Plugin

BACK TO OUR AGENDA Nowdays…

Vote and guessing Working with remote agents Working in multiple operation systems Creating UI using Groovy Writing custom Jelly(?) tags Maintaining backwards compatibility Agenda

Jenkins has remote agents! Working with remote agents

Send closures to remote agents hudson.remoting.Callable Working with remote agents Java Serialization

Poor guy’s Java closure Usually anonymous inner class (not always) Closure

Channel? Cast your bread on the waters

Represents a communication channel to the remote peer Obtain from: Channel

Where is the file? Distribution Abstractions – FilePath

hudson.FilePath Much like java.util.File Consider pushing logic to the file Use FilePath.act(FileCallable) Distribution Abstractions – FilePath

Launch stuff remotely! Distribution Abstractions – Launcher

hudson.Launcher Much like java.lang.ProcessBuilder Pick your environment variables wisely! Distribution Abstractions – Launcher

Vote and guessing Working with remote agents Working in multiple operation systems Creating UI using Groovy Writing custom Jelly(?) tags Maintaining backwards compatibility Agenda

WORA. You know. But. / vs \.sh vs. bat Quotes around commands Permissions (wait for it…) Working in multiple OSs

Executing file… remotely… platform independent… Running script…

Can You Spot The Error? Executed locally!

Use FilePath – it will take care of all the details! Execute FilePath.act(FileCallable) If you need the File API, invoke() method has it, converted to remote file properly Going Remote with File

Permissions Dance

Vote and guessing Working with remote agents Working in multiple operation systems Creating UI using Groovy Writing custom Jelly(?) tags Maintaining backwards compatibility Agenda

First, let’s look at the docs: Creating UI using Groovy

Analogous to Jelly Can use Jelly tags and libraries Kohsuke: Creating UI using Groovy WhenWhat Lots of program logicGroovy Lots of HTML layout markupJelly

Analogous to Jelly Can use Jelly tags and libraries me: Creating UI using Groovy WhenWhat Always!Groovy

Jelly: Groovy: Creating UI using Groovy

Real code Debuggable, etc. (stay tuned…)

Vote and guessing Working with remote agents Working in multiple operation systems Creating UI using Groovy Writing custom Jelly(?) tags Maintaining backwards compatibility Agenda

Documentation: Writing custom Jelly(?) tags

Simple as 1,2… that’s it. Writing custom Jelly Groovy tags

1. Implement

2. Use!

Vote and guessing Working with remote agents Working in multiple operation systems Creating UI using Groovy Writing custom Jelly(?) tags Maintaining backwards compatibility Agenda

Back to Motivation plugin… Maintaining backwards compatibility

Rename defaultMotivatingMessage to motivatingMessage What happens to existing configuration on users machines? Refactoring!

Register field (or class) alias In Initializer that runs before plugins started More complex cases might reqiure XStream converter XStream Aliasing To The Rescue

See you at our DEMOzone! Thank you!

Thank You To Our Sponsors