►
From YouTube: Lightning Talk: How the Yahoo/Verizon Media Python Screwdriver Template Philosophy... Dwight Hubbard
Description
Lightning Talk: How the Yahoo/Verizon Media Python Screwdriver Template Philosophy for CI/CD Made Collaborating Less Like Herding Cats - Dwight Hubbard, Yahoo/Verizon Media
In this talk, Dwight will explain the philosophy Yahoo/Verizon Media uses to design and support the Python language templates for Screwdriver (open source build platform designed for Continuous Delivery), and how the philosophy simplifies ease of use and supports Screwdriver for CI/CD.
For more Continuous Delivery Foundation content, check out our blog: https://cd.foundation/blog/
A
A
A
So
what
is
screwdriver?
Well,
it's
an
open
source.
Ci
cd.
It
uses
a
file
called
screwdriver
yaml.
This
configuration
file
consists
of
jobs
that
run
shell
commands
inside
operating
system
images,
frequently
containers
and
they
are
triggered
by
some
sort
of
trigger.
It
can
be
a
git
commit
or
the
completion
of
other
jobs.
A
So
what
is
a
screwdriver
template?
Well,
a
template
is
a
pre-defined
job
configuration
that
can
be
used
as
a
basis
to
define
a
job
in
the
screwdriver
yemen.
So,
since
screwdriver
yellow
consists
of
jobs
that
are
triggered,
the
template
provides
you
with
a
job
configuration
based
on
a
name,
so
you
can
say
so.
A
template
consists
of
a
namespace,
slash
name
and
then
all
the
job
attributes
the
image,
which
is
the
operating
system
container
environment
variables
that
are
set
before
the
commands.
A
Shell
commands
that
the
job
executes
are
executed,
any
secrets
that
need
to
be
fetched
from
screwdriver's
credential
store,
as
well
as
steps
which
are
named
sequences
of
shell
commands
to
execute
to
execute
that
job.
A
A
Our
templates
have
a
release
number
as
part
of
it,
so
that
we
can
have
different
versions
of
the
template
and
within
our
templates
they
are
all
named
for
the
functionality
they
provide,
not
the
tool
that
provides
it.
This
allows
developers
to
find
the
template
that
does
what
they
want
without
having
to
know
the
names
of
the
tools
that
are
actually
providing
the
functionality.
A
A
Next,
we
try
to
be
consistent
and
extensible
with
the
environment.
We
put.
Many
templates
have
the
same
configuration
setting
values.
We
make
it
a
point
that
those
setting
values
all
have
the
same
name
and
they
all
perform.
The
exact
same
function
example
of
this
is
there's
a
setting
called
base
underscore
python,
and
this
environment
variable
specifies
the
python
interpreter
that
the
template
will
use.
This
allows
the
developers
to
use
our
template
and
then
specify
a
different
python
interpreter.
A
In
addition,
we
want
to
make
our
steps
in
our
templates
consistent
and
extensible
as
well
right.
Many
of
our
templates
have
common
steps
right,
they're,
the
same
steps
in
different
templates,
so
they
all
have
the
same
name
and
they
execute
the
same
commands.
So
they
work
the
same
in
all
of
our
templates
no
surprises
for
the
developers.
A
There
are
some
useful
common
steps
that
our
templates
have,
that
we
provide
that
provide
functionality
that
we've
found
as
a
philosophically
to
be
very
useful.
All
of
our
templates
have
a
beginning
and
an
end
step.
That's
because
screwdriver
allows
the
developers
to
add
their
own
steps
before,
after
or
as
a
replacement
for
an
existing
step.
So
by
having
a
begin
step,
the
developers
can
put
stuff
at
the
beginning
by
having
an
end
step,
it
makes
it
easy
for
the
developers
to
add
commands
at
the
end.
A
We
also
provide
a
step
called
init
os,
since
our
templates
are
for
python.
The
init
os
step
is
used
in
all
of
our
templates
to
make
sure
that
the
template,
the
container
that
is
running
the
template,
has
a
working
python
runtime
and
if
it
doesn't
it
installs
one
so
that
we
know
when
that
step
completes
that
python
is
working
in
the
container.
A
So,
in
most
cases
the
developers
can
use
the
default
configuration
and
they
don't
have
to
know
how
to
configure
the
tool
and
just,
as
importantly,
if
there
are
need
changes
needed
for
the
configuration
files,
because
newer
versions
of
our
tooling
makes
changes
that
require
configuration
changes.
We
can
make
those
changes
in
a
single
location
for
the
default
configurations
instead
of
having
to
change
every
single
repo,
because
they
don't
all
have
the
configuration
files.
However,
the
init
only
copies
default
configurations
in
if
the
configuration
file
isn't
already
there.
A
This
means
developers
if
they
need
a
more
advanced
configuration.
They
can
put
it
in
their
repository
and
still
use
our
template.
So
they
get
the
extensibility.
They
get
the
functionality
of
our
template
with
the
ability
to
use
their
own
configurations,
which
makes
them
happy
because
they
don't
have
to
deal
with
many
things,
but
the
things
they
want
to
deal
with
they
can.
A
And
finally,
our
templates
are
consistent
and
extensible.
So
at
the
end
of
our
templates
we
make
it
a
point
to
save
the
configuration
files
that
the
templates
commands
used.
All
the
log
files
that
were
generated
any
reports
and
all
generated
artifacts
in
the
build
artifacts
or
screwdriver.
A
This
happens
even
when
things
fail,
because
it's
when
things
fail
that
you
really
can
care
about
the
log
files
and
the
configurations
that
cause
of
things
in
the
log
files,
and
that
is
it-
that's
our
a
quick
and
dirty
philosophy
of
how
we
do
python
screwdriver
templates.
I
hope
you
have
a
great
day.