GCP CI/CD Pipeline: Build Docker images after commits to a repo branch (Github)
Tags: gcp, cloud, cicd, docker
Published: 2022-09-23 18:08:59

In this article we will learn how to create a CI/CD pipeline on GCP using Cloud Build, Github, and Docker.

For this article I will be using this [repository](https://github.com/periwinkleFTW/cicd-blog-gcp-cb-docker).

&nbsp;

### 1. Create a trigger

First we would need to navigate to Code Build. Select the `Triggers` tab in the sidebar and `Create Trigger`:

![GCP CI/CD pipeline using Code Build, Docker, and Github. Creating a trigger pt1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/90xh3k3oxrn74d2dflfz.png)

Enter the name of your trigger and select `Connect new repository` in the Source section:


![GCP CI/CD pipeline using Code Build, Docker, and Github. Attaching Github repository to Cloud Build pt1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eujagwuklm05jls99rwl.png)

You will see a sidebar that will appear on the right hand side with different options for repositories supported by Cloud Build. I am using Github, so I selected the first option. Click `Continue`:


![GCP CI/CD pipeline using Code Build, Docker, and Github. Attaching Github repository to Cloud Build pt2](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xu55e2mp77ultri3cs2s.png)

You will be asked to authorize Cloud Build to access your github account and repositories:


![GCP CI/CD pipeline using Code Build, Docker, and Github. Attaching Github repository to Cloud Build pt3](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qlwvhanuwhfod85kzbo7.png)

Select your github account and repository for this trigger:

![GCP CI/CD pipeline using Code Build, Docker, and Github. Attaching Github repository to Cloud Build pt4](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8n7mmj7zwp0pvwrpu7ns.png)

Then select the `Dockerfile` in the Configuration section and hit Create at the bottom of the page:

![GCP CI/CD pipeline using Code Build, Docker, and Github. Creating a trigger pt2](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hiqfhttebvjw4qjvf8mc.png)

You should see your newly created trigger with the connected repo:

![GCP CI/CD pipeline using Code Build, Docker, and Github. Creating a trigger pt3](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b0x29x53bwvgj7jpl2s7.png)

&nbsp;

### 2. Run trigger manually

Let's test our trigger by running it manually first.
Next to your trigger there is a button `RUN`:

![GCP CI/CD pipeline using Code Build, Docker, and Github. Running trigger manually pt1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/52vhur7wah14jcoax17k.png)

A sidebar will popup on the right hand side asking you to confirm the details of deployment. Press `Run Trigger`:

![GCP CI/CD pipeline using Code Build, Docker, and Github. Running trigger manually pt2](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n8wi1ou68zuuuqdqx88f.png)

I can see the new image in the Container Registry. Mine is called `github.com`. But it is there. The trigger is working!


![GCP CI/CD pipeline using Code Build, Docker, and Github. Running trigger manually pt3](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y5ngicdzonnp995gtd46.png)

![GCP CI/CD pipeline using Code Build, Docker, and Github. Running trigger manually pt4](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pnqbay2mi1uc41cywsp9.png)

&nbsp;

### 3. Run trigger automatically

And finally, let's push new code to the repository and test the trigger for automatic build.

I will let reader do the code pushing. 

If you want to see current or past builds, Code Build has a section called `History` in the sidebar on the left. It is a great to monitor builds.

When I pushed new code to my repository a new build was triggered right away and it appeared in the `History` section:

![GCP CI/CD pipeline using Code Build, Docker, and Github. Running trigger automatically pt4](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3hryuj5esvbq71120jye.png)

&nbsp;

That's it! Thank you for reading.