►
Description
Kezhi demos his initial github-checks plugin for Jenkins. This is a google summer of code project that is currently in the community bonding phase. Project page and contact links: https://www.jenkins.io/projects/gsoc/2020/projects/github-checks/
Meeting notes:
https://docs.google.com/document/d/1TZLmu3nBPbwUjzLVYGnV_YtYvmzxzw6A4eEVYpbmi3Y/edit#
A
Repositories
so
here
this
is
a
sandbox
repository
I
created
for
for
testing
our
checks,
plugin
and
so
next.
I
think
we
should
take
a
look
at
the
class
architecture,
so
it's
here
and
so
first
we
have
to
subscribe
the
event
from
github.
So
here
this
subscriber
is
provided.
The
green
one
is
sub
is
provided
by
the
github
plugin,
and
we
just
to
extend
this
subscriber
this
class,
and
then
we
can,
you
know,
kind
of
subscribe,
the
events
from
github,
and
so
so.
The
next
thing
we
have
to
do
besides
subscribe
the
event
from
github.
A
We
have
to
listen
to
the
jenkins
jobs.
So
here
we
have
this
job
listener,
extend
the
cue
listener
and
also
the
wrong
listeners.
So
we
can
do
different
jobs.
Different,
take
different
actions
like
create
a
check
run
when,
when
the
one
listener
triggers
on
start-
and
we
can-
you
know
like
complete
the
check
run
and
when
the
job
drop
is
uncomplete
so
and
the
extension
point
that
provided
now
is
this
check
result,
and
this
kind
is
a-
is
an
abstract
class.
A
So
I
define
some
method
like
the
get
name,
get
output
and
get
annotations.
So
if
other
plugins
implemented
this
class,
I
can
use
this
method
to
get
the
the
informations
from
from
from
the
from
those
customers.
A
So
I
think
I'll
start
my
demo,
so
that
would
be
clear,
okay,
so
yeah
here
this
is
a
subscriber,
and
here
we
have
the
ex
applicable
method.
So
it
it
decide
whether
this
whether
this
subscriber
is,
is
applicable
for
the
current
project
and
the
events.
We
have
to
provide
the
the
github
events
you
want
to
subscribe
here.
We
subscribe
the
installation
repository
event
and
the
checkron
and
chigsu,
which
is
here
this
installation
repository
event,
and
you
see
the
payload
here
is
added
is
because
I
installed.
A
I
installed
the
app
on
my
on
my
repository.
Just
now
you
can
see
the
the
the
repository
is
sandbox
and
this
this
this
id
is
an
installation
id.
We
have
to
use
this
to
authenticate
I
design
and
then
repository
or
to
you
know,
in
order
to
use
the
api
used
to
access
the
api.
A
So
here
I'm
going
to
deliver
this
tail
so
here
so
here
we
can
receive
this
event.
The
install
in
installation
repository
event
and
the
up
we
update,
update
the
installation
is
basically
we
map
the
installation
id
to
remap
the
repository
name
to
the
instance
installation
id
because
later
when
we
are
either
handling
the
jenkins
jobs,
we
only
know
the
repository
name
of
the
of
the
job.
We
don't
know
the
installation
id
so
we
have
to
so.
A
I
built
I
made
a
map
here,
so
this
is
korea,
so
if
so
I'll
show
you,
the
check
run
I
made
yesterday
and
here
is-
is
a:
is
it
and.
A
So
can
you
see
it?
Can
you
see
it?
No?
No!
So
the
the
name
is
default
jenkins
wrong.
This
is
because
I
have
I've
provided
a
default
check
around
and
the
name
and
name
is
default
jenkins
wrong.
So
you
can
see
here
shows
the
default.
Drink
is
wrong,
but
I
haven't
provided
other
things
like
output
or
any
annotations.
A
A
A
A
So
if
the
head
is
a
pro
request,
we
can
get
the
repository
for
name,
and
you
can
see.
The
full
name
is
just
like
is
a
repository
in
like,
and
the
headshot
okay,
this
this
takes
a
little
longer.
What
oh?
Yes,
because
yeah!
Yes,
because
I
didn't
open
my
local
network,
I
can't
do
it
now,
because
my
school
network
doesn't
mean
allowed
to
do
that.
A
So
if
I
open
that
I
will
be,
I
drop
off
the
meeting,
so
I
just
show
you
I
just
so
the
headshot
is:
it
will
give
you
the
headshot,
the
current
revision,
which
is
now
I
know
the
this,
this
proquest
and
it
should
be
1
8c8
and
if
we
keep
going
there
is
installation
id
we
can
retrieve
the
installation
id
from
from
the
from
the
map
we
created
earlier.
A
We,
you
know
just
iterating
all
the
consumers
here
the
by
invoking
the
all
method
and
we
create
a
check
around
here.
So
so
we
oh.
A
Okay,
yeah
here
this
method
currently
now.
Currently,
I
just
use
a
apache
client
to
create
a
check
run,
and
here
I
this
this
is
here
is
a
payload.
This
are
some
headers
and
in
the
headers
we
have
to
bear
the
token-
and
here
is
a
is
a
body,
so
the
name
is
a
source
get
name,
and
it's
just
like
the
default
defaults
or
checkron
source.
I
provided
here.
You
know
like
return.
A
The
default
chip
snake,
so
here
is
a
headshot
and
we
set
its
status
into
ku,
and
here
we
send
this
way,
send
this
post
to
github
and
you
will
create
a
new
check
run
on
github,
and
so
the
next
thing
next
thing
when
the
job
has
started
almost
the
same,
except
here
we
just
because
because
back
back
there
we
have
added
all
the
the
creative
backgrounds
and
to
the
to
attach
to
all
the
sources
to
our
our
jenkins
run.
A
So
here
I
add
actions
so
later
when
the
unstarted
is
triggered.
Almost
everything
is
almost
the
same,
except
here
we
just
instead
of
creating
new
check
runs,
we
just
you
know,
get
actions
from
the
run
and
we
update
these
check
rounds.
We
created
earlier
so
here
here
also.
A
A
So
the
next
thing
is
uncomplete.
Also
like
the
unstart
select
on
start
here.
It
just
will
be
complete,
so
you
know
when
we
so
here
we
almost
the
same
like
the
updating,
the
chi
chrome.
We
here
complete
the
check,
run
and
also
some
payloads.
Just
the
conclusion
is
success
and
the
status
is
completed
and
completely
added.
A
A
A
A
A
You
know
like
title
summaries
text
annotations
for
for
lines
of
code
and
the
above
things
we
can
provide
because
the
name
when
the
users
when
the
customers
are
defined
their
extension,
extend
the
extension
point
that,
to
you
know,
implement
the
return
name
and
the
name
is,
is
in
our
control,
so
the
headshot
also-
and
all
this
all
these
things
we
made
don't
need
to
retrieve
them
from
the
consumers.
Just
the
below
part.
This.
B
Cool,
I
posted
a
link
in
getter,
just
showing
you
how
they
get
how
branch
source
plugin
is
looking
up
the
installation
ideas.
I
don't
think
it's
a
group.
B
I
don't
think
it's
a
great
idea
for
us
to
just
store
the
installation
ids
in
a
map
and
relying
on
a
webhook
event.
A
Yes,
yes,
yes,
that's
that's
not
very
clear
because
maybe
you,
if
you
use
that
map
you
have
to
you,
know,
process
that
map
information,
because
the
next
time
when
you
restart
the
jenkins
instance,
you
you
won't
expect
the
the
github
to
send
you
the
repository
installation
event
again.
A
A
Looks
amazing
so
it
cures
yeah.
So
I
don't
so
using
this.
So
we,
if
we
have
this
method,
does
it
mean
that
we
don't
need
to?
You
know,
store
those
installation,
ids
and
I
can
just
directly
use
this
use
this
method
to
create
a
token
and
to
allow
me
to
authenticate
as
an
installation.
B
Basically,
yeah
not
all
the
way,
yes,
but
basically
so
this
is
a
credential,
so
you
call
the
get
password
method
on
the
credential
and
internally.
The
get
password
call
will
return
this
and
it
will
also
handle
caching
for
you
as
well.
C
B
Yes,
so
so,
basically
calling
the
get
password
will
handle
it
for
you,
when
you
retrieve
the
credential.
A
B
No,
you
just
need
the
app
id
and
the.
A
D
This
this
one
of
my
questions
was
exactly
this
thing.
What
so?
Because
if
you
do
it
in
a
map
dynamically
and
banking,
this
down,
you
don't
see
any
yes,
so
it's
better
to
query
for
it.
Yeah.
A
B
C
B
For
now,
this
is
just
handling
getting
you
that
the
this
the
beer
token,
that
you
need
to
pass
to
the
api.
D
Agenda
yeah,
one
thing
I
was
wondering
so
currently
from
the
perspective
of
the
warnings
plug-in
I'm
just
interested
at
the
end
of
the
build.
So
if
the
pin
build
finished,
I
think
it's
okay
for
my
plugin
to
report
the
results
somewhere.
Yes,
actually
I
I
don't
really
care
about
the
progress
during
a
build.
A
Yes,
so
so,
basically
you
you're,
the
the
one
is
next
generation.
Plugin
has,
you
know,
get
its
reports
during
the
during
the
publishing
stage?
I
guess
right.
C
A
So
it's
it's
definitely
before
before
the
uncomplete.
A
You
know
before
the
uncompleted
event
triggered,
so
so,
basically,
what
the
consumers
like
the
wording's
next
plugin
next
generation
plugin
has
to
do
is
because
I
have
earlier
attached
the
attach
the
actions
to
the
wrong
right
and
the
wrong
on
the
under
the
action
bears
a
check
around
source.
A
So
so
what
you
need
to
do
is
to
update
the
the
the
the
fields
in
the
source.
So
here
this
is
the
source,
the
the
source
I
provided
here,
the
extends
they
implement.
The
extension
point
so
here
this
is,
you
know
we
need
many
more
discussion
here,
because
we
have
so
many
parameters
that
we
want
to
retrieve
from
the
consumers.
A
Maybe
we
should
not.
You
know,
implement
this
in
the
class.
Maybe
we
should
use
some.
You
know
like
xmail
or
or
some
other
things,
but
currently
I
use
this
as
a
class.
You
know.
So
if
you,
if
you
implement,
get
external
id
and
get
started
and
get
conclusion,
and
this
method
will
be
invoked
when
the
job
is
uncomplete
and
I
can
retrieve
the
info,
so
I
can
retrieve
the
the
information
the
parameters
from
the
consumers.
D
A
B
The
classes
is
fine,
I
wouldn't,
I
wouldn't
add
everything
yet
just
add
the
important
ones
and
then
and
then
people
can
come
asking
for
what
they
want
or.
A
So
the
next
thing
is
pipeline
support.
I
I
I
I'm
not
very
familiar
with
the
pipeline,
so
I
find
some
resources
from
the
jenkins
developer
guide
and
I
think,
and
so
from
what
I
have
known
now.
A
The
pipeline
we
just
need
to
you
know
like
implement
some
builders
and
the
the
pipeline
well
like
magically
compatible
for
plugins.
Is
that.
A
B
A
C
A
A
Here
is:
what's
it,
this
is
all
about
the
pipelines.
I
know
from
this
post.
So
so
what
I'm
thinking
is
that
maybe
we
should
you
know
like
like
those
parts,
these
parts
we
may
maybe
we
can,
you
know,
implement
them
as
builders
or
publishers,
then
this
maybe
makes
them
make
this
pipeline
compatible.
A
Yes,
the
goal
is
like
you,
you
are
lacking
your
okay,
nothing,
your
posts
about
the
so
currently
the
users
only
can
you
know
like
update
the
information
in
status
form
like
they
can
they
can't
create
a
crazy
runs
about
the
code
like
they
can't
use
the
reports
from
the
warnings
next
generation
plugins
or
coverage
plugins,
and
they
can
report
them
to
the
github.
That's
because
maybe
they
can
maybe
they
can.
You
know
they
can't
access
this
information
in
the
pipeline
script.
A
So
that's
that's
one
of
my
questions
so
does
this
necessary
to
you
to
make
our
or
you
know,
make
our
parking
pipeline
compatible
and
or
maybe
mix
mixing
configurable
by
the
users?
That's
also
my
problem.
A
D
Actually,
I
think
so
that
we
need
to
make
this
happen
in
the
beginning.
So
I
think
the
first
thing
is
to
have
an
api
for
plugins
and
if
there
is
still
some
time
we
can
think
about
it
to
create
a
generic
step
that
can
report
some
texts
or
some
annotations,
but
I
think
the
main
focus
should
be
on
support
for
plugins,
okay,
and
I
I
think
this
could
be
added
later
on
to
have
some
generic
thing.
A
A
A
He
defines
some
general
api,
some
code
steps,
so
I'm
also
thinking
about
the
general
api.
So
here
is
the
idea
from
key.
So
actually
I
think
this
this
this
method.
Actually,
you
know
like
describe
what
our
plugins
have
done,
like
publish
report
to
github
like
subscriber
trigger
events
like
past
report
from
the
customers,
but
I'm
I'm
not
sure
whether
we
can
this.
You
know
this
general
api.
A
I,
where
it
works
so.
A
So
when
I
first
think
about
the
the
general
api
is
that
when
I
saw
because
now
we
know
for
github,
we
use
the
github
branch
source
api.
So
maybe
we
maybe
wait.
Maybe
we
can
use
the
gitlab
branch
source
api
for
the
github
and
feedback
bitbucket
the
source
branch
source
for
bitbuckets.
So
this
is
the
first
thought
when
I
saw
the
general
api-
and
I
don't
know
whether
that's
feasible.
B
D
Okay,
so
now
I
understand
the
question
yeah.
Actually,
I'm
not
sure
I
also
implemented
a
plug-in
with
which
is
requiring
git,
and
I
created
an
api
plug-in
to
make
it
yeah
extensible,
for
instance,
use
subversion,
but
I
think
this
is
something
we
can
look
at
it
afterwards.
So
first
just
create
an
implementation
that
works,
and
then
we
can
see
if
we
can
extend
it
in
an
api.
B
D
A
B
C
D
Even
if
I
so
I'm
not
really
familiar
with
the
github
branch
sounds
api,
I'm
just
using
the
git
systems
in
jenkins.
So
if
I
just
want
to
use
a
git
and
github,
this
is
the
github
plugin,
or
this
is
something
differently
again.
D
A
B
That
that's
what
I
was
just
mentioning
about,
possibly
when
we
might
want
to
separate
out
an
api
plug-in
that
doesn't
depend
on
anything
github
related
and
then
then
our
plug-in
just
handles
their
extension
points.
Okay,
just
so
that
all
the
other
plugins
don't
have
to
depend
on
github
that
want
to
contribute
here.
A
A
So
that's
possibly
about
my
the
things
I
want
to
discuss.
D
And
one
thing
I
I'm
not
sure
about
was
the
reaction
that
you
are
creating.
Is
it
just
so
you
can
find
again
your
intermediate
results.
D
A
D
A
A
A
A
So
you
can
see
here
and
we
have
two-
you
know
like
two
checks:
the
first,
the
this
one,
the
continuous
integration.
This
one
is,
you
is
used
in
the
status
api.
It
just
leaves
one
message
this
community
school.
So
if
you
go
into
the
details,
you
are
going
to
the
ocean
of
the
jenkins
instance,
so
you
can
hear
this
lotion
of
the
drinking
instance.
But
if
you
see
it
watch
the
detail
of
the
checks
and
you
have
go
to
the
the
checks
yeah,
that's
the
difference.
D
B
Yes,
we
get
both
the
results.
We
should
be
able
to
suppress
the
other
one.
Okay,
so
there's
a
way
that
there's
a
plug-in
that
turns
it
off.
So
we
should
be
able
to
do
the
same
thing
that
plug-in
does
and
disable
it
once
we're
stable
enough.
B
C
A
B
Where
is
it
here?
I
just
posted
the
plugin
that
does
it
into
the
get
a
channel,
so
there's
a
so
very
easy
to
implement.
Once
we
want
to
okay.