►
From YouTube: Trigger separate deployments
Description
Related to https://gitlab.com/gitlab-com/gl-infra/delivery/-/issues/1578
A
All
right,
so
I
prepared
like
on
a
small
agenda.
I
don't
know
if
you
saw
it.
B
A
So
I
was
reading
through
the
issue
and
through
the
epic-
and
I
do
have
some
questions
about
it,
mostly
about
what
we
are
trying
to
solute
to
fix
and
how
do
we
plan
to
fix
it?
So
when
I
read
about
this
pipeline
this
coordinated
pipeline,
I
have
some
trouble
imagining
it
or
visualizing
how
it's
going
to
be
in
my
head.
B
B
So,
okay,
so
we're
thinking
about
this
one
one,
five,
seven,
oh
seven,
eight-
and
this
is
representation
of
the
of
the
desired
state
of
the
pipeline
that
we
want
to
have
so
right.
Now,
where
is
the
powerful
zoom
thing
here?
It
is
annotate.
B
I
hope
it
works
so
right
now
we
have
this.
This
things
is
already
in
place:
yeah,
okay,
so-
and
here
is
a
trigger.
This
is
a
trigger
from
it's
a
fire
and
forget
trigger
from
release
tools
to
the
deployer.
Deployer
has
one
of
the
reason
why
the
player
is
so
complex
is
because
you
support
multi-environment.
B
B
Everything
is
at
least
duplicated
four
or
six
times.
I
don't
remember,
because
we
also
handle
pre-prod
and
other
environments,
so
every
every
single
job
is
generated
or
just
edited
or
duplicated
for
every
environment,
okay,
okay
and
then
we
have
special
rules
with
special
jobs
that
are
only
there
if
you
have
more
than
one
environment,
think
about
baking,
time
or
manual
promotion.
This
is
a
special
job
in
a
special
stage.
That
is
there
only
if
the
deploy
environment
variables
contains
cannery
and
production,
at
least
canary
and
production
right.
So
this
is
level
of
complexity.
A
B
B
So
we
would
like
to
draw
here
okay,
so
we
would
like
to
trigger
every
single
environment
as
a
single,
isolated
deployment.
Okay
and
we
and
because
we
want
to
trigger
then
the
next
one
we
need
to
wait
now.
We
need
to
wait
for
for
the
end
of
the
for
the
trigger
pipeline,
but
there's
an
extra
thing
that
we
want
to
do
right.
So
this
is
part
of
the
this
epic
here,
the
phase
two,
which
is
a
it's,
a
big
happy
which
is
also
about
what
can
we
move
away
from
release
tools.
B
Because
many
things
are
just
triggers
back
to
release
tools
or
just
triggering
other
thing,
or
just
things
are
already
implemented
in
chat
ups
or
in
release
tools
and
just
just
duplicated
code,
which
often
times
is
in
in
ansible
or
is
in
python
or
some
scripts
are
in
ruby.
B
So
if
we
could
move
more
of
the
knowledge
back
to
the
release
tools
where
most
of
the
team
can
operate
freely
will
be
better
and
we
have
more
control
over.
What
is
what
is
happening
right
so,
but
this
is
the
and
the
end
goal
of
the
epics.
But
this
epic
is
we're
working
on
this
right
now,
because
it's
important
for
rollbacks.
So
this
is
not
the
main
epic
of
this
quarter,
so
we
would
try
to
do
what
we
need
for,
but
not
to
do
the
not
to
complete
the
whole
habit.
B
A
B
B
A
B
And
manual
promotion
is
exactly
the
same
thing,
but
is
it's
a
manual
job
and
not
a
delayed
job
and
I'm
I'm
sure
quite
sure
that
basically
there's
one
environment
variable
the
difference
that
basically
inform
the
release
tools
if
it's
a
baking
time
check
and
so
the
basically
the
difference
in
the
message
that
gets
printed
out.
One
is
writing
to
the
monthly
issue,
the
manual
promotion
right
to
the
mental
issue,
making
time
brightens
luck,
I
I'm
quite
sure
it's
just
handled
by
an
environment
variables.
A
B
This
is
just
move
it
in
gitlab
yaml
in
in
release
tools,
and
is
there
yeah?
That's
why
I
I
was
putting
this
here
and
then
the
final
one
is
triggering
production
deployment.
Now
I
want
to
keep
this
in
parallel
with
this
trigger
here,
the
old
one.
For
a
reason,
there
are
many
moving
parts
here
as
well
as
we
want
to
simplify
the
deployer.
We
want
to
remove
the
ability
to
trigger
more
than
one
deployment,
so
here
it
is.
B
A
Yes,
yes,
it
does.
So
to
summarize,
we
are
going
to
basically
trigger
a
deployment,
a
deployer
pipeline
for
every
environment.
A
We
are
not
going
to
move
like
the
radical
idea
that
jarv
mentioned
about
moving
like
the
ci
into
the
release
tools,
at
least
not
for
this
iteration,
perhaps
later,
but
not
for
this
one,
and
you
mentioned
that
you
want
to
have
two
two
deployments
short
speak
like
once,
one
that
one
we
have
today,
the
the
long,
the
long
one,
the
multi
environment,
one
and
another
one
that
is
going
to
use
a
different
branch,
the
next
gem
branch
that
is
going
to
be
kind
of.
Well,
then,
the
new
implementation
right.
B
B
That
that's
the
check
mode
I
I
should
have
explained
because
I
know
what
it
is,
but
when
you
have,
when
you
set
check
underscore
mode
true,
I
think
in
in
the
in
the
deployer.
Basically,
it
runs
ansible
in
check
mode.
Running
ansible
in
check
mode
means
that
it
just
go
through
all
the
steps
telling
you
what
would
have
changed
without
touching
it.
A
B
And
when
we
are,
when
we
like
what
we
see
we
can
tweak,
we
can
make
a
vision
flag.
Whatever
we
think
is
the
right
thing
to
do
here.
We
can
have
something
that
allows
us
to
say
for
a
deployment.
We
want
to
test
the
the
new
one
instead
right,
so
we
just
flip
it
run
it
and
say
yeah
it's
working
and
then
we
can
go
back.
B
Okay,
so
that
that's
that's
the
idea.
I
would
like
to
talk
about
a
bit
more
about
the
waiting
part,
but
if
you
have
other
questions,
we
can
go
through
your
questions.
First,
no
problem,
no.
A
No,
I
think
that
that
one
was
basically
answering
my
first
question.
The
second
question
that
I
have
was
basically
related
to
the
waiting
time,
because
right
now,
let's
say
that
we
are
going
to
deploy
staging
since
we
are
going
to
trigger
separate
deployments.
A
B
So
it's
a
tiny
bit
different,
okay,
okay,
so
omnibus
and
cng
are
clever
in
sense
that
we
know
that
they
always
take
at
least
30
minutes,
something
like
even
more
so
they
would
never
take
less
than
30
minutes.
Let's
say,
okay,
so
we
wait
we
delayed
pipeline,
I
think,
dear
to
me.
I
don't
remember
basically
before
starting
active
waiting.
B
We
just
have
delayed
job
so
that
we
don't
waste
money
on
waiting.
Okay,
then
we
we
start
waiting
and
we
have.
You
can
see
it
because
it's
based
on
what
is
in
the
retriable
jam.
So
we
have
this
retinol
gem.
That
catches
exception
right
and
it
has
a
special
context
with
special
default
values
for
handling
long
wait
because
by
default,
retireable
never
waits
more
than
15.
B
Minutes
is
designed
for
things
that
should
happen
quickly,
but
if
they
are
basically
designed
for
api
right,
so
you're
asking
something,
and
maybe
the
system
is
under
eavy
load.
So
you
don't
want
to
ddos.
You
start
waiting
more
and
more
and
more,
but
you
are
waiting
for
something
that
should
be
so.
We
are
waiting
for
the
system
to
be
not
under
if
load.
B
While
here
we
are
waiting
for
something
that
is
designed
to
take
a
long
time
to
run
so
it's
basically,
the
numbers
are
tweaked
a
bit
so
that
it
doesn't
time
out
after
15
minutes
and
things
like
that,
and
so
that's
basically
active
waiting.
So
it's
a
waste
of
time,
but
cng
and
omnimas
there's
no
way
around
it,
because
it's
on
another
instance,
so
we
trigger
on
dev.
B
A
B
There
are
a
couple
of
nice
things
here.
First,
one
is
this.
So
if
we
generate
this
type
of
report
here
a.m,
report
the
job
that
will
load
that
that
that
artifacts
will
have
those
those
variables
defined,
which
is
super
cool.
Then
here
we
have
a
bridge
job
that
can
trigger
another
pipeline
in
the
same
environment
in
the
same
instance.
B
So,
basically
here
we
treat,
we
may
trigger
the
deployer
instead
of
this
test
here
and
when
we
say
that
strategy
is
dependent.
We
say
we
want
this
bridge
job
to
wait
until
the
end
of
the
of
this
triggered
pipeline
and
reflect
the
status,
and
this
is
this
is
cool
because
it's
no
longer
active
waiting.
It's
just
for
free,
it's
just
the
same
instance
that
will
move
your
pipeline
when
the
next,
when
the
trigger
one
is
completed.
A
B
So
what's
the
problem
here
as
jarv
mentioned,
if
the
something
that
we
trigger
fails
this
this
the
whole
pipeline
just
got
stuck
because
basically
the
bridge
job
will
fail
and
the
failure
of
a
bridge
job
will
set.
The
next
stage
has
skipped
so
in
our
case,
think
about
it.
The
trigger
staging
it
fails
because
of
qa.
Facebook
is
a
flaky
test.
I
mean
qa,
if
usually
for
qa
can
be
a
real
failure.
B
It's
a
bug,
it's
definitely
a
bug,
because
if
you
refresh
it
so
if
you
try
it,
it
will
be
green
and
the
whole
pipeline
will
be
marked
as
succeeded,
even
if
more
than
half
of
it
is
skipped
yeah.
So
what
I
was
has
I'm
trying
to
ask
reach
out
to
the
pm
for
verify
to
figure
out
if
they
can
kind
of
prioritize?
That
fix,
I
mean
there's
the
full-blown
issues
about.
B
Can
we
retry
the
whole
pipeline,
which
will
be
nice,
but
I
don't
care
right
because,
as
a
release
manager,
we
can
we
can
manually,
try
the
job
that
failed.
Usually
it's
one
or
two,
no
more
so
it's
still
doable,
but
then
the
the
trigger
the
pipeline
should
pick
up
the
the
the
next
stages,
basically
yeah.
If
it
is
stuck,
we
we
can't
use
it
so
because
of
that,
I
will
hope
that
we
get
a
fix
in
time,
but
I
will
consider
doing
active
waiting
because
we
already
have
the
code
more
or
less
right.
B
A
A
B
I
would
say
why
not
doing
something
different,
which
is
we
by
default.
We
delay
by,
let's
say
40
minutes.
It
would
never
take
less
than
40
minutes
to
run
a
full
deployment,
not
even
on
staging.
It
should
be
around
one
hour,
so
we
say
we
wait
40
minutes
and
then
we
start
the
job
which
can
wait
another.
B
B
My
point
is
because
let
me
try
so
right
now
we
can
do
something
like
this.
We
can
do
active,
active
waiting
on
staging
and
cannery
and
passive
waiting
on
production
reason
being
I
want
to
see
the
red
pipeline
in
the
end
if
production
fail,
but
I
don't
care
about
waiting,
because
I
have
nothing
to
do
after
that
right
now
in
the
pipeline
that
we
are
designing.
A
B
Okay,
so
even
given
that
I
would
say
that
staging
in
canary
roughly
takes
this
the
same
amount
of
time
to
deploy
because
same,
I
want
to
machine,
see
it's
it's
a
it's
a
small
environment.
B
A
Yeah,
I
I
wasn't
sure
if
staging
and
canary
deployment
lasts
the
same
because
staging
actually
executes
post
migrations
and
canary
doesn't
so.
For
me,
it
is
kind
of
a
larger.
For
me.
I
think
canary
from
at
the
top
of
my
head
normally
lasts
like
less
than
an
hour
any
stage
in
it
can
be
an
hour
and
a
half.
B
Yeah,
but
you
know
on
stage
this
is
true,
but
staging
is
a
smaller
footprint,
so
less
concurrent
requests
so
either
regular
and
post
deployment
migration
take
less
because
there's
no
busy
tables
there,
which
is
not
true
for
canary,
because
you
do
the
regular
migration
there
and
oftentimes
you
may
have
a
busy
table,
so
it
may
take
a
long
time
even
for
them,
because
I
think
the
maximum
time
out
for
a
single
migration
is
40
minutes,
because
we
do
the
retry
thing
right,
so
it
requires
up
to
40
minutes.
B
I
don't
remember
the
correct
numbers,
but
but
my
my
I'm
trying
to
given
a
ballpark
number
here
that
kind
of
works,
but
if
it
doesn't
work
we
can.
We
can
tweak
it
later
because
right
now,
this
is
this
would
not
cancel
ongoing
deployment.
B
A
Okay,
yeah,
I
think
I
think
it
makes
sense.
I
guess
I
was
remembering,
like
a
net
cage
in
which
staging
actually
had
millions
of
records
in
production
have
like
me
like
100,
so
it
was
an
hk,
so
I
I
think
we
shouldn't
consider
it
okay.
So
I
just
just
another
question
regarding
implementation
that
you
told
me
it
was
we
are
going
to.
I
guess
it's
not
clear
to
me
about
having
a
delayed
waiting
like
the
same
that
we
have
from
baking
time
and
then
we
are.
We
actually
start
waiting.
A
I
get
the
answer
because
yeah
yeah
I'm
trying
to
wrap
my
head
around
the
idea
that
you
proposed
about
having
a
delayed
waiting.
A
B
B
B
So
basically
this
job
here
and
you
can
check
it
out
by
yourself-
is
just
searching
for
the
for
the
pipeline.
B
Knowing
the
tag
it
just
finds,
the
the
the
url
of
the
pipeline
on
on
the
dev
instance,
and
it
waits
it
just
it
loops
and
every
minute
check
is
this
done
not
yet
is
it
done
not
yet
up
to
the
maximum
timeout,
but
instead
of
starting
immediately,
it
will
start
45
minutes
after
the
we
complete
tagging?
That's
it
got.
A
It
yeah
it
is
the
same
idea:
okay
cool.
So
we
are.
I
just
passed
our
time,
but
just
one
last
question,
so
the
scope
of
this
issue
is
just
triggering
a
separate
deployment
for
staging
then
for
canary
and
then
move
baking
time
and
promotion
to
release
tools
and
finally
trigger
production
right,
yeah,
the
other
jobs,
q,
a
and
whatever
they
are.
A
Okay,
all
right,
yeah,
okay!
Well,
thank
you
for
answering
all
my
questions.