►
From YouTube: Develop CI/CD best practices with GitLab - Workshop at Collision from Home by Michael Friedrich
Description
Development is more than just code, and last-minute bug fixes on release day can increase stress and lead to burnout. Guided by real-world exercises, learn how CI/CD improves your development workflow, and practice automated build-and-deploy stages.
Slides: https://docs.google.com/presentation/d/1j5ROpjwmBiXqtiHN6lJ20UcJCefw4-KC25lWWoDqTnY/edit?usp=sharing
Repository: https://gitlab.com/dnsmichi/collision-from-home-2020
A
Welcome
everyone
today,
I
want
to
talk
about
developing
the
ICD
best
practices
with
kidnap,
and
we
do
that
in
a
little
workshop
today
in
the
next
20
minutes,
I'm
going
to
provide
you
with
a
short
introduction
mine
over
here,
the
first
steps
we
are
getting
started
with
a
hands
on
the
ICD
project,
so
which
means
we
are
using
a
team
or
go
project
to
test,
build
and
run
it
and
look
look
after
CICE.
What's
next
after
the
workshop,
to
give
you
a
little
introduction
about
myself,
Michael
I'm,
a
developer
evangelist
at
gitlab
and
I.
A
If
you
want
to
reach
out
on
social
media
and
then
in
a
way
else,
I
go
with
the
nsv
key,
which
is
the
lovely
version
of
Marty
in
German.
And
if
you
want
to
learn
more
about
technically
evangelism,
please
be
sure
to
check
out
the
kit
lab
handbook.
But
that's
now
that
not
about
me
it's
about
CICE!
So,
let's
get
started.
A
Why
would
I
want
to
use
the
ICD
continuous
integration,
continuous
deployment
delivery,
depending
on
the
situation?
So
when
you
keep
working
on
a
specific
new
feature,
you
want
to
collaborate
with
your
colleagues,
your
teammates,
but
you
don't
want
to
disturb
them
with
your
changes
because
they
might
be
breaking.
You
want
to
try
things
out
and
come
iterate
on
specific
features,
algorithms
and
just
keep
working
in
your
own
space.
A
And
basically,
you
need
to
need
to
work
over
hours
or
after
our
fixture,
released
and
fix
the
next
release,
and
everything
else
is
just
not
so
not
I'm
using
about
development,
and
you
want
to
make
your
life
pretty
much
more
easier,
more
relaxed
and
also
to
you
want
to
ensure
that
everything
runs
fine.
And
this
is
the
point
where
you
might
have,
for
example,
written
some
unit
tests
or
some
end-to-end
tests
for
your
application
already,
but
every
one
is
random
manually
and
with
in
github,
see
ICD,
you
can
automate
these
steps.
A
You
can
define
jobs
in
your
pipeline
which
automatically
run
the
tests
you
created
before,
or
you
might
need
to
add
them.
You
can
also
deploy
your
code
or
your
website
to
review
application,
which
then
highlights
exactly
the
state.
You
have
just
committed
and
changed
for
someone
to
review,
and
you
can
also
like
test
specific
things.
A
One
thing
which
is
also
worth
mentioning
is
that
you
can
also
integrate
security
checks
in
CI,
CD,
meaning
to
say
application,
security
testing
dependency
scanning
so
that
nothing
gets
deployed
to
production
which
might
contain
a
security
vulnerability
and
that's
basically,
the
entire
workflow
and
it's
overwhelming
I
know.
But
we
need
to
kind
of
find
a
way
to
start
simple,
and
this
is
something
which
we
are
going
to
do
now.
I've
prepared
a
project
over
at
market
net
namespace.
So
you
can
just
check
this
project
out.
You
can
fork
it
and
try
it
out.
A
Once
we
go
along
or
maybe
you
will,
you
watch
the
video
afterwards
and
you
can
just
learn
how
to
use
gdb
ICD.
So
the
thing
is
when
I
navigate
into
the
project,
we
will
be
seeing
a
little
coding
project
with
the
Maine
dot
girl
and
some
library
code
and
way
enough.
For
example,
inspect
the
Maine
dot
girl
I
can
see.
Okay,
we
have
redefining
a
main
package
and
we're
calling
the
main
function,
which
kind
of
prints
code
and
we're
getting
like
read
it.
A
So
the
first
thing
when
receiving
for
code
from
someone
else
or
when
I
even
want
to
start
the
project
is
I'm
going
to
think
about
my
built
architecture,
my
birth
structure
and
how
to
add
automated
testing
and
automated
deployment
afterwards.
So
the
first
first
thing
I
want
to
do
now
is
I
want
to
black
say
to
my
colleagues:
hey
I've
received
this
code
now
I'm
working
on
the
project
and
I'm,
going
to
add
a
new
task
for
myself.
A
A
Of
course
I
want
to
verify
the
test,
stop
being
run
and
someone
needs
to
read
some
dogs,
so
my
colleagues
know
what's
going
to
happen
in
order
to
show
you,
we
can
have
the
check
boxes
and
once
we
are
going
to
create
this
issue,
we'll
assign
it
to
the
milestone.
Now
we
can
see
that
we
can
iterate
Li
iteratively
work
on
under
specific
tasks
and
take
them
if
what,
if
needed-
and
it's
also
highlighted
over
here
and
also
in
the
issue
listing
so
everyone
knows
what
the
state
of
the
issue
is.
A
Now
that
we've
said
we
want
to
create
a
CI
CD
configuration
we
actually
to
do
it,
which
is
the
next
step,
and
in
order
to
achieve
that,
we
don't
need
to
change
into
any
shell
or
something
like
that.
We're
just
staying
in
our
repository
and
we're
making
use
of
the
web
IDE,
which
is
a
little
bit
hidden
over
here.
A
We
can
just
select
it
if
it
worked.
Yeah
it
worked,
and
then
we
get
basically
a
predefined
template.
I
will
now
just
edit
some
parts
and
explain
them
to
you
later
on.
I
just
need
to
ensure
that
the
repository
name
is
the
same
collision
from
home
2020
and
just
checking
in
move
on
took
later
on
work
under
tanuki.
A
The
cool
thing
is
when
I've
just
added
these
changes
created
a
git
branch
which
would
be
an
manual
step
in
for
now.
I
didn't
leave
the
context
so
I'm
still
within
get
lab.
I
can
create,
create
a
moat
request.
I
can
say:
I
want
to
use
fixes
and
then
the
CI
OCD
configuration
for
project.
So
when
this
merge
request
gets
merged
back
to
master,
we
want
to
auto
close
the
issue.
A
I
can
assign
it
to
myself,
might
assign
a
milestone,
yeah
and
then,
let's
just
submit
it
and
see
if
our
source
code
actually
compiles
and
what's
going
on.
As
you
can
see
now,
the
Parkland
is
running
the
pipeline
is,
is
running
on
get
lapto
come
within
the
shared
runners,
so
I'm
sharing
my
resources
with
other
users.
If
I
do
want
to
use
my
own
runners,
it's
totally
fine.
A
So
in
this
case
the
job
failed
and
I
can
see
within
my
pipeline's.
Okay,
it
didn't
come.
It
didn't
continue
in
that
regard,
so
the
former
job
failed
and
the
compiled
job
did
nothing.
I
told
it
before
I
wanted
to
show
you
what
specifically
is
going
on
so
we're
changing
back
into
our
merch
request
and
I
will
show
you
within
the
web
ID,
because
we
can
edit
it
the
partland
failed
and
now
were
just
looking
what's
going
on
inside.
A
A
Whenever
the
test
stage
contain
completes
or
continues,
the
build
stage
will
be
fired
in
our
case.
Go
vet,
for
example,
broke,
and
the
thing
about
here
is
when
I
change
back
to
my
CI
CD
output,
I
can
just
see.
Okay
format
has
has
failed,
doesn't
know
about
the
specific
packaging
killed.
So
the
thing
is
I
kind
of
figured,
maybe
the
import
44.
The
golden
code
is
missing.
The
next
thing
is
to
navigate
back
into
our
merge
request
and
within
the
mush
request.
There's
the
opening
lap
IDE
button,
where
I
can
just
fix
the
code.
A
So
previously
we've
been
in
our
CI
configuration,
but
we
can
also
write
:
code
inside
over
here
and
we
can
fix
it.
So
if
one
of
the
fixes
is
to
just
reuse
what
I've
commented
out
here,
just
the
what
ran
in
too
much
code
and
with
importing
that
it
should
fix
our
code,
I
want
to
commit
inside
the
branch
and
fix
missing
package
import
edge
to
see
if
this
works
committed
and
the
cool
thing
is
once
I've
committed
this
to
the
branch
Oh
to
the
merge
request.
A
The
CI
pipeline
automatically
starts
in
the
background
and
with
the
rocket
icon
over
here.
I
can
just
check
this
out
and
see.
Okay,
it
started
building,
and
while
it
built
I,
can
also
create
it
in
a
new
tab
over
here
and
just
see
what
what
else
is
going
on
whenever
four
month
will
continue.
It
also
runs
tests
and
the
next
top
stage,
with
inbuilt,
will
actually
compile
the
government
binary.
So
it's
running
some
some
arguments
for
Coke
built
and
it
also
defines
an
artifact.
A
So
the
binary,
which
is
which
is
output,
is
put
out
from
Co
build,
will
be
available
from
kit
lab
itself,
so
the
runner
uploads
the
artifacts
in
this
case
the
Tanooki
binary
and
hopefully
the
truck
continues,
which
it
does.
Let's
just
go
back
and
check
over
into
the
pipeline,
which
means
when
the
first
shop
continued.
The
second
one
is
actually
compiling
and
again
I
need
to
wait
a
little
bit
because
every
job
is
just
executed
in
its
own
sandbox.
A
So
that's
also
one
of
the
things
you
always
get
a
reliable
test
environment,
so
every
job
which
is
being
run
is
basically
the
same,
and
you
don't
have
any
like
changes
from
from
a
previous
round
which
installed
a
dependency
which
is
now
there.
But
it's
not
it's
not
expected
to
be
there.
This
is
one
of
the
big
advantages
of
using
container
sandbox
and
always
using
the
same
environment.
As
you
can
see.
A
In
the
output
hours,
our
script
checks
are
being
run
and
the
binary
has
been
built
and
to
run
uploads
the
artifacts
to
the
github
server,
which
then
means
okay,
I
can
just
check
out
the
top
artifacts
over
here
and
see.
Oh
there's,
a
don't
be
binary.
I
could
download
that
now
and
just
try
to
execute
it,
but
it's
kind
of
cumbersome
and
I.
Don't
want
to
do
that.
So
I
can
actually
verify
that
this
is
being
run,
and
this
is
an
this
is.
A
In
order
to
do
that,
we're
just
navigating
back
over
here
in
our
CI
CD
configuration
and
we
can
see
we
have
the
deploy,
stages
or
stage
already
so.
In
this
example,
we
are
just
moving
at
the
bottom
and
say
we
want
to
define
the
run
job.
The
names
are
freely
definable,
we're
adding
a
tab
over
here,
adding
it
to
the
stage
deploy,
can
also
use
autocomplete.
A
We
are
using
the
script
keyboard
to
execute
something
top
and
execute
the
Tanooki
panel,
and
that's
basically
the
thing.
The
third
job
being
added
and
we
commit
our
change
and
say
add,
run,
show
and
actually
let
that
run
and
we
can
see
o
on
the
left.
On
the
right
hand,
side,
the
CI
pipeline
has
been
restarted
and
it
runs
again.
It
doesn't
cache.
The
previous
runs
because,
right
now
we
have
committed
something.
So
we
changed
the
source
code
or
the
CI
configuration.
A
So
when,
when
you
start
coding,
you
might
not
just
use
goal,
and
you
might
just
use
a
different
framework
and
golang
has
the
test
framework,
for
example
built
in
but
Python
or
C++
have
different
frameworks,
so
make
sure
to
check
them
out
and
to
read
scripts
or
item
to
your
CI
configuration
within
our
garnet
project.
This
has
been
achieved
within
the
Tanooki
underscore
test
that
goal
so
basically
that
Saluki
dot
goal
implements
as
a
function
which
provides
a
string.
A
When
you
open
up
the
EMR
when
it
completes,
you
might
want
to
also
close
the
issues
with
edit
the
fixes
hash
one
before
you
can
alter
close
an
issue.
So
when
everyone
approves
the
merge
request,
it
gets
merge
back
to
master
and
the
issue
gets
auto
close,
so
you'd
only
have
to
use
an
extra
step
to
automatically
close.
A
The
things
which
happens
which
happen
next
for
your
CICE
pipelines,
should
be
using
environments
for
diplomas,
we're
using
staging
and
production.
You
can
use
rev
your
apps.
You
can
also
think
about
deployments
with
a
shriek
of
Terror
for
more
read
at
the
end
support
just
using
the
get-ups
workflows.
You
know
you
should
also
think
about
adding
specific
monitoring
to
your
CL
CD
player
five
lines.
So
it's
not
just
about
the
job
fate,
but
actually
your
application
might
deploy
to
a
kubernetes
cluster
or
something
else.
So
you
so.
A
We've
got
our
fancy
tanooki
and
everything
worked
fine,
so
right
now
we
would
be
good
to
go
too
much
too
much
request,
but
that's
just
for
you
and
with
that
thanks
for
for
listening.
If
you
got
any
questions,
I
want
to
learn
more
about
it.
I've
linked
to
get
lab
training,
but
with
that
I
say
thanks
and
waiting
for
the
questions.