Dependabot for
Jenkins plugin development
Jenkins Online Meetup. Jan 24, 2020
1
© 2020 CloudBees, Inc. All Rights Reserved.
Jenkins Developer Meetup
2
© 2020 CloudBees, Inc. All Rights Reserved.
> whoami
3
© 2020 CloudBees, Inc. All Rights Reserved.
Agenda
4
© 2020 CloudBees, Inc. All Rights Reserved.
Questions?
5
© 2020 CloudBees, Inc. All Rights Reserved.
�What’s common between Maven, NPM, and RPM?
6
© 2020 CloudBees, Inc. All Rights Reserved.
Dependency
Hell
7
© 2020 CloudBees, Inc. All Rights Reserved.
8
Lib 1
Lib 2
Lib 3
Plugin 1
Plugin 2
Plugin 3
Lib 4
Lib 5
Plugin 4
Tool dependencies
No class isolation
© 2020 CloudBees, Inc. All Rights Reserved.
9
© 2020 CloudBees, Inc. All Rights Reserved.
10
> mvn versions:display-updates
...
? ? ?
© 2020 CloudBees, Inc. All Rights Reserved.
What if we automate updates?
© 2019 CloudBees, Inc. All Rights Reserved.
© 2020 CloudBees, Inc. All Rights Reserved.
12
Dependabot, Renovate, Greenkeeper, etc.
© 2020 CloudBees, Inc. All Rights Reserved.
Dependabot
13
dependabot.com, acquired by GitHub
© 2020 CloudBees, Inc. All Rights Reserved.
Dependabot
14
dependabot.com, acquired by GitHub
© 2020 CloudBees, Inc. All Rights Reserved.
Automatic scans and updates
15
© 2020 CloudBees, Inc. All Rights Reserved.
16
© 2020 CloudBees, Inc. All Rights Reserved.
17
© 2020 CloudBees, Inc. All Rights Reserved.
Step 1. Enable Dependabot
18
© 2020 CloudBees, Inc. All Rights Reserved.
Step 2. Setup permissions
19
In Jenkins:
© 2020 CloudBees, Inc. All Rights Reserved.
Step 3. Configure Dependabot
20
© 2020 CloudBees, Inc. All Rights Reserved.
Step 4. Just wait a bit…
21
© 2020 CloudBees, Inc. All Rights Reserved.
Not just pull requests!
© 2019 CloudBees, Inc. All Rights Reserved.
© 2020 CloudBees, Inc. All Rights Reserved.
Release note references
23
© 2020 CloudBees, Inc. All Rights Reserved.
CommentOps
24
© 2020 CloudBees, Inc. All Rights Reserved.
Configuration-as-Code
25
© 2020 CloudBees, Inc. All Rights Reserved.
Advanced options
26
© 2020 CloudBees, Inc. All Rights Reserved.
Dependabot in Jenkins
© 2019 CloudBees, Inc. All Rights Reserved.
© 2020 CloudBees, Inc. All Rights Reserved.
Dependabot in Jenkins
28
© 2020 CloudBees, Inc. All Rights Reserved.
Dependabot for plugins
29
© 2020 CloudBees, Inc. All Rights Reserved.
Library updates
30
© 2020 CloudBees, Inc. All Rights Reserved.
Managing transitive dependencies
31
© 2020 CloudBees, Inc. All Rights Reserved.
32
<plugin>
<artifactId>maven-enforcer-plugin</artifactId>
<executions>
<execution>
…
<configuration>
<rules>
<requireUpperBoundDeps>
<excludes>
<exclude>commons-logging:commons-logging</exclude>
<exclude>com.google.code.findbugs:jsr305</exclude>
<exclude>net.java.dev.jna:jna</exclude>
</excludes>
</requireUpperBoundDeps>
…
</executions>
<dependencies>
…
<artifactId>extra-enforcer-rules</artifactId>
…
© 2020 CloudBees, Inc. All Rights Reserved.
Bill of Materials for Dependencies
33
© 2020 CloudBees, Inc. All Rights Reserved.
Other languages/tools
© 2019 CloudBees, Inc. All Rights Reserved.
© 2020 CloudBees, Inc. All Rights Reserved.
Docker
35
© 2020 CloudBees, Inc. All Rights Reserved.
Javascript
36
© 2020 CloudBees, Inc. All Rights Reserved.
Summary
© 2019 CloudBees, Inc. All Rights Reserved.
© 2020 CloudBees, Inc. All Rights Reserved.
Takeaways
38
© 2020 CloudBees, Inc. All Rights Reserved.
What’s next for us?
39
© 2020 CloudBees, Inc. All Rights Reserved.
Links
40
© 2020 CloudBees, Inc. All Rights Reserved.
41
QUESTIONS?
© 2020 CloudBees, Inc. All Rights Reserved.