Building repositories from GitHub (original) (raw)

Cloud Build lets you create triggers to build from repositories hosted on GitHub. You can execute builds in response to events such as commit pushes or merge requests associated with your GitHub repository.

This page explains how you can enable build triggers for a GitHub instance. For more information, seeCloud Build triggers andCloud Build repositories.

Before you begin

Follow the instructions to connect to a GitHub host.

To create a trigger for a GitHub repository, you must have a connection between Google Cloud and your repository. To create a connection through the GitHub app in Google Cloud, seeConnect to a GitHub repository.

Create a GitHub trigger

This section explains how you can create a trigger and link it to your GitHub installation.

Google Cloud console

To create GitHub triggers using the Google Cloud console, do the following:

  1. Open the Triggers page in the Google Cloud console.
    Open the Triggers page
  2. Select your Google Cloud project and click Open.
  3. Click Create trigger.
  4. Enter the following trigger settings:
    • Name: Enter a name for your trigger.
    • Region: Select the region for your trigger.
      * If the build config file associated with the trigger specifies a private pool, then Cloud Build uses the private pool to run your build. In this case, the region you specify in your trigger must match the region where you created your private pool.
      * If the build config file associated with the trigger does not specify a private pool, then Cloud Build uses the default pool to run your build in the same region as your trigger.
    • Description (optional): Enter a description for your trigger.
    • Event: Select the repository event to invoke your trigger.
      * Push to a branch: Set your trigger to start a build on commits to a particular branch.
      * Push new tag: Set your trigger to start a build on commits that contain a particular tag.
      * Pull request: Set your trigger to start a build on commits to a pull request.
    • Source: Configure information about your GitHub repository:
      * Repository service: Select Cloud Build.
      * Repository generation: Select Developer Connect as your source.
      * Repository: From the list of available repositories, select the repository.
      * Branch or Tag: Specify a regular expression with the branch or tag value to match. For information on acceptable regular expression syntax, see RE2 syntax.
      * Comment control: If you selected Pull requestas your Event, choose one of the following options to control whether a build is automatically executed by the trigger:
      * Required except for owners and collaborators: When a pull request is created or updated by a repository owner or collaborator, builds are automatically executed by the trigger. If an external contributor initiates the action, builds are executed only after an owner or collaborator comments /gcbrun on the pull request.
      * Required: When a pull request is created or updated by any contributor, builds are executed only after an owner or collaborator comments /gcbrun on the pull request. Builds are executed each time a change to a pull request is made.
      * Not required: When a pull request is created or updated by any contributor, builds are automatically be executed by triggers.
    • Configuration: Select the build config file located in your remote repository or create an inline build config file to use for your build.
      * Type: Select the type of configuration to use for your build.
      * Autodetected: Cloud Build autodetects your configuration type if you have a cloudbuild.yaml or Dockerfile in your repository.
      * Cloud Build configuration file (yaml or json): Use a build config file for your configuration.
      * Dockerfile: Use a Dockerfile for your configuration.
      * Buildpacks: Use buildpacks for your configuration.
      * Location: Specify the location for your configuration.
      * Repository: If your config file is located in your remote repository, provide the location of yourbuild config file or the Dockerfiledirectory and a name for the resulting image. If your configuration is a Dockerfile, you can optionally provide a timeout for your build. When you've provided the Dockerfile and image name, you'll see a preview of the docker build command that your build will execute.
      * Inline: If you selectedCloud Build configuration file (yaml or json) as your configuration option, you can specify your build config inline. Click Open Editor to write your build config file in the Google Cloud console using YAML or JSON syntax. Click Done to save your build config.
    • Substitution variables (optional): If you selected the Cloud Build config file as your build config option, you can choose to define trigger-specific substitution variables using this field. For example, say you're creating multiple triggers where each trigger deploys your app to a specific environment. You can specify that your app is deployed to an environment in your build config file and then use this field to define substitution variables specifying which environment this trigger should deploy to. For information on specifying substitution values in build config files, seeSubstituting variable values.
    • Build logs (optional): Check the box to send build logs to GitHub. To learn how to view build logs, see Viewing build logs.
    • Service account: Select the service account to use when invoking your trigger. If your organization policy allows using the legacy Cloud Build service account, you can leave this blank to use the legacy service account. Otherwise, you must select the specific service account to use, even if it's the Compute Engine default service account.
  5. Click Create to save your build trigger.

To create GitHub triggers using gcloud commands, see the gcloudcommands for Creating a build trigger.

gcloud CLI

To create GitHub triggers using gcloud commands, run the following command:

    gcloud alpha builds triggers create developer connect
      --name=TRIGGER_NAME \
      --git-repository-link=projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME/gitRepositoryLinks/REPO_NAME \
      --branch-pattern=BRANCH_PATTERN # or --tag-pattern=TAG_PATTERN \
      --build-config=BUILD_CONFIG_FILE \
      --region=REGION \
      --service-account=SERVICE-ACCOUNT

Where:

API

To create a GitHub trigger with the API, use the following JSON template:

  {
      "filename": "cloudbuild.yaml",
      "name": "TRIGGER_NAME",
      "description": "TRIGGER_DESCRIPTION",
      "serviceAccount": "SERVICE_ACCOUNT",
      "github": {
          "owner": "OWNER",
          "name": "REPO_NAME",
          "push": {
              "branch": ".*"
          },
      
      },
      "include_build_logs": include-build-logs-value
  }

Where:

Enter the following curl command in your terminal:

curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" -H "x-goog-user-project: PROJECT_NUMBER" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/triggers -d @trigger.json

Where:

Build and view your changes

To build using GitHub triggers, you'll need to push and commit changes to your connected source repository or configure your build on pull requests. Once you have checked in your changes, Cloud Build will build your code.

To view your build changes on GitHub, go to the Checks tab in your repository.

Screenshot of the conversation tab

You'll see that Cloud Build has built your changes. You'll also see other build details such as the time it took to build your code and the build ID.

To view your build changes in Cloud Build, clickView more details on Google Cloud Build. The Build details page in Google Cloud console opens where you can see build information such as status, logs, and build steps.

Data sharing

The data sent to GitHub from Cloud Build helps you identify triggers by name and see build results on GitHub.

The following data is currently shared between Cloud Build and GitHub:

If you created triggers prior to August 2020, data sharing may not be enabled for your project. You can enable data sharing for all GitHub triggers in your project by clicking Enable on the Cloud Build Data sharing tab.

If you have required status checksenabled for a GitHub repository, enabling data sharing may temporarily break status checks. You can adjust status check configurations to look for your trigger name by:

What's next