Andres Almiray with DevOpsSpeakeasy at swampUP San Diego 2022

October 4, 2022

< 1 min read

Andres Almiray discusses his open source project, JReleaser. The project that was initially created as Java releaser, is now a tool to release any type of binary supported by Artifactory to the right distribution.

Speakers

Batel Zohar

Enterprise Solution Lead

Batel Zohar is a Developer Advocate for JFrog and has a background in DevOps support engineering, web development, and embedded software engineering. Prior to this, Batel served as an Enterprise Solutions Lead on a dedicated team that accompanies and assists large customers through the architectural implementation of the JFrog platform. She loves her dogs, plays guitar, and is a fan of Marvel’s movies.

Video Transcript

foreign

[Music]

speaker super frog and generally like

friends friend of frogs forever or for

quite some time yes yes

thank you for being here great thank you

for having me here and

um yeah so

a month ago let’s pretend it’s been like

three years because it actually was

going on well one of the things that I I

did during pandemic to keep me busy was

uh keep working on open source projects

and I decided to create one more open

source project called Jerry Lisa jail

releaser it sounds like go releaser it

sounds like go release it because it is

inspired by garlisa so I I work with a

lot of java code that’s that’s kind of

like my bread and butter we can see

there is yes exactly Java there we go

yeah exactly but I also use the pandemic

to learn all the languages and

specifically girl so I brought a small

command line utility to launch Maven and

Gradle builds because I keep fumbling

around whether I do Maven or Gradle I

was always invoking the wrong command so

I said that’s enough of that let’s build

a go utility so that I can use it very

small to launch the right thing but the

problem that I have is how do I release

this thing right so I discovered go

releaser I said what girl releases

God releaser does it allows you to build

the binaries uh calculate checksums

signatures and make sure that the binary

can go into the right distribution place

it could be Homebrew it could be J for

artifactory it could be a snap graph it

could be many different places where

your consumers will download the binary

very easily

now those days go release are actually

does check some deploy to Java girls

Factory yeah it means that if the file

didn’t change

nothing will be uploaded but a new

record of artifact will be created on

Earth Factory because the artifactory

has the check somebody storage yeah so

you can have two files or more than two

files referring to the same binary but

actually showing different names so when

you run your girl releaser and let’s say

you didn’t check anything but you didn’t

change anything but you have actually

daily builds that create all the

binaries and the binary is exactly the

same you will actually save space and

artifactory and bandwidth and the

release will be obviously much faster

because nothing is actually uploaded so

I’m excited about go releaser because it

is an amazing project and if you work

with go and you need a simple way to

release it you can build a very

minimalistic but very powerful pipeline

using go go releaser and it’s pretty

awesome so you got excited about going I

got excited about it yes exactly because

when I was able to distribute my very

tiny command line application and other

people started to use it I said wow this

is great goal release allows me to reach

out to more potential consumers I really

wish something like this existed for

Java command line

interfaces or maybe it’s node or Ross or

something else so nothing like that

existed and so one time Max Anderson

from jbank and I were chatting and he

did the same thing I mean in the sense

that he found a way to distribute jbank

to many different places but he did it

by hand that means he used Gradle and

shell scripts and so many things so a

lot of configure operation and when I

told him that I was had done the same

thing with with God release for a simple

go application with just one

configuration file it’s like okay we

have to do something about this someone

should create

a tool for Java maybe called journalism

and we were waiting for someone to come

up with and no one did it no volunteers

no volunteers and they said okay let’s

roll down the sleeves and build

something and that’s how the tool came

to be and hence the name Gerald Lisa the

idea of the tool is I’ll let you release

a Java binaries to many different places

of course artifactory is one of the

Prime places where you can do this but

it’s not just for Java it’s not just c5s

or turfas it’s also RPMs packages or

nougats any kind of binary support

yes every kind of binary supported by

Jerry by artifactory can be published by

or can be released by their Lisa

regardless if the source code of the

project is Java or is rust or it may be

node whatever it is of course my

preference if you still writing go code

then keep using go release it it has

better integration but for any other

kind of source code or any kind of

project and Jerry Lisa will give you the

options nice so that actually started as

a project for Java release but now it

can actually do any kind of file as long

as the target platform supports it

exactly right right that makes sense and

okay so now we are obviously a devops

conference and um Everybody are like oh

those Breezers it’s kind of a hacking a

dirty way to release files what you

actually need is proper continuous

delivery tools with pipelines and all

this stuff and that you will do it

properly so my question is can we use

Jerry releaser in a more sophisticated

pipeline yes you can the tool is built

in such a way that you can test a

release in your local environment so

that you can test the the configuration

everything goes right and once you’re

satisfied with that you can use the same

configuration in a CI CD Pipeline and it

can be any kind of cicd pipeline the

tool is built in such a way that if you

are used to Maven or Gradle then keep

using it as a Plugin or you can even use

and if you want to you’re so desperate

or you can use the command line tool for

your Lisa which will hook in into any

kind of environment of course

yes

of actually Distributing the binaries or

making the binaries available for public

or private distribution inside the

general platform and this happens

because as opposed to go release there

generally said it splits the build step

from the release step so the bill

continues to work with any build tool

that you have it could be cargo Maven

griddle and what have you and the

release step is where journalistic comes

in right so if you already have a build

Pipeline and the only thing that you’re

missing is automating the release

process this is where the tool comes in

and you know what this is where the need

really there because we have tons of

tools to release to managed environment

to release two kubernetes to release two

Edge devices to release somewhere where

it’s going to be run but for reason for

distribution for be able to just

downloading the files as desktop

obligations as plugins as anything else

that the binary should just be there for

people that’s something that you don’t

see a lot of solutions correct and you

can see there are many open source price

and Commercial Pros that figure out a

way to do their own way of releases with

with the scripts and maybe they have a

changelog or maybe they don’t maybe they

have something that it looks a little

bit more predified or beautiful or maybe

they don’t have a release notes now what

tools such as go releaser and your

leaser allow you to do is kind of bring

a little bit more standardization into

how we create release Jesus how we push

out those binaries to the right

locations where your consumers will

prefer to download them from

[Music]

proud it’s great for Java but not only

not only Java it’s great for a local

environment

environment correct it also works on CI

and it’s great

it’s great pipelines when you just build

with whatever build and then release but

not only correct because it can grow as

much as you want the tool is very

flexible you can choose to just run for

example just create a git release or you

can also create the package managers you

can also announce to many distribution

channels such as Twitter slack there are

so many but you can choose whether you

want one thing or the other or the next

depending on your specific needs that

means the tool bends to your needs not

the other way around that’s the best

tools are here to help us not to dictate

what we should do

and that’s exactly how it should be

thank you thank you very much thank you

very much and people check out

generalizer it’s pretty awesome

cheers