►
From YouTube: release-cli development environment
Description
Jaime showing how he develops/tests release-cli, also showing how to run in docker
A
Okay,
let
me
bring
a
terminal
and
then
from
there.
A
Cool,
so
I'm
here
and
I
really
see
like,
can
you
see
my
screen?
Yeah
yeah,
okay,
cool
alrighty,
so
I
I
think
I
just
pull.
Let
me
just
I'm
sure
again.
A
Yeah
cool,
so
the
the
cli
itself
is
actually
very
fairly
simple
to
run.
What
I
normally
do
is
just
call
make,
and
this
should
build
it.
You
can
see
here
basically
removes
whatever
we
have
before,
and
then
it
just
gets
the
dependencies
and
builds
it
and
yeah.
A
Oh
yeah,
so
here
on
the
right
side,
I
have
the
the
command
and,
as
you
can
see,
is
this
really
cli?
It's
fairly
simple
in
terms
of
code,
all
it
does
is
initializes
the
app
and
it
has
some
logging
in
there.
We
use
this
app.
So
I'll
walk
you
through
the
code,
the
for
the
first
part
of
the
code.
I
guess
it's
not
too
not
too
complicated.
A
We
use
this.
Your
fav
cli
package,
which
basically
give
us
like
an
interface
to
to
interact
with
the
cli,
is
the
same
that
the
runner
uses.
So
it's
the
output
is
very
similar.
So
basically,
when
I've
built
it,
I
can
just
call
this
binary
here
and
I
can
just
call
help
and
it
should
give
me
the
output
for
it,
and
this
is
basically
the
two
commands
that
we
have
is
create
and
get
and
then
a
few
of
the
global
options
that
you
can,
that
you
can
configure.
B
A
A
I
just
I'll,
get
a
tag,
this
one
and
then
okay,
so
I
set
the
server.
We
need
a
job
token
or
a
private
token.
So
you
see
there's
two
options
here.
The
job
token
only
works
with
the
ci
job
token.
So
here
you
just
need
to
use
private
token.
A
I
have
that
one
there
and
then
you
can
configure
things
like
the
timeout.
If
you
want
to,
I
think
the
default
30
seconds
should
be
enough.
Then
this
other
flag
is
the
ca
search
bundle
if
you're
using
like
custom
certificates
or
self-signed
certificates,
you
can
find
them
there
if
you
want
to
skip
the
https
verification
and
if
you
want
to
debug,
actually
a
tn
recently
added
this
debug
plug,
so
we
can
see
a
bit
more
in
there
and
then
the
way
this
your
fav
cli
thing
works.
A
B
A
Project,
oh,
I
missed
type
project
id,
there's
a
title
here,
yeah,
so
all
the
global
options
and
then
we
do
get,
and
I
want
to
get
the
help
for
get
yeah
cool.
So
it's
down
here.
Basically
the
options
for
get
is
the
tag
name.
This.
A
B
A
A
A
Get
a
release
by
tech,
name
yeah!
It's
basically
making
this
api
call
okay,
yeah
and
as
you
see,
because
I
pass
a
debug
flag
in
here,
we
can
see
some
information
like
you
know
the
request
that
we
send
and
then
the
response
that
we're
getting
back
from
the
server
and
then
the
json
object
for
the
release
in
here.
If
I
remove
the
debug
flag,
it
should
only
give
me
the
the
json,
so
I
can
just
pass
it
past
it
with
jq,
for
example,
and
then
I
get
the
release
information
in
here.
A
Yeah,
that's
basically
for
getting
a
release.
This
is
the
easiest
command.
The
the
one
for
create
needs
a
bit
more
information,
so
we
can
use
the
help
here.
I
think
the
at
a
minimum.
You
need
to
specify
the
name
and.
B
A
A
Yeah,
and
it
just
gives
you
a
bit
of
information.
So
if
I
go,
if
I
call
it
doesn't
print
the
json
object,
not
when
you
create
one
okay
yeah,
so
that.
A
Yeah
it
does,
but
we
price,
like
the
price,
the
response,
and
then
we
just
print
it
like
this.
It's
like
a
bit
prettier,
okay,
but
yeah.
It
could
be
an
improvement
that
can
be
done
there
and
if
I
just
go
test
today,
it
should
give
me
the
latest
videos,
yeah,
okay-
and
this
should
be
reflected
in
the
ui
as
well
yesterday,
yeah
so
yeah.
That's
that's!
Basically
what
the
really
cli
does
if
you
want
to
work
with
the
cli
by
itself.
So
that's
that's
how
it
works.
A
If
you
want
to
use
it
in
ci,
you
just
need
to
make
sure
that
whatever
machine
is
running,
your
job
has
access
to
the
release
cli,
so
that
the
best
option
is
to
have
the
release
cli
image
and
run
it
in
a
docker
runner,
and
then
it
does
the
thing
by
itself
and
you
know
the
release
keyword.
I
have
something.
A
Yeah,
so
if,
if
you
know
how
that
works,
then
yeah
we
can
maybe
skip
it.
Just
have
a
real
quick
to
show
you
there's
a
release,
keyword
and
then
you
basically
specify
the
same
things.
A
A
B
A
Yeah,
okay,
so
make
tests.
It's
just
give
you
like
a
lot
more
information,
but
yeah.
It's
the
same
as
pages
okay
and
then
yeah.
I
do
you
want
to
see
the
docker
file
or
how
that
works
and
stuff
yeah
if
possible,
yeah.
So
we
built
this
in
ci
for
the
image
that
gets
pushed
so
here
in
the
build
scripts.
A
B
A
It's
a
bit:
it's
a
bit
painful
this.
This
wrencher
sometimes
doesn't
work
like.
I
just
need
to
restart
it.
For
some
reason
it
uses
like
a
a
lima
virtual
machine
under
underneath,
and
then
it
runs
docker
inside
the
the
virtual
machine.
So
it
exposes
like
the
interface
to
your
mic
and
then
it
just
like
sometimes
doesn't
work.
A
A
Yeah
this
should
take
a
while,
but.
A
Basically,
once
this
is
built
in
theory,
you
can
just
do
docker
run
and
then
you
can
probably
you
need
to
pass
like
the
the
current
environment
or
where
the
project,
where
you,
where
you're
running
from
so
I
normally
do
here
and
then
to
whatever
whatever
you
want
to
do
so,
go
ahead.
What
it
does.
B
It
it's
mountain,
the
volume.
B
A
Okay
and
then
in
here
you
can
just
say:
look
around:
you
need
to
pass
the
the
image
name
so
because
I
tagged
it
as
this
release.
Cli
test,
really
click.
A
A
A
B
A
A
In
the
in
the
meantime,
I
don't
know
if
you
had
questions
about
the
code,
do
you
want
me
to
walk
through
it
or
are
you?
Are
you
happy
with
just
exploring.
A
Yeah
so
I'll
give
you
a
quick
overview.
The
main
package
basically
just
calls
this
app
new,
and
this
creates
this
your
fav
cli
instance,
and
it
gives
it
a
few
commands
or
a
few
configurations.
So
if
you
want
to
modify
the
help
text,
for
example,
you
can
do
so
by
defining
some
of
the
functions
in
here
and
then
you
just
basically
pass.
A
However,
however
many
commands
you
want
to
add,
so
if,
in
the
future
you
wanted
to
add
an
update,
for
example,
you
will
need
to
implement
the
command
here
and
then
just
pass
it
from
from
here.
This
list
of
commands
are
defined
in
this
package
in
the
commands
package,
so
there's
one
create
and
then
there's
one
get
and
then
each
sub
command.
A
A
A
Instead
of
you
know,
instead
of
printing
the
full
json,
we
just
print
some
information
about
it
and
that
that's
pretty
much
it
the
for
the
get
command
is
very
similar.
It
gets
the
release
and
this
one
actually
prints,
so
it
creates
a
json
encoder
and
then
encodes
the
release
object
in
json
json
format,.
A
To
us
there,
no,
this
is
actually
just.
I
think
it's
because
we're
building
is
the
docker
client
building
the
image,
and
it
just
prints
this
in
different
color.
For
some
reason:
okay,
yeah.
A
A
It's
here
this
is
the
tag,
and
this
is
a
sha
that
is
generated
as
well,
so
it
should
match
always
so
if
we
call
docker
run
now
yeah,
but
we're
mounting
the
directory
into
here,
we're
just
saying
work
from
this
directory
and
then
like
this.
A
A
A
A
Yeah,
so
if
I
just
call
it
from
here,
it's
the
same.