Google Cloud Build
Last updated
Was this helpful?
Last updated
Was this helpful?
Google's Cloud Build is a popular, hosted build platform with deep integrations into the Google Cloud ecosystem. It includes native support for containerized builds, as well as other build scenarios. This guide will cover the use of Earthly within the cloudbuild.yaml
spec (though it should be easily ported over to the json
format if desired).
Earthly itself is able to run as expected within Cloud Build, including privileged mode features like WITH DOCKER
. However, Application Default Credentials are not available, so any gcloud
or gsutil
commands within your Earthfile
will require additional manual configuration via a service account.
Depending on your needs and existing infrastructure, there may be additional configuration needed in your Google Cloud environment.
Ensure that your repositories are connected to Cloud Build. .
Note
If you do not intend to use any Google Cloud utilities or capabilities within your build, this service account configuration is optional.
Start by creating a build service account. Go to the "Create service account" page in the "IAM & Admin" API section, choose the appropriate project, and fill out the step 1 "Service account details". When you are done, click "Create and Continue".
Click "Done". The console should navigate you to a list of service accounts within the project. At this point, the account should be created, but we still need to create an account key. To do this, click on the email address for this service account in the list.
Then select "Keys" from the top navigation.
Click "Add Key", and then "Create New Key". Choose "JSON" as the key format, and click create. This will download the key to your computer, and you should see it in the list of keys.
Note
earthly
misinterprets the Cloud Build environment as a terminal. To hide the ANSI color codes, set NO_COLOR
to 1
.
Note
Fill out the "Name", "Description", and "Event" sections for this trigger, as they make sense for your project. For our example (and for ease of testing) we will be using the "Manual Invocation" trigger here.
Click "Done" and you will be navigated back to the Triggers list view. To test the build, click "Run" since we chose a manual trigger only:
The secret environment variable bootstraps the Earthly secret store, and we can load it from Google's Secret Store like this:
Begin by following . These instructions are partially duplicated below, with some screenshots for completeness.
The creation steps should now ask you for a role to use in your build. The needs for each build are different; so examine your needs, and take care to grant the least privilege needed for your build. One reasonable starting point might be the .
Stash the key in your secret management utility of choice. You'll need to make this key available to your build at runtime. For the rest of our example, we will be using Earthly's .
Often, external secrets management requires some kind of bootstrapping secret (or additional integration) to allow you to access the rest of the secrets in your store. Earthly is no different. We will keep our EARTHLY_TOKEN
in for ease of use.
It is also possible to perform these steps via the CLI; the steps are . It can also be automated using much of the same steps.
This example is not production ready, and is intended to showcase configuration needed to get Earthly off the ground. If you run into any issues, or need help, !
You can find our and the used on GitHub.
Start by adding a new . Triggers are the things that link changes in your source code with new instances of builds in Cloud Build. Start by clicking on "Create Trigger".
Configure your source repository. If you do not see your desired repository in the drop down list, follow .
Finally, fill in the "Configuration" section. For Earthly, you can only use the "Cloud Build configuration file", as Earthly itself will also be running containers. Our example will also be using an embedded .
Running this build will use the file in our sample repository. This file is also a key part of the build, so lets break this down as well.
simply uses the to do a simple build.
runs a sample, Google Cloud Build only example to show how you would use an external service account to do things that normally requires credentials.