eclipsecon us 2016 buildship 16to9 · • proxy for embedding gradle • extension mechanism to...

31
EclipseCon US 2016 Benjamin Muschko, Principal Engineer Buildship

Upload: others

Post on 29-May-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

EclipseCon US 2016 Benjamin Muschko, Principal Engineer

Buildship

Page 2: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon
Page 3: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

Gradle is a Modern Open-Source Polyglot Enterprise Build Automation System

http://gradle.org/migrating-a-maven-build-to-gradle/

Page 4: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

Gradle - Background

Page 5: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

The Build

Integration Testing

Dependency Mgmt.

Compile

Code Generation

Unit Testing

Deploy

Package Mgmt. Custom

ExtensionsStandardization

Page 6: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

Polyglot

Page 7: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon
Page 8: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

Customers

Page 9: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

Adoption

more than 1’100’000 downloads of Gradle during the month of December 2015

Page 10: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

5All rights reserved. 2014 © ZeroTurnaround OÜ

Sample population of 2164 Java professionals, sample error 2.1%

Page 11: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

Books

Page 12: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

TerminologyProject

TaskTask

Project Project

Task Depen-dency

Page 13: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

IDE-Integration - Vision

Page 14: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

Make Eclipse more powerful

- extend what you can do from within Eclipse - integrate deeply into Eclipse

Page 15: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

Have a single truth of build logic

- put all execution logic into the build - derive all information from the build model

Page 16: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

In a unified build,Gradle is the single source of build logic.

GradleLauncher

Eclipse

Tooling API

Server(daemon)

Cmd Line(developer) (build master)

(cont integ)

Page 17: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

• Proxy for embedding Gradle

• Extension mechanism to provide custom models

Tooling API

Client VM with gradle-tooling-api.jar

Gradle Daemon for Gradle build

get build models

invoke build tasksinvoke tests

Page 18: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

Tooling API• Backward & forward compatible

From 1.0 to 2.8

• Runtime Isolation Separate daemon process

• High Level Services Build Cancellation, Continuous Mode, Test Execution, etc.

• Build Event Model Life-cycle events, task events, test events

Page 19: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

Demo

Page 20: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

Coming soon

Page 21: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

In the works• Project dependency substitution

• Debugging tests run through Gradle from IDE

• Views for dependency tree and applied plugins

• Support for WTP

https://github.com/eclipse/buildship/tree/master/docs/stories

Page 22: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

Preview

Page 23: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

Resources

Page 24: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

https://projects.eclipse.org/projects/tools.buildship https://github.com/eclipse/buildship

Page 25: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

👍

👍

👍

Page 26: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

Historyhttps://gradle.org/buildship-from-its-inception-to-its-inclusion-in-eclipse-mars-1-2/

Page 27: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

• Data of every build is collected

• CI or local

• From every location

• Shared with your colleagues / community

• Available at gradle.com

Gradle.com

Page 28: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

hansd — SpinDoctor

Changed Strategy of configuration ‘:compile after it has been resolved inLorem ipsum dolornum 3.7

build.gradle

Test failed: is failingA wrong JVM is used to run the tests??

see the stack trace

SpinDoctor build

Hans’ Jenkins minion 1 hour agoGradle 2.7250 second build

Warning Warning Failure

see the full commit

Hans committed 5 minutes agoMaster / 3e320bUpdating code

Deprecation warnings (compileJava) foundLorem Ipsum dolornum 678.8

see the stack trace

see the stack trace

SpinDoctor build

Dynamic dependency: org.apache.commons:commons-lang:3.3+ from 3.3.2 vs 3.3.3 for this build.

see 3 more changes from related

Dynamic dependency: org.apache.commons:commons-lang:3.3+ from 3.3.2 vs. 3.3.3 for this build.

SpinDoctor build

DateTest.testDa

compile

CompileJava

Gradle.com

Page 29: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

gradle.com

Page 30: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

?

Page 31: EclipseCon US 2016 Buildship 16to9 · • Proxy for embedding Gradle • Extension mechanism to provide custom models Tooling API Client VM with gradle-tooling-api.jar Gradle Daemon

Evaluate the Sessions

Sign in and vote at eclipsecon.org

- 1 + 10