1a. Use Packer to build and customize image as you doing this now
OR
1b. Create Packer template
2. Create Service Account for GH Actions
3. Add service account key to GH secrets
4. Push your changes to gh repo
5. Use GH and GH Actions ( I like GH Actions ) to store, trigger upload and cleanup :
Checkout the repository.
Install Packer and Google Cloud SDK.
Build the VM image using Packer.
Upload the generated VMDK file to a Google Cloud Storage bucket.
Import the VMDK file as a new image in GCP.
Cleanup the VMDK files from the storage bucket.
Check your image.
PS: Of course, you need dedicated repo, GH Actions file, bucket, service account and key for that. However, if you ask any AI-like chat, it will provide for your relevant Gh Actions code.
PS2: If you plan use this workflow on production, be sure that you are not using keys but WIF for GH Actions. WIF is more secured way to allows external applications doing things behalf on service account, resides on your infra. Keys are good for testing imho.