Slide 1

Slide 1 text

Oleg Nenashev @oleg_nenashev

Slide 2

Slide 2 text

> whoami @oleg_nenashev oleg-nenashev Dr. Nenashev / Mr. Jenkins Developer tools hacker Community builder FOSS/DevRel consultant #RussiansAgainstPutin #StandWithUkraine

Slide 3

Slide 3 text

My Open [and not so] Communities Time * Once a contributor, [almost] always a contributor

Slide 4

Slide 4 text

Q&A: #developer-productivity-engineering on Gradle Slack DPE Forum: https://discuss.gradle.org/c/dpe/39

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Takeaways 6 ● Automate changelog drafts ● There are tools for pull requests, not just [conventional?] commits ● Release Drafter ● Add tools to your release Pipeline

Slide 7

Slide 7 text

* parody content

Slide 8

Slide 8 text

● jenkins.io Changelogs in Jenkins 8

Slide 9

Slide 9 text

● jenkins.io ● CHANGELOG.md / Wiki Changelogs in Jenkins 9

Slide 10

Slide 10 text

● jenkins.io ● CHANGELOG.md / Wiki ● GitHub Releases ● Changelogs elsewhere ● No changelogs Changelogs in Jenkins 10

Slide 11

Slide 11 text

11

Slide 12

Slide 12 text

12 * parody content

Slide 13

Slide 13 text

13 * parody content

Slide 14

Slide 14 text

14 * parody content

Slide 15

Slide 15 text

15 * parody content

Slide 16

Slide 16 text

16 * parody content

Slide 17

Slide 17 text

● jenkins.io ● CHANGELOG.md / Wiki ● GitHub Releases ● Changelogs elsewhere ● No changelogs Changelogs in Jenkins 17

Slide 18

Slide 18 text

18

Slide 19

Slide 19 text

● jenkins.io ⇔ GitHub Releases ● Jenkins Wiki ● CHANGELOG.md on GitHub ⇔ (often) GitHub Releases ● GitHub Releases ● Changelogs elsewhere ● No changelogs In Jenkins… 19

Slide 20

Slide 20 text

github.com/release-drafter

Slide 21

Slide 21 text

21 • Created by Tim Lucas, @toolmantim • Co-maintained by Joseph Petersen, @jetersen • GitHub Releases & Markdown • Based on the Probot & GitHub Actions • **Very** flexible, not just a semver • Pull requests, not [not so?] Conventional Commits GitHub: release-drafter/release-drafter

Slide 22

Slide 22 text

22 ● Powered by pull request titles and labels ● If needed, Maintainers edit PR titles and labels before the merge (or release) ● No reliance on commit history by default github.com/gradle/gradle-profiler/pulls? q=is%3Apr+is%3Aclosed

Slide 23

Slide 23 text

23 ● Release Drafter generates changelog drafts ● Most likely you’ll have to copy-edit the drafts before the release github.com/gradle/gradle-profiler/releases

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

25 ● You publish the release ● Manual or automatic, depends on your Pipeline ● Assets & Co can be attached to the draft too wiremock/wiremock-testcontainers-go/rel eases/tag/v1.0.0-alpha-7

Slide 26

Slide 26 text

And it’s flexible! 26 github.com/testcontainers/ testcontainers-go/releases

Slide 27

Slide 27 text

github.com/release-drafter

Slide 28

Slide 28 text

Minimum Viable Configuration [1/2] github.com/marketplace /actions/release-drafter 28

Slide 29

Slide 29 text

.github/release-drafter.yml Minimum Viable Configuration [2/2] 29

Slide 30

Slide 30 text

Categories, powered by labels 30

Slide 31

Slide 31 text

github.com/release-drafter

Slide 32

Slide 32 text

● Uses Probot Config engine, powered by deepmerge ● Global config repo: https://github.com/jenkinsci/.github ● Minimal configuration in repositories Inheritance! 32

Slide 33

Slide 33 text

Replacers 33 Hyperlinks Acronyms

Slide 34

Slide 34 text

Editable Markdown layout 34 // Injecting YAML changelogs into Markdown

Slide 35

Slide 35 text

Variables for injection into the code/configurations Output variables for subsequent GitHub Actions Automatic resolution in the drafts Version resolvers 35

Slide 36

Slide 36 text

Well, good luck! :) Automatic labeling 36

Slide 37

Slide 37 text

Not only markdown? 37

Slide 38

Slide 38 text

Good for social media 38 * Better than GitHub Releases

Slide 39

Slide 39 text

Gradle Plugin for Jenkins

Slide 40

Slide 40 text

3.0.0-beta-13 Example: Opengraph for release

Slide 41

Slide 41 text

Jenkinsfile Runner 1.0-beta-30

Slide 42

Slide 42 text

1.0-alpha-1 bit.ly/faascinator 🚀 New features and improvements ● Initial implementation, powered by Quarkus and picocli ● Support running the CLI commands via "/" endpoint ● Support for printing help via the "/help" endpoint ● Configure target JAR and main class via runtime properties ● Docker images, based on AdoptOpenJDK 11 Hotspot 📝 Documentation updates ● Initial docs: Overview, Quick Start, and Usage Guide ● First "Current Time” demo for local and Docker runs ● Create Contributor Guide 👻 Maintenance ● Add continuous integration for the project ● Enable continuous delivery of Docker images to ghrc.io ● Release tagged versions of Docker images

Slide 43

Slide 43 text

github.com/release-drafter

Slide 44

Slide 44 text

4 years with Release Drafter in Jenkins ● Almost all development tools use Release Drafter ● Global configuration by default in templates/archetypes ● 500+ plugins use Release drafter ● 6 contributors to Release Drafter from Jenkins 44

Slide 45

Slide 45 text

● jenkins.io ⇔ GitHub Releases ● Jenkins Wiki ● CHANGELOG.md on GitHub ● GitHub Releases ● Changelogs elsewhere ● No changelogs In Jenkins… 45

Slide 46

Slide 46 text

github.com/release-drafter

Slide 47

Slide 47 text

Takeaways ● Use changelog automation ● Make them a part of your release Pipeline ● Consider Release Drafter for a custom development Pipeline ● There are other tools, esp. for integrated releases or Conventional commits: JReleaser, Git Cliff

Slide 48

Slide 48 text

Release Drafter Docs release-drafter/release-drafter GitHub Action https://github.com/marketplace/actions/release-drafter Useful links 48

Slide 49

Slide 49 text

Global configurations / projects ● Jenkins: jenkinsci/.github/blob/master/.github/release-drafter.adoc https://github.com/jenkinsci/.github/blob/master/.github/release-drafter.yml ● WireMock: https://github.com/wiremock/.github/blob/main/.github/release-drafter.yml Local configurations: ● testcontainers/testcontainers-java ● oleg-nenashev/testcontainers-c Examples 49

Slide 50

Slide 50 text

No content

Slide 51

Slide 51 text

GitHub: oleg-nenashev Twitter: @oleg_nenashev QUESTIONS? Gradle Community Slack, #developer-productivity-engineering