►
From YouTube: Brown Bag: Windows Development on GCP
Description
Talk through how to do Window development for GitLab with google compute platform.
The agenda of the video follows:
- Current state of Windows on GitLab CI/CD
- GCP Windows Image for Development
- Demo: How to use a Windows image on GCP
- Windows Developer Tips
A
A
So,
first
off
I,
don't
think
this
is
gonna.
Take
a
whole
hour,
so
there'll
be
plenty
of
times
for
questions
as
we
go
feel
free
to
interrupt.
If
you
have
a
question,
I'll
probably
cause
a
couple
different
times
double-check
and
see
if
there
are
any
and
then
we
can
talk
through
things
and
maybe
do
a
live
demo
at
the
end,
if,
if
anyone's
curious.
A
A
Windows
features
for
forget
lab
if
I
can't
and
don't
have
a
Windows
machine,
I'll
also
throw
out
the
disclaimer
that
I
hadn't
touched
Windows
for
well
over
a
decade
to
this
point
so
very
well:
entrenched
Linux
and
Mac
users.
So
some
of
this
is
just
the
learnings
that
I
had
and
then
also
the
pattern
that
I
found
that
allowed
me
to
explore
the
dotnet
framework
on
Windows
with
gitlab.
A
So,
what's
in
the
brown
bag,
first
we'll
go
over
the
current
state
of
Windows
and
get
labs,
C
ICD
and
we'll
talk
about
how
we
could
have
a
Google
compute
image
that
would
allow
for
quick
development
machine
to
be
spun
up.
Then
I'll
run
through
a
screenshot
demo,
basically
of
how
you
could
use
this
image
on
Google
compute
and
then
we'll
talk
for
some
of
the
windows
developer
tips
that
I
gained
as
I
dove
into
Windows
coming
from
Linux
and
Mac.
A
A
To
use
them,
it's
quite
easy,
actually,
all
that
you
really
need
to
do
or
to
add
these
three
tags
to
your
job
and
your
CI
CD
configuration
and
it
will
use
the
Windows
runner
here
in
the
next
slide.
We'll
talk
more
about
the
environment
and
what's
included,
but
one
thing
to
note
is
that
the
workflow
is
likely
a
bit
different
since
it
doesn't
have
the
docker
executors.
So
your
script,
your
before
and
after
script,
are
all
ran
inside
a
Windows
shell,
basically
I
think
PowerShell
is
probably
available
as
well.
Inside
of
those
scripts.
B
C
A
Know
not
that
I'm,
aware
of
right
now,
as
I
mean
it'd,
be
great
to
reach
out
to
the
runner
team
and
they
probably
have
a
better
answer
there,
but
I
talked
to
them
about.
Where
should
I
even
get
started,
because
I
want
an
environment
that
was
similar
to
what
I
would
get
with
the
shared
windows
runners
so
that
you
know
I
I
could
be
very
be
able
to
use
those
in
my
research
but
as
far
as
I
know
and
we'll
get
to
it.
A
When
I
show
you
how
I
went
about
building
the
Google
compute
instance
they're
using
Packer
to
build
it
and
I
believe
they're
only
building,
based
on
top
of
one
version
of
Windows
at
this
point,
but
I
think
that
is
interesting
question
and
that
may
be
why
they
have
that
tag
and
maybe
in
the
future.
You
know,
they'll
have
a
different
tag.
If
you
want
a
different
version.
Okay,.
C
B
B
A
Oh
and
just
a
double
check
that
I
did
this
right.
You
guys
you
all
see
just
the
slides
right
it
not
my
other
screen,
that's
correct!
All
right,
any
other
questions.
Who's
there
been
great
all
right,
so.
A
I'm
sure
it's
all
it's
all
in
there,
so
here's
here's
a
truncated
list
of
some
of
the
stuff,
that's
included.
Currently
on
the
share
of
Windows
runners.
You
can
see
there's
a
package
manager
or
chocolaty
some
build
tools
from
Visual
Studio
and
you
get
or
you
get
or.
However,
you
say
that
curl
W
get
and
then
you
can
see,
there's
also
some
common
languages.
We
use
here
and
get
loud.
Ruby
goes
no
js'
and
it
says
ocker
compose,
but
docker
also
has
also
you
can
use
docker.
A
If
you
have
admin
access
to
the
instance,
this
was
something
that
I
actually
was
able
to
do
with
the
thing
that
I
was
researching.
It
ran
or
required
dotnet
3.5,
which
the
shared
burners
don't
have,
and
so
I
actually
used
this
development
engine
edge.
That
I
was
using
and
then
connected
it
to
the
repo
that
I
was
working
through
that
had
known
vulnerabilities
to
see
that
our
static
analysis
tool
was
working
correctly.
So
we'll
talk
more
about
that
later,
when
we
have
a
devil
machine
that
we
can
use.
A
So
now,
let's
talk
about
how
you
would
create
a
Windows
image
and
how
I
went
about
it
and
I
think
the
windows
or
the
runner
team
is
doing
something
similar
they're
using
Packer,
which
is
an
easy-to-use
tool
that
you
can
configure
how
to
build
it,
an
image
and
its
cloud
agnostic.
So
you
could
do
it
in
Google,
compute
or
ahead
of
us
or
Mazur
and
I
think
a
few
others,
potentially
even
maybe
even
VirtualBox.
A
So
it's
a
really
nice
infrastructure
as
code
tool
that
allows
you
to
build
reproducible
images
and
define
them
in
code,
and
so
I
have
a
link
here
that
sends
that
where
you
could
go
and
take
a
look
at
the
code
that
would
be
required
to
build
this,
but
since
they've
built
it
this
way.
It
also
means
that
you
can
clone
this
repo
and
then
set
up
a
few
environment
variables
and
build
it
yourself.
A
Here
are
a
few
steps
that
you
would
need
to
do
to
be
able
to
use
this
repo
to
build
your
own
image
and
Google
compute
you'd
have
to
install
Packer
and
it's
known
to
work
with
version,
one
five
one,
which
is
what
I
ended
up
pinning
to
I
think
there
might
be
a
newer
version
or
two,
but
I
can't
remember
if
it
was
the
gitlab
Packer
repo
or
if
it's
that
this,
a
Windows
Update
provisioner
Packer
plug-in
that
you
have
to
install.
But
one
of
the
two
said
that
they
work
with
one
five
one.
A
So
I
thought
no
need
to
go
with
the
latest.
I'll
just
go
with
what
they're
using
and
then.
The
other
thing
that
this
remote
relies
on
is
that
you
have
a
Packer,
Windows,
Update
provision
or
plug-in
installed,
which
allows
the
Packer
configuration
to
update
windows
at
the
end
of
its
run,
installing
everything
so
that
your
image
is
up
to
date.
And
it
actually
was
a
little
bit
complicated
to
figure
out
at
first,
because
if
you
go
to
their
repo
they're
on
github,
they
build.
A
They
build
an
executable
from
their
go
source
code
for
Linux
and
for
Windows.
They
don't
build
it
for
Mac.
So,
unfortunately,
in
order
for
that
to
work,
you
have
to
clone
it,
you
have
to
build
it
with
go,
and
then
you
then
need
to
make
sure
that
that
executable
is
part
of
your
shell
path
for
wherever
you'll
be
running,
Packer
you'll
need
to
then
inside
of
the
Packer
Jason
you'll
see
at
the
very
top.
There
are
a
few
environment.
A
One
thing
to
note:
if
you're
in
the
group
secure,
Google,
Cloud
Group,
you
can
go
ahead
and
use
the
GCP
image
for
I
already
built
it.
So
we've
got
that
done,
but
we've
also
been
segmenting
some
of
our
different
teams,
and
so
I
wanted
to
make
sure
to
cover
this
in
case
another.
Your
team
wanted
to
work
with
a
feature
that
they
needed
Windows
to
do
development.
A
What
one
other
point
here,
though,
to
make,
is
that
I
can't
remember
how
I
got
GCP
to
help
me
to
build
it,
because
it
doesn't
ask
me
for
a
password
I,
don't
remember
how
Packer
authenticates
with
Google
compute.
It
could
have
been
because
the
I
already
had
installed
the
g-cloud
CLI
tool
and
had
configured
there.
But
you
know
if
anyone's
working
through
this
in
the
future
and
would
like
someone
to
pair
with
them.
A
B
I
was
thinking
you
do
it
with
a
runner,
but
you
should
know:
there's
a
PS
Windows
Update
powershell
plugin
that
you
can
just
do
install
package
and
get
that,
and
so
you
can
skip
that
whole
part.
And
then
it's
got
very
straightforward
command
lines
to
do
the
patching.
So
you
could
then
just
pull
that
PowerShell
plug-in
down
and
then
I'll
run
all
yourself
and
skip
the
built-in
Packer
one.
If
it's
giving
you
a
lot
of
troubles
to
get
it
set
up
right,
just
yeah.
A
Yeah
thanks
for
the
call
on
the
Mac
piece,
cuz,
yeah
I
know
a
lot
of
us
use
Linux
and
if
you're
using
Linux,
then
you
likely
just
need
to
download
the
latest
binary
from
github
there
and
put
it
in
your
path,
so
that
would
solve
that
for
Linux
and
then
yeah
darwin.
If
you
wouldn't
mind,
maybe
opening
an
issue
or
a
comment
on
that
repo
that'd
be
great.
Otherwise
I
I
can
look
into
that
as
well.
A
A
A
This
took
a
little
bit
to
find,
but
you
go
to
the
hamburger,
menu
compute
engine
and
then
images,
and
then
you
click
the
name
of
it
and
then
in
there
you'll
have
this
option
to
create
the
instance
once
you're
there.
Then
it
takes
you
to
a
page
where
you
can
configure
your
VM,
but
one
thing
that
you'll
want
to
make
sure
to
do,
because
the
default
is
like
instance,
one
or
instance.
Two
it's
a
very
generic
is.
A
This
is
the
only
opportunity
you
have
to
set
the
name
for
your
VM
and
since
these
have
been
things
that
I've
been
developing
with
and
I
want
other
folks
coming
into
our
group
to
know.
Oh,
he
created
this
I've
been
prepending
it
with
my
email.
Slash
get
map
handle
so
folks
know
that
I
created
it.
So
this
is
your
only
chance
to
do
that
and
then
I
set
the
region
in
the
zone
to
be
as
close
to
me
geographically
as
possible,
and
there
may
be
other
options
that
you
may
want
to
do.
A
But
once
you've
got
all
of
those
things
figured
out,
then
you
just
scroll
to
the
bottom
and
if
the
create
button
and
then
it'll
redirect
you
to
the
VM
instances,
page
depending
upon
the
state
of
things
or
maybe
a
lot
of
instances
and
it
may
or
it
may
be
really
easy
to
find
it.
You
can
click
into
the
filter,
VM
and
find
it
once
you
find
it.
You'll
want
to
go
ahead
and
click
on
your
name
and
then
you'll
see
this
little
fun
little
button
that
lets
you
set
the
windows
Password.
A
You
don't
want
to
save
that
to
a
safe
location,
worst
case,
though,
if
you
do
lose
it,
you
can
always
hit
the
button
again.
I've
done
that
just
hit
it
again
and
then
it'll
it'll
generate
a
new
one,
and
once
you
have
that
password,
then
you
go
can
go
ahead
and
download
the
RDP
file.
A
And
one
thing
to
note
with
this
is
that
it
is
tied
specifically
to
the
current
IP
of
the
VM
instance.
So
if
you
were
to
stop
and
start
this
instance
again,
it
gets
a
new
IP
and
you
would
need
to
redownload
that
file
once
you've
downloaded
that
file.
You
can
go
ahead
and
open.
It
I've
been
just
using
the
tool
that
Microsoft
created
for
a
remote
desktop.
A
They
have
a
build
it
for
Linux,
Mac
and
Windows.
I
saw
it
I
can't
remember
which
channel,
but
there
were
quite
a
few
people
who
use
quite
a
few
different
other
tools.
I
know
that
I
can
also
do
this
remote
desktop
piece.
So
if,
if
you
find
that
that
app
isn't
quite
as
powerful
as
you
need
I'm
sure
there
are
many
other
folks
that
know
in
slack
you
can
ask
but
I
found
it's
been.
A
It's
been
all
that
I've
needed
so
far
and
then
once
you
go
in
and
you
once,
you
accept
the
certificate,
I'll
ask
for
your
password
and
paste
that
in
and
you'll
be
into
a
Windows
machine.
One
thing
I've
been
doing
as
well
is
I've
been
stopping
the
instances
when
I'm
done,
which
does
save
on
money,
I
think
if,
if
Google
charges
in
the
same
way
that
AWS
does
then
they
like
there
probably
is
like
some
negligible
fee
for
like
the
disk
space
that
you're
using,
but
it
does
save
some
money
by
stopping
it.
A
A
And
then
here's
a
few
steps
that
you
can
follow
to
use
this
new
instance
as
a
runner,
if
you
wanted
to
say,
for
example,
wanted
to
use
a
version,
that's
newer
than
1809
update
that
Packer
configuration
build
an
image
and
then
see
what
it
looked
like,
or
you
wanted
to
install
some
other
language
or
some
other
version
of
a
language
just
like
I'm.
What
I
had
to
do
with
the
dotnet
framework?
A
You
can
register
it
and
then
on
get
lab
calm,
as
if
you
have
the
rights
to
the
repo
or
Emin
rights
to
the
group.
You
can
also
add
you
can
register
it
with
either
of
those
levels.
I
registered
it
with
the
web
code
net
repo
test,
repo
that
we
have
and
was
able
to
use
it
successfully
and
it.
It
basically
follows
this
simple
plan
where
you
get
lab
runner.
X
is
already
installed
in
this
image,
so
you
don't
need
to
start
at
that
step.
A
You
certainly
could
do
that.
The
the
point
that
I'm
making
with
this
slide
in
particular
is
the
fact
that,
in
general,
like
when
you're
new
to
a
system,
it's
nice
to
have
something
to
iterate
a
little
quicker
than
trying
to
you
know,
change
a
repo
and
just
using
a
runner
or
to
debug
or
go
deeper
into
code.
And
so.
C
B
A
Find
that
you
need
something
that
deviates
from
what
they're
supplying
as
a
shared
runner.
You
also
can
register
it
with
a
project
and
try
it
out
and
see
that,
like
so
in
the
case
of
SAS
right,
like
I,
have
a
repository
with
known
vulnerabilities
that
uses
dotnet
3.5
the
shared
Windows
runners.
Don't
support
that,
and
so
I
had
to
install
that
well,
I
wanted
to
see.
Does
this
actually
work
with
the
whole
CI,
CD,
workflow
and
so
I
was
able
to
yeah.
B
B
A
The
point
here
is
just
more
so
like.
If
you
find
this
development
machine,
you
want
to
take
it
a
next
step
to
where
you
actually
are
using
an
NCI
CD,
there's
a
good
chance
that
other
folks
might
not
need
to
do
that.
But
with
my
development
tasks,
I
found
wow
I
really
need
to
use
this
just
to
see.
Does
it
even
work
right
before
I
would
even
want
to
propose
them
to
modify?
You
know
the
shared
runners
you
know
I
want
I
want
to
see.
Does
this
work
am
I
in
the
right
path,
etc?
A
A
You
know
that
is
something
that
I
looked
for.
I,
don't
think
I
had
AK
I,
don't
think
I
had
access
to
it.
So
that's
why
even
with
the
Packer
I
was
like
okay
well,
at
least
I
can
have
something
that's
built
in
the
same
way.
Yes,.
D
A
You
know
reducible
builds,
is
the
idea
behind
that,
so
that
was
the
reason
why
I
went
with
that
direction.
But
if
enough,
you
know
groups
do
this,
then
yeah
the
image
already
be
there
and
most
most
folks
won't
need
to
interface
with
Packer.
They
just
start
up
an
instance
based
on
the
image
and
then
they
could
modify
it
to
their
heart's
content
as
a
development
cycle
see
what
they
would
actually
want
to.
You
know
suggest
in
terms
of
changes
upstream,
you
know
and
then
could
iterate
in
that
way.
A
A
Okay,
so
here
are
a
few
tips
from
oh,
oh
windows,
new
coming
from
from
NYX,
first
off
here's
kind
of
a
little
bit
about
chocolaty,
which
is
a
package
manager.
You
know,
I
came
to
homebrew
if
you're
on
Mac
or
apt-get,
if
you're
on
Ubuntu
or
you
know,
fill
in
a
blank
since
almost
every
Linux
distro
has
a
different
one.
Here's
a
couple
examples,
so
I
found
I
didn't
want
to
use
Visual
Studio
to
make
a
couple
small
edits
to
a
file
that
I
was
iterating
on.
A
I
saw
you
inside
them
and
you
can
just
do
that
with
chaco
installed
them
I
also
found
that
I
needed
Visual
Studio
at
a
certain
point,
because
so
much
of
the
dotnet
framework
workflow
a
lot
of
their
des
boxer
yeah,
just
in
your
menu
and
Visual
Studio,
do
X
do
I,
do
it
with
the
GUI
and
there
wasn't
much
I'm
sure
there
are
ways
to
do
a
lot
of
those
things
on
the
command
line,
but
that
wasn't
what
I
was
fighting
and
so
I
found
that
actually
having
Visual,
Studio
and
firing
up
and
using
it
was
actually
pretty
useful
in
it.
A
It
does
work
inside
this
VM
with
the
remote
desktop
client.
The
thing
that's
a
little
bit
more
confusing,
though,
is
you
only
have
a
shell
and
I
can
show
that
here
at
then
and
in
a
moment
too,
but
you
only
have
a
shell,
so
you
know
how
to
figure
out
how
to
do
open
that
program
without
a
Windows
menu,
and
so
I
I
successfully
googled
it
and
found
that
that's
the
command.
If
you
ran
that.
A
You
know
the
Settings
app
or
this,
or
that
and
I
was
like
it,
wouldn't
let
me
so
I
finally
found
this
command
will
do
it
and
then
here's
some
other
ones,
some
other
tips
for
those
of
us
coming
from
bash
to
Windows
commands
just
so,
instead
of
LS
it
Veeder
or
instead
of
our
emeth
delete.
One
thats
here,
though,
is
if
you
have
a
non
empty
directory,
it's
armed
or,
and
then
that
/s
is
like
a
way
that
you
can
add
arguments.
A
It
seems
you
can
also
notice
that
your
your
path
separator
goes
the
other
right.
Instead
of
catting
a
file,
you
would
type
the
file
and
move
is
spelt
out
so
surprising
to
me
at
first
redirection
works
the
same
way.
A
So
if
you
wanted
to
like,
have
some
output
of
a
command
and
dump
it
into
a
file,
you
can
do
that
you
can
call
a
local
executable,
just
like
you
kind
of
you
would
expect
on
unix,
and
actually
this
was
something
that
I
think
that
it
will
also
look
in
the
current
directory
before
your
global
path
as
well.
So
you
might
be
able
to
omit
the
dot
slash
if
you're
in
the
correct
directory.
You
know,
if
that's
true
darwin
well,.
B
I
was
just
gonna
say
if
you
use
PowerShell
instead
of
CMD.
All
this
goes
away.
There's
aliases
for
all
of
the
I
used
cows,
all
the
time
in
PowerShell
and
then
in
PowerShell,
core
you'll
be
a
Windows
PowerShell
at
that
point,
in
PowerShell
core
they
did
remove
some
of
these
aliases
because
when
they
started
building
core,
you
want
to
use
the
real
Linux
command.
But
if
you're
in
Windows
PowerShell
LS
RM
the
forward
slash
works
in
PowerShell
instead
of
the
back
slash
cat
move.
B
Also,
you
do
require
the
dot
slash
in
front
of
something
that's
in
the
current
folder.
For
the
same
reason,
it's
required
in
bash,
so
when
they
built
PowerShell,
they
actually
took
bash
as
one
of
the
primary
examples
and
then
also
deck
and
as/400,
which
had
the
very
memorable
command
names
and
the
discoverable
help
built-in.
So
if
you
just
go
to
PowerShell,
you'll
find
a
lot
of
your
Linux.
Isms
are
already
there,
for
you
sounds.
A
A
A
B
And
actually,
if
you're
on
a
core
machine
which
it
sounds
like
you
are,
there's
no
GUI,
no
Windows
GUI
do
start
PowerShell
instead
and
you'll
get
the
actual
PowerShell
console
as
well
doing
PowerShell
inside
the
CMD
console
is
extremely
painful.
So
you
start
space,
PowerShell
you'll
get
the
proper
PowerShell
one
and
it's
much
more
usable
and
resizable,
and
all
that
kind
stuff.
Well,.
A
B
A
A
B
A
That's
really
cool,
so
I
can't
ignore.
Oh,
it
did
switch
the
okay.
Well,
there
you
go
says,
that's
a
really
good
find,
but
just
open
up
our
show
so
and.
A
D
C
D
A
A
Only
used
it
the
other
way,
it'd
be
really
interesting
to
see.
If
we
could
extend
that
to
build,
you
know
other
images
that
could
be
useful
locally
and
I
think
as
long
as
the
VM
you're
running
locally
is
it
can
access
your
local
get
lab
instance,
like
you
know,
via
the
network,
then
I
don't
see
why
you
wouldn't
be
able
to
register
it
use
that
as
your
runner,
okay,.
D
A
A
D
Oh
I
was
just
gonna,
say
I
in
the
past,
I've
never
used
get
lab
comm
in
a
work
environment,
we've
always
had
self
hosted
instances
and
so
having
just
random
one-off
runners
for
its
as
long
as
you
can
make
it
talk
to
the
get
lab
instance.
That's
something
that
I've.
It
works
really
well
and
simple
concept
right.
If
they
can
talk,
it
works.
So
if.
B
So
every
time
you
boot
them
from
scratch,
they
start
over
the
hundred
and
twenty
days,
and
this
is
totally
a
valid
way
to
use
it
if
you're
licensed
and
then
you
can
then
do
snapshots
and
then
at
the
end,
128
days
and
there's
a
couple
ways
to
keep
rearming
it.
You
get
up
to
180
days
out
of
it
and
then
you
can
reset
to
the
original
snapshot
boot
it
again,
and
so
that's
one
thing
to
think
about
or
if
you
even
have
a
Windows
license
and
you
don't
wanna
keep
activating
it.
B
B
B
Ruby
or
chef
recipes
out
there
for
the
base
build.
You
could
actually
just
get
those
just
figure
out
the
scripting
to
pull
that
repo
down
and
run
that,
and
then
you
could
people
could
do
them
whatever
they
have
wherever
they
have
Windows,
there's
AWS
or
wherever
they
can
get
that
nice
build
running.
If
they
need
to
see
what
the
base
build
of
the
runners
like,
rather
than
doing,
Packer
everywhere,
cuz
yeah.
A
D
A
A
few
things
it
talks
the
GCP
to
create
the
image.
It
then
uses
the
chef
Runner
to
run
the
chef
recipes,
and
then
it
just
finishes
up
with
making
sure
that
Windows
is
up
to
date
with
that
Windows
Update
plug-in,
but
I
wanted
to
try
to
stay
as
close
to
as
possible
to
you
know
how
they
were
creating
their
images
for
the
runners,
but
there's
certainly
a
lot
of
possibilities
for
other
ways
and
maybe
easier
work.
Those
here
and
if.
B
Any
of
you
run
into
really
weird
long
boot
times.
Anytime,
you
add
net
assemblies,
they
need
to
be
bytecode
compiled
just
like
Java
and
if
you
add
like
a
service
pack
or
two
and
then
just
shut
it
down
the
next
time,
you
boot
it
there's
gonna,
be
a
queue
inside
of
Windows
and
it's
gonna
try
to
do
in
the
background.
But
then,
if
you
boot
it
in
some
rickety
little
instance,
that's
having
a
hard
time
even
booting,
you
know
minimal
Linux
distro.
That
windows
process
is
gonna,
bury
the
box.
B
D
Other
thoughts,
,
added
a
link
into
the
wish
Google
Doc
was
a
the
agenda
one.
This
is
what
I
use
box
cutter
for,
creating
my
local
Windows
beams.
It
uses
Packer
or
it's
a
collection
of
Packer
configurations
and
setups
to
create
Windows
not
or
he
bone
to
the
ends
of
almost
any
version
and
and
there
the
trial
ones
just
like
Darwin
was
saying,
and
it
takes
care
of
pulling
down
the
ISO
and
everything
for
you.
D
B
A
That
was
my
main
driver
for
ok,
I,
don't
have
Windows,
it's
been
a
long
time
since
I've
used
Windows
I've
got
a
shared
runner,
but
I
don't
want
to
iterate
with
just
you
know.
Pushing
changes
in
sync
see
I
change.
How
do
I
have
some
form
of
a
development
machine,
and
so
that
was
that
was
my
approach.
He's.