►
From YouTube: GSoC 2019 in Jenkins. Phase 1 demos, part 2
Description
During this session Google Summer of Code students will present the results they achieved during the first month of coding. This is the second part of the presentations.
Agenda:
* Natasha Stopa - Plugin Installation Manager CLI Tool / Library
* Jack Shen - Working Hours Plugin - UI Improvements
* Long Nguyen - Remoting over Apache Kafka. Docker/K8s Features
Talk abstracts: https://docs.google.com/document/d/1rEIzZ56CObCIcxtPlQoxn-7B9oAchB82Vh4zd61AJ98/edit?usp=sharing
Live questions: https://gitter.im/jenkinsci/gsoc-sig
A
Okay,
we're
live,
okay,
hello,
everyone,
my
name
is
Martin
Dodger
and
today
this
meeting
is
the
google
Summer
of
Code
evaluation
presentations,
part
two.
So
we
had
evaluation
presentations
part
one
a
couple
days
ago
and
now
we're
doing
part
two.
This
is
the
Summer
of
Code
week
of
evaluation.
So
we're
done
with
the
coding
phase
coding
phase.
One
and
I
want
to
thank
all
the
students
for
their
participation
in
encoding
phase
one,
and
today
we
have
three
presentations.
So
let
me
share
my
screen.
B
A
B
A
So
we
have
three
presentations
today,
so
we
are
June
26,
29,
teen
and
the
first
presentation
will
be
the
plugins
installation
manager,
CLI
library,
by
Natasha.
The
second
presentation
will
be
remoting
over
Apache
Kafka
with
kubernetes
features.
This
will
be
presented
by
long
and
the
third
presentation
will
be
the
working
hours
plug-in
UI
improvements
by
Jack.
A
B
A
A
Now
I
would
like
Natasha
to
present
us
the
begin
installation
manager
with
the
a
CLI,
which
is
your
project,
not
sure
the
floor
is
yours.
C
Thanks
all
right
I'll
go
ahead
and
get
started.
D
So
first
I
want
to
just
motivate
my
project
a
little
bit.
This
quote
was
taken
from
the
offer
plug-in
management
tooling,
epic,
that
this
project
is
based
off
of
so
everyone
is
reinventing
the
wheel
partially
implementing
the
quote-unquote
details,
a
plug-in
management
sign,
metadata,
artifact,
checksums,
plugins,
detached
from
court
dot
becomes
obvious.
Jenkins
should
provide
adequate
tooling
for
plug-in
installation
outside
Jenkins
live
instance,
so
plugins
are
key
to
the
extensibility
of
Jenkins,
and
plug-in
management
has
been
somewhat
of
a
pain
point.
D
There's
currently
lots
of
different
ways
of
doing
this,
each
which
has
their
own
strengths
and
weaknesses.
A
lot
of
people
have
been
trying
to
do
the
same
thing
multiple
different
times,
so
the
goal
of
this
project
is
to
really
streamline
plug-in
management
across
the
different
components
and
then
also
offer
additional
features,
such
as
viewing
security
warnings
and
available
updates.
D
So
the
first
part
of
my
project,
we
kind
of
started
by
trying
to
pull
out
plug-in
management
from
core
which
ended
up
being
pretty
difficult.
So
you
probably
can't
really
see
this
visual,
that's,
okay,
it's
more
just
for
visual
purposes,
but
each
box
represents
a
class
related
to
plug-in
management,
and
then
each
line
in
that
box
represents
some
method
and
all
the
red
lines
are
dependencies.
That
would
also
have
to
get
pulled
in
or
refactored
and
then
additional
boxes
same
thing
are
just
related
classes
or
things
that
would
also
have
to
get
pulled
in.
D
So
a
large
part
of
phase
one
has
been
focused
on
converting
the
installed
plugins
bash
script
to
Java,
and
we
wanted
to
start
here
because
this
there's
a
lot
of
limitations
with
this
bash.
Go
it's
difficult
to
maintain
and
extend.
It
doesn't
get
all
of
the
current
up-to-date
data
from
the
update
center.
D
So
there's
kind
of
two
portions,
as
I
mentioned
to
this
there's
the
CLI
options
and
then
also
the
library
I'll
go
over
each
of
these
and
what
I've
implemented
so
far
in
a
little
bit
more
detail.
So
currently,
these
are
the
available
CLI
options.
If
you
were
to
download
and
try
out
the
tool
today,
so
the
user
can
input
a
list
of
plugins,
either
through
the
CLI
or
through
a
dot
txt
file
that
just
contains
a
list
of
these
plugins
and
their
versions.
D
The
user
can
specify
which
directory
they
want
their
plugins
to
be
downloaded
to.
They
can
also
include
a
jenkins
for
file,
and
then
they
can
also
view
security
warnings
for
all
plugins,
the
library
so
far
works
like
this.
Basically,
first
it
tries
to
find
when
installing
plugins,
like
which
plugins
are
already
installed
or
downloaded.
So
first
it'll
check
the
plugins
that
are
in
the
war
file.
Then
it
will
look
at
plugins.
D
If
there
are
any
plugins
installed
in
the
specified
directory,
then
it
will
go
ahead
and
actually
download
those
plugins
and
their
dependencies
and
it'll
ignore
them
if
they're
already
downloaded
or
installed
or
upgrade
them.
If
there's
an
existing
version
but
what's
required,
is
a
higher
version
than
that
and
then
it'll
download
those
plugins
from
the
URL
either
on
based
off
of
the
plug-in
version
or
if
the
user
can
specify
also
a
version
specific
specifiers
such
as
latest
or
experimental.
D
D
D
So,
as
you
can
see,
the
plugins
will
actually
start
downloading,
we'll
go
ahead
and
check
and
see
what
plugins
are
installed
in
our
war
file
right
now,
I
just
used
kind
of
the
default
plug-in
directory,
and
if
there
isn't
one
this
library
we'll
go
ahead
and
create
it
so
right
now
we
don't
have
anything
in
our
plug-in
directory
and
then
for
each
plug-in,
we'll
go
ahead
and
grab
it
from
the
URL
and
download
it
and
then
for
each
of
the
dependencies
go
ahead
and
do
the
same
thing.
D
Okay,
so
I
think
downloading.
All
of
these
does
take
a
little
while,
but
yeah
you
can
see
that.
Basically,
if
we
have
an
installed
version,
that's
less
than
what's
required,
we'll
go
ahead
and
upgrade
that
and
then,
if
we
have
an
already
installed
plug-in
we'll
go
ahead
and
ignore
that
or
skip
that
too.
D
D
D
So
we
just
recently
released
an
alpha
version,
so
feel
free
to
go
ahead
and
try
it
out
and
give
me
feedback
looking
forward
to
hearing
more
about
what
you
guys
think
and
then
just
in
terms
of
next
steps.
So
far,
it's
very
much
a
work
in
progress.
So
there's
a
lot
of
work
to
be
done
yet,
so
we
want
to
make
parsing
more
robust.
We
want
to
add
a
full
support
for
actually
viewing
all
the
security
issues
and
available
updates.
D
D
So
that's
something
I
was
actually
working
on
last
night
and
it's
not
quite
there
yet
so
I
think
some
of
the
defaults
that
I've
set
for
specifically
like
if
there
are
plugins
that
fail
to
download
I
have
like
a
default
set
right
in
there
right
now
to
just
kind
of
create
a
file
in
like
the
current
working
directory
and
I
know
that
that
fails
with
Jenkins
stalker
and
then
there's
also
a
couple
other
issues
with
right.
Now,
in
the
current
installation
scripts
you
can
basically
getting
the
update.
D
Okay,
so,
let's
see
I
think
that
those
are
probably
done
downloading
now.
So
me
up
so
I
just
wanted
to
go
ahead
and
show
you
we
have
all
of
our
plugins
installed
and
then
I
did
forget
to
show
you
a
my
plugins
dot.
Txt
I
did
also
include
a
failed
plug-in
that
should
fail
as
well.
So
this
is
the
part
that
I
was
talking
about
that.
Currently
there
was
an
error
in
docker.
Basically,
we
create
this
text
file.
That
includes
like
the
failed,
plug-in
and
I
know.
There
are
some
issues
with
that.
D
D
A
D
Yeah
so
I
think
in
a
case
where,
like
you,
can't
actually
access
the
download
center
right
now
like
or
save,
there's
some
like
error
with,
like
actually
downloading
those
will
just
print.
You
know
that
there
was
like
an
error.
I
think
that
we
probably
in
the
future,
might
want
to
create
like
a
couple
different
options
on
how
to
deal
with
that.
So
one
problem
would
be
say
you
are
downloading
a
plugin
that
is
a
dependent
for
a
dependency
for
another
plugin.
D
Obviously,
it's
gonna
be
problematic
if
you
can't
download
those
dependencies
appropriately,
but
in
some
cases
where
you
just
want
to
say
view
the
information
about
what
those
dependencies
are
or
available
updates.
Maybe
in
that
case
we
wouldn't
necessarily
want
to.
You
know,
stop
the
whole
procedure.
Maybe
we
would
just
want
to
say:
oh
look.
We
can't
access
this
right
now
and
kind
of
carry
on
so
I
think
the
goal
is
to
kind
of
make
that
configurable,
where
there's
like
different
the
way
that
would
be
handled
might
be
different
based
off
of
the
different
use
cases.
A
E
F
I
guess
the
project
has
been
going
well
so
far,
I
think
it's
really
good
to
be
able
to
see
the
downloads
that
are
happening,
like
you
know,
being
all
around
the
tool
and
at
least
build
the
plug-in
folder
locally
yeah
again,
if
you
have
anyone,
has
any
suggestions
or
looking
to
see
anything,
please
feel
free
to
add
it
to
the
Jenkins
JIRA
like
we'll
medium
pull
them.
Maybe
look
at
that.
The
potentials,
phase,
2
or
phase
3,
but
I,
think
it's
been
good.
So
far,.
D
B
D
G
Maybe
most
are
using
jelly
to
write
the
configure
configure
page,
and
so,
if
we
want
to
input
a
date
there
are
there
are
there
are.
There
is
no
provided
to
provided
components
for
us
to
input
a
date.
At
least
we
could
not
select
selected
date.
We
just
you
can
input
a
hard-coded
date
like
like
a
number
will
slash,
and
so
so
we
are
so.
We
are
actually
thinking
about
using
some
components,
some
third-party
components
to
have
a
selected
date
and
also
in
setting
time
ranges
and
challenges
is
just
the
allow
of
your
challenge.
G
G
Also,
if
we,
if
we
use
react,
we
also
could
and
take
advantage
of
web
pack
and
if
we
use
webpack
and
the
user
interface,
we
rotate
it.
You
know
in
in
common
in
common
ways
of
develop
some
JavaScript
projects.
Some
of
your
functions
will
be
leased
to
pollute
the
global
namespace
and
like
something.
If
you
import
some
libraries
with
Scripture
and,
for
example,
you
import
and
jcotton,
you
import
the
query
and
in
the
global
namespace
all
the
place,
could
you
could
use
jQuery,
but
we
actually
does
not
expect
it.
G
G
G
And
in
there,
in
the
block
below
we
got
a
script
tag
and
you
will
import
the
defile
Butte
ways
webpack
and
for
my
disease
we
got
our
reactive
app
mounted
into
the
place.
The
hinge
in
the
mount
point
also,
we
are
not
taking
the
advantage
of
some
some
some
sleep
helper
function.
We
have
vandalism
and
animal
and
we
may
need
to
define
our
own
backyard
service
and
I'm
doing
this
learning
from
and
the
blue
ocean
and
yeah
it's,
although
he's
just
using
stapler,
but
it
helps
it
helps
me
a
lot
yeah.
G
G
Yeah,
it's
a
well
it's
just
using
an
XLS
to
send
a
post
request,
okay
and
actually
I'm
thinking
about
doing
a
common
way
to
develop
plugging
this
reactor
and
I
I,
don't
know,
maybe
we
may
be
doing
the
working
hours
plugging,
maybe
the
first
of
all
to
develop,
come
and
plugging
waste
reactor
so
and
so
I'm
thinking
about.
If
people
want
to
design
more
custom
UI,
if
he
wants,
you
use
some
of
some,
maybe
more
than
frameworks
like
you
reacted
like
a
some
other
headmaster.
G
G
It
has
some
outcome
that
incompatibility
with
some
reactive
packages
and
yeah,
so
maybe
not
all
the
packages,
but
we
may
be
careful.
You
should
be
careful
and
we
actually
own.
Currently
we
don't
know
how
many
packages
you
will
have
incompatibilities,
but
react
takes
okay
and
for
next
phase,
yeah
I
will
completed
back-end
service
and
data
validation
and
a
fault
for
now
the
backend
service.
It's
just
the
function,
just
raw
data
and
return
data,
and
maybe
we
we
need
to
do
more
things
like
that.
G
G
G
G
Yeah
and
for
this
part
we
will,
we
will
make
another
beauty
script
and
we
will
generate
the
files
into
a
plugins
web
app
directory
and
right,
but
under
the
Jazz
doctory,
and
we
could
inject
it
defiles
doing
this
using
this
script,
and
so
in
that
time
I
will.
We
could
provide
a
way
to
how
to
reload
this,
the
web
app
being
in
Jenkins
web
page,
okay,
all
right
and
I
think
maybe
there
are
a
lot
of
questions.
Thank
you.
G
B
G
G
We
were
we
wrote
for
now,
and
should
it
be
better
consistent
in
the
style
with
the
other
plugins
or
so,
although
also
the
clogging
I
wrote
here
is
not
it's
not
using
GRE,
it's
not
using
jelly
components
but
I,
but
I
still
set
the
style
of
the
components
to
the
chinking,
styling
and
yeah
I.
Think
that's
more
comfort,
maybe
that's
more
consistent
with
thinking's.
G
G
So
I
give
up
using
the
a
deep
library
and
I
choose
to
write
in
simple
CSS.
Now
we
actually-
and
we
don't
have
a
plan
for
now,
but
oh.
G
G
G
B
B
E
Just
to
just
regarding
like
look
and
feel
and
and
styling
and
stuff
I
I
would
probably
feel
more
comfortable
just
having
somebody
do
a
review
of
the
whole
thing
when
we're
a
little
bit
closer.
If
we
could
find
somebody,
okay.
B
Yeah
I'll
try
to
help.
So
if
you
follow
up
in
the
developer
man
interest,
we
can
just
discuss
it
there,
because
the
best
advice
for
such
cases-
if
you
want
feedback,
just
send
something
to
the
developer.
Imagine
peace,
for
example.
You
can
send
them
in
for
this
demo.
You
can
send
me
for
the
code
and
you
can
ask
for
feedback,
and
it
would
be
a
good
starting
point
for
all
kinds
of
session
discussion.
A
Okay,
well,
thank
you,
jack
for
presenting
I,
wanted
to
ask
if
Jeff
wanted
to
comment
on
or
or
has,
questions
but
you've
already
spoken
Jeff,
but
you
want
to
add
a
couple
things
or.
E
Yeah
say
I'm
kind
of
kind
of
pleased
with
this,
this
project
over
overall
I.
Think
if
you
just
look
at
the
features
that
we
want
to
implement,
it
seems
like
deceptively
not
a
lot
but
there's
a
lot
of
things
like
like
breaking
new
ground
with
with
using
react,
so
we
can
make
use
of
these
these
third-party
components.
E
There
there's
a
lot
of
like
tons
and
tons
of
react
components,
so
that
takes
some
extra
time
just
working
with
dates
and
times
is
often
harder
than
you
would
think,
and
so
that
adds
some
complexity
and
I
I,
like
the
approach
that
Jack
is
taking
towards
thinking
about
with
the
problems
that
he's
found
figuring
out
how
to
make
those
things
easier
for
other
projects
in
the
future.
So
I'm
really
pleased
with
that,
and
thank
you
for
your
work
on
them.
I'm,
looking
forward
to
the
rest
of
gee
sock.
A
B
A
H
Okay,
so
today
I
would
like
to
be
my
my
a
sub-project
remoting
over
about
Kafka.
Okay,
me
cognitive,
future
and
I'm
long
I'm
from
Acadia
University
in
Vietnam-
and
this
is
my
first
time
participated
in.
He
stopped
contributing
for
Jenkins
and
five
mentors
and
Roy
and
Kate
lfo1
and
support
and
okay.
So.
H
Yeah
yeah
I.
Can
you
see
my
screen
then,
because
my
truck,
my
connection
is
a
bit
lucky,
so
so
I
feel
that
I'm
lost
commission
so
remotely
to
work
traffic.
A
plug-in
is
the
successful
geez
kiss
top
projects
from
last
year
and
when
you
have
some
problem
first,
it
requires
users
to
manually
configure
the
entire
system
which
you'll
have
to
start
their
own
zookeeper
cluster
traffic
master.
H
They
start
their
own
Immelt
in
Asians,
and
the
second
thing
is
in
doesn't
support
dynamic
asian
provisioning,
so
our
scalability
is
hard
to
achieve,
and
that's
why
this
project
it
is
to
solve
two
problems.
The
first
one
is
of
the
box
solution
to
provision
classical
cluster.
The
second
one
is
an
image
agent,
provisioning
in
kinetic
cluster.
H
Finally,
the
version
2
released
and
what
I
have
done
is
the
first
thing:
I
have
implemented
community
factory
adapter
class
to
connect
to
kubernetes
cluster
using
different
kinds
of
credential.
The
second
thing
is
a
function
to
lunch,
Kafka
and
zookeeper
in
kubernetes,
using
general
spec
files
and
after
after
launching
Kafka
eyes
of
people.
If
we
automatically
update
the
URL
field
and
I
also
investigated
our
compatibility
with
community
looking
whether
we
could
reuse
the
code
in
community
plug-in,
so
we
don't
have
to
implement
Clos
API
and
the
end
result
is.
H
We
cannot
reduce
the
cost,
though
we
will
implement
cloud
API
in
phase
two.
The
last
thing
is:
I
have
written
a
ham
shot
to
start
the
whole
system
in
kubernetes
cluster?
Ok,
so,
let's
move
on
to
our
first
feature
class
efficiently
in
communities.
So
in
global
Africa
configuration
class,
there
is
a
button
and
when
and
user
can
fill
out,
the
communities,
information
and
press
a
button
to
start
so
South,
Korean
zookeeper,
and
when
user
press
the
button
we
instantiate
a
community
Factory
adapter
and
fills
the
German
space
fire
from
resources.
H
H
H
A
H
H
H
H
Have
a
JavaScript
on
the
jellyfish,
so
here
so
what
this
JavaScript
does
is
it
will
envious
of
the
mutation
of
the
API
and
it
will
watch
it
will
watch
this
lemon
and
if
it's
a
little
change
to
success
when
we
pass
the
URL
here
and
then
update
it
here,
so
you
don't
have
to
reload
the
page.
Okay,
that's
it.
H
H
They
did
all
the
service
import,
so
the
next
one
is
ham,
shot
and
ham.
Chart.
Ok,
thank
you
and
ham.
Shot
our
hand
shot.
I
have
two
dependencies.
The
first
one
is
stable,
slash,
junkies.
The
second
one
is
e
cubed
/
Kafka,
and
for
this
demo,
I
will
also
start
a
pot
in
kubernetes
to
an
Asian
part
to
connect
to
the
Yankees
master.
H
Okay,
so
I
have
a
script
to
demo
to
demo
hand
shot
what's
this
quick.
This
is,
if
we
install
the
hand
shot
then
wait
for
Jane
keen
to
come
up
by
using
netcat
to
ping
the
pot
and
then
copy
the
password
to
a
clipboard,
and
then
it
will
use
configuration
Escott
to
launch
an
asian
computer
on
the
master
side,
and
then
it
will
launch
a
revolting,
Kefka,
remoting,
calf
asian
part,
to
connect
to
the
computer
master
side.
H
H
B
H
Okay,
but
let's
move
on,
and
so
that's
it
the
to
demo
and
the
next
phase.
The
plan
for
next
phase
is
implement
cloud
API
to
provision
remote
in
Africa
Asia
dynamically.
So
we
don't
have
to
start
started
part
we
can.
We
can
create
as
many
as
many
Asian
as
we
won,
depending
on
the
workload,
and
the
second
thing
is
implement
cloud.
Api
implementation
with
hem
chart
and
probably
write
module.
It
has
documentation
and
fix
some
book
like
the
last
one.
We
see
and
released
version
two
and
here
the
means
to
the
repo
the
jitter
channel.
H
B
H
A
H
I
Okay,
so
I
think
overall
I
said
we
have
some,
but
in
the
final
limo
but
I
think
in
the
lung-lung
bleep
well,
I
mean
I.
Think
there's
some
expected.
Maybe
again
is
some
network
on
symposium,
complete
problem
so
for
the
overall
of
the
this
project.
Active
Nam,
long
fish
out
to
us
finally
lie
from
the
beginning
of
this
out
and
he
is
very
active
to
ask
the
question.
Also
his
right
did
I
give
to
sell
learning
about
the
concept
know
about
the
plug-in
about
Kafka
on
committees.
A
D
A
As
possible,
we
do
not
want
to
miss
the
deadline.
I
want
to
thank
all
the
students
for
submitting
their
own
evaluation.
So
that's
very
nice
I
think
they
they
are
all
in.
So
thank
you
and
thank
you.
Everyone
for
your
contribution
during
contributions
during
phase
one
and
best
of
luck
for
the
next
phases.