releng-gce: Add ZFS support to GCE image buliding and uploading

Approved by:	delphij (re), gjb (re)
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D41527
This commit is contained in:
Li-Wen Hsu 2023-08-30 01:41:43 +08:00
parent 78f901dcbd
commit 1b10bdf0e2
No known key found for this signature in database
GPG key ID: 82B261B14D3BC7AF
2 changed files with 26 additions and 22 deletions

View file

@ -4,7 +4,6 @@
# 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
@ -27,10 +26,6 @@ SNAPSHOT_DATE= -v${BUILDDATE}
GCE_FAMILY_SUFX= -snap
.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:
@ -53,25 +48,34 @@ gce-check-depends:
. 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/gcloud compute images create ${GCE_TARGET} \
--family=${GCE_FAMILY}${GCE_FAMILY_SUFX} ${GCE_LICENSE} \
--source-uri gs://${GCE_BUCKET}/${GCE_TARGET}.tar.gz
.for _FS in ${GCE_FSLIST}
GCE_IMG_${FS}= ${.OBJDIR}/gce.${_FS}.raw
# Really? Uppercase characters are not allowed? Sigh...
# And don't even get me started on the '.'.
GCE_TARGET_${_FS}= ${OSRELEASE:S,.raw,,:tl:S,.,-,g}-${_FS}${SNAPSHOT_DATE}
gce-do-package-${_FS}:
@# Yes, really... Sigh.
cd ${.OBJDIR} && mv ${GCE_IMG_${_FS}} disk.raw
cd ${.OBJDIR} && tar --format=gnutar -zcf \
${GCE_TARGET_${_FS}:S,${.OBJDIR}/,,}.tar.gz disk.raw
cd ${.OBJDIR} && mv disk.raw ${GCE_IMG_${_FS}}
touch ${.OBJDIR}/${.TARGET}
gce-do-upload-${_FS}:
@# Fallthrough in case the bucket already exists.
/usr/local/bin/gsutil mb gs://${GCE_BUCKET} || true
/usr/local/bin/gsutil cp ${.OBJDIR}/${GCE_TARGET_${_FS}}.tar.gz \
gs://${GCE_BUCKET}/
/usr/local/bin/gcloud compute images create ${GCE_TARGET_${_FS}} \
--family=${GCE_FAMILY}${GCE_FAMILY_SUFX} ${GCE_LICENSE} \
--source-uri gs://${GCE_BUCKET}/${GCE_TARGET_${_FS}}.tar.gz
touch ${.OBJDIR}/${.TARGET}
.endfor
gce-do-package: gce-do-package-${VMFS}
gce-do-upload: gce-do-upload-${VMFS}

View file

@ -36,7 +36,7 @@ EC2_FSLIST= ufs zfs
EC2_DESC= Amazon EC2 image
EC2_DISK= ${OSRELEASE}.${EC2_FORMAT}
GCE_FORMAT= raw
GCE_FSLIST= ufs
GCE_FSLIST= ufs zfs
GCE_DESC= Google Compute Engine image
GCE_DISK= disk.${GCE_FORMAT}
OCI_FORMAT= qcow2