Add initial support for automatically uploading GCE virtual
machine images to the Google Compute Engine platform.
By default, gcutil/gsutil requires an Oauth2 login generated
from a URL that must be opened in a browser, a verification
code copied back to the terminal from which it was invoked,
etc., etc., making it near impossible for automation.
I've hacked together an evil solution to work around this,
so unless GCE_LOGIN_SKIP is set to a non-empty value, this
Makefile will not do anything useful.
As a result of this commit, remove the gce-package.sh script
that was never, nor will ever be, used.
MFC after: 3 days
X-MFC-Note: (hopefully)
Sponsored by: The FreeBSD Foundation
2015-06-27 01:29:59 +00:00
|
|
|
#
|
|
|
|
# $FreeBSD$
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Makefile for uploading Google Compute Engine disk images.
|
|
|
|
#
|
|
|
|
|
|
|
|
GCE_IMG?= ${.OBJDIR}/gce.raw
|
|
|
|
GCE_UPLOAD_TGTS= gce-check-depends \
|
|
|
|
gce-do-package \
|
|
|
|
gce-do-upload
|
|
|
|
# I do not yet have a better way to deal with the "must be run interactively"
|
|
|
|
# thing, so this is a fail-safe "do not do anything."
|
|
|
|
.if !defined(GCE_LOGIN_SKIP) || empty(GCE_LOGIN_SKIP)
|
|
|
|
GCE_UPLOAD_TGTS= gce-do-login
|
|
|
|
.endif
|
|
|
|
CLEANFILES+= ${GCE_UPLOAD_TGTS}
|
|
|
|
|
|
|
|
GCE_BUCKET?=
|
|
|
|
|
|
|
|
.if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT" || ${BRANCH} == "PRERELEASE"
|
|
|
|
SNAPSHOT_DATE!= date +-%Y-%m-%d-%H-%M
|
|
|
|
.endif
|
|
|
|
|
|
|
|
# Really? Uppercase characters are not allowed? Sigh...
|
|
|
|
# And don't even get me started on the '.'.
|
|
|
|
GCE_TARGET:= ${OSRELEASE:S,.raw,,:tl:S,.,-,g}${SNAPSHOT_DATE}
|
|
|
|
|
|
|
|
gce-upload: ${GCE_UPLOAD_TGTS}
|
|
|
|
|
|
|
|
gce-check-depends:
|
|
|
|
.for VAR in _BUCKET
|
|
|
|
. if !defined(GCE${VAR}) || empty(GCE${VAR})
|
|
|
|
@echo "Variable GCE${VAR} cannot be empty."
|
|
|
|
@false
|
|
|
|
. endif
|
|
|
|
.endfor
|
|
|
|
.if !exists(/usr/local/bin/gcutil)
|
2015-07-01 08:48:49 +00:00
|
|
|
. if !exists(${PORTSDIR}/net/google-cloud-sdk/Makefile)
|
Add initial support for automatically uploading GCE virtual
machine images to the Google Compute Engine platform.
By default, gcutil/gsutil requires an Oauth2 login generated
from a URL that must be opened in a browser, a verification
code copied back to the terminal from which it was invoked,
etc., etc., making it near impossible for automation.
I've hacked together an evil solution to work around this,
so unless GCE_LOGIN_SKIP is set to a non-empty value, this
Makefile will not do anything useful.
As a result of this commit, remove the gce-package.sh script
that was never, nor will ever be, used.
MFC after: 3 days
X-MFC-Note: (hopefully)
Sponsored by: The FreeBSD Foundation
2015-06-27 01:29:59 +00:00
|
|
|
. if !exists(/usr/local/sbin/pkg-static)
|
|
|
|
env ASSUME_ALWAYS_YES=yes pkg bootstrap -yf
|
|
|
|
. endif
|
2015-07-01 08:48:49 +00:00
|
|
|
env ASSUME_ALWAYS_YES=yes pkg install -y net/google-cloud-sdk
|
Add initial support for automatically uploading GCE virtual
machine images to the Google Compute Engine platform.
By default, gcutil/gsutil requires an Oauth2 login generated
from a URL that must be opened in a browser, a verification
code copied back to the terminal from which it was invoked,
etc., etc., making it near impossible for automation.
I've hacked together an evil solution to work around this,
so unless GCE_LOGIN_SKIP is set to a non-empty value, this
Makefile will not do anything useful.
As a result of this commit, remove the gce-package.sh script
that was never, nor will ever be, used.
MFC after: 3 days
X-MFC-Note: (hopefully)
Sponsored by: The FreeBSD Foundation
2015-06-27 01:29:59 +00:00
|
|
|
. else
|
2015-07-01 08:48:49 +00:00
|
|
|
make -C ${PORTSDIR}/net/google-cloud-sdk BATCH=1 all install clean
|
Add initial support for automatically uploading GCE virtual
machine images to the Google Compute Engine platform.
By default, gcutil/gsutil requires an Oauth2 login generated
from a URL that must be opened in a browser, a verification
code copied back to the terminal from which it was invoked,
etc., etc., making it near impossible for automation.
I've hacked together an evil solution to work around this,
so unless GCE_LOGIN_SKIP is set to a non-empty value, this
Makefile will not do anything useful.
As a result of this commit, remove the gce-package.sh script
that was never, nor will ever be, used.
MFC after: 3 days
X-MFC-Note: (hopefully)
Sponsored by: The FreeBSD Foundation
2015-06-27 01:29:59 +00:00
|
|
|
. endif
|
|
|
|
.endif
|
|
|
|
|
|
|
|
gce-do-package:
|
|
|
|
@# Yes, really... Sigh.
|
|
|
|
cd ${.OBJDIR} && mv gce.raw disk.raw
|
|
|
|
cd ${.OBJDIR} && tar --format=gnutar -zcf \
|
|
|
|
${GCE_TARGET:S,${.OBJDIR}/,,}.tar.gz disk.raw
|
|
|
|
cd ${.OBJDIR} && mv disk.raw gce.raw
|
|
|
|
touch ${.OBJDIR}/${.TARGET}
|
|
|
|
|
|
|
|
gce-do-login:
|
|
|
|
@echo "This requires human interaction, which is not yet supported."
|
|
|
|
@true
|
|
|
|
|
|
|
|
gce-do-upload:
|
|
|
|
@# Fallthrough in case the bucket already exists.
|
|
|
|
/usr/local/bin/gsutil mb gs://${GCE_BUCKET} || true
|
|
|
|
/usr/local/bin/gsutil cp ${.OBJDIR}/${GCE_TARGET}.tar.gz \
|
|
|
|
gs://${GCE_BUCKET}/
|
|
|
|
/usr/local/bin/gcutil addimage ${GCE_TARGET} \
|
|
|
|
gs://${GCE_BUCKET}/${GCE_TARGET}.tar.gz
|
|
|
|
touch ${.OBJDIR}/${.TARGET}
|
|
|
|
|