---
title: GCP Cloud Build 介面介紹
tags: GCP # 簡報的標籤
---
## 進入 Cloud Build 可以看到幾個功能
- 資訊主頁:觸發條件的一些基本資訊
- 紀錄:觸發條件成功狀況基本資訊和過程
- 觸發條件:觸發條件設定
- 設定:權限設定

## 一、設定:設定帳戶權限,EX:想要佈署在 GKE 就需要打開 Kubernetes Engine 權限,設定前要先到紀錄打開 API 不然會無法設定



## 二、觸發條件:設定連結的存放區,推送檔案後自動執行構建動作

## 上面有兩個選項連結存放區、建立觸發條件,如果是用 GCP 本身的 GCSR 因為存放 GCP 本身的服務,所以直接建立觸發條件選擇存放區即可,如果是用 GitHub 或是 Bitbucket 就需要設定存放區連結

## 1.連結存放區 ( GitHub )


## 授權完開始設定,首先設定使用的專案


## 選擇 GitHub 使用的倉庫

## 觸發條件設定,可以用 Cloud Build 幫你設定好的,也可略過自己設定

## 設定完成畫面,有需要再修改設定都可以在這邊點擊再回去調整

## 完成畫面

## 接下來回到 Cloud Build 可以看到 Cloud Build 幫你設定好的觸發條件

## 預設的觸發條件不一定是想要的,這時可以自己建立一個新的觸發條件,或是把原本的修改
## 點選預設觸發條件最後面三個點,選擇編輯

## 2.建立觸發條件

## 首先是為觸發條件命名,這個觸發條件是在做什麼的可以備註在說明上

## 選擇觸發條件跟存放區還有分支版本,會依據條件不同存放區跟分支會有些不同選項
## 推送至分支版本:推送到指定分支後觸發,預設分支版本只有 master 跟全部2種,其他分支要自己手動打上去



## 推送新標記:推送標記後才會觸發

## 提取要求:只要在 githup 執行 pull request 就會觸發

## 觸發有三種方式

## 1.除了所有者和合作者,所有者或合作者註釋/gcbrun 才會觸發2.無倫如何所有者或合作者註釋/gcbrun才會觸發 (因為1.2觸發方式一樣所以列一起)





## 3.不需要註釋便會觸發



## 反轉運算規則:版本分支是使用正則表達式敘述,反轉則是反轉你所列規則,如下圖觸發條件只有1個分支1個主線,選擇test分支反轉後會變成master主線

## 納入和忽略的檔案篩選器
## 納入的檔案篩選器:推送指定的檔案變更才會自動執行構建作業

## 忽略的檔案篩選器:推送指定的檔案變更不會執行自動建構作業

## 如果同時在納入和忽略檔案篩選器指定同一個檔案,無論檔案如何推送變更都不會有動作

## 建構作業設定:選擇構建用配置文件
## git自動設定
## cloudbuild.yaml:建構配置文件
## [官方配置文件]( https://cloud.google.com/cloud-build/docs/build-config )
## 文件配置:
## steps:構建配置文件中的steps部分包含您希望Cloud Build執行的構建步驟
```
steps:
```
## name:使用構建步驟的name字段來指定Cloud Builder,這是一種運行常見工具的容器映像。您可以在構建步驟中使用構建器來執行任務
## [官方提供內建的指令]( https://github.com/GoogleCloudPlatform/cloud-builders )
## EX:
```
steps:
- name: 'gcr.io/cloud-builders/docker'
```
## Cloud Builder:是裝有常用語言和工具的容器映像。您可以配置Cloud Build,以便在這些構建器的上下文中運行特定命令
## [社區提供內建的指令]( https://github.com/GoogleCloudPlatform/cloud-builders-community )
## EX:
```
steps:
- name: node
entrypoint: npm
args: ['install']
```
## arges:添加步驟參數
## EX:
```
steps:
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/my-project/my-image', '.']
```
## 變數:Cloud Build 提供預設替代變數,您也可以定義自己的替代變數
## [官方變數文章]( https://cloud.google.com/cloud-build/docs/configuring-builds/substitute-variable-values?hl=zh-cn )
## EX:
```
steps:
- name: 'gcr.io/cloud-builders/docker'
args: [ 'build', '-t', 'gcr.io/$PROJECT_ID/nginx:$COMMIT_SHA', '.' ]
- name: 'gcr.io/cloud-builders/docker'
args: ['push', 'gcr.io/$PROJECT_ID/nginx:$COMMIT_SHA']
```
## 替代變數:
- 替代變數必須以下劃線*( )開頭,並且只能使用大寫字母和數字(遵循正則表達式格式[A-Z0-9]+)*
- 參數數量的上限為100個。參數鍵的長度上限為100個字節,參數值的長度上限為4000個字節
- 如需使用替代變量,請使用 substitutions 參數
## EX:
```
steps:
- name: 'gcr.io/cloud-builders/docker'
args: [ 'build', '-t', 'gcr.io/${_PROJECT_ID}/nginx:${_TEST}', '.' ]
- name: 'gcr.io/cloud-builders/docker'
args: ['push', 'gcr.io/${_PROJECT_ID}/nginx:${_TEST}']
substitutions:
_TEST: v1.0
```
## Dockerfile:輸入 Dockerfile 路徑、名稱
```
映像檔名預設是
gcr.io/專案名稱/連結存放區名稱:變數
```

## 如果 Dockerfile 放在根目錄路徑就不需要設定

## 替代變數:與 cloudbuild.yaml 一樣 Cloud Build 提供預設替代變數,您也可以定義自己的替代變數

## 官方預設變數是給 cloudbuild.yaml 使用,GCP 上的設定使用的是自己定義的替代變數,定義完 cloudbuild 也要使用一樣的定義
## EX:
```
steps:
- name: 'gcr.io/cloud-builders/docker'
args: [ 'build', '-t', 'gcr.io/${_PROJECT_ID}/nginx:$COMMIT_SHA', '.' ]
- name: 'gcr.io/cloud-builders/docker'
args: ['push', 'gcr.io/${_PROJECT_ID}/nginx:$COMMIT_SHA']
```
## 與 cloudbuild.yaml 同樣的替代變數寫法

## 三、紀錄:觸發條件成功狀況基本資訊和過程

## 上方有個停止串流版本,點擊後推到 Container Registry 的 image 標記部分就不會再有版號


## 篩選:選擇想要看的紀錄


## 點擊版本,可以查看建構作業紀錄等資訊


## 點擊分頁可以看到詳細資料,來源:連接到 GCSR,修訂版本:可以看到更改了什麼



## 建構作業構建:可以把構建紀錄下載下來

## 來源跟修訂版本也能在記錄首頁點擊連結查看


## 四、資訊主頁:觸發條件的一些基本資訊

## 點擊日期連結到構作業紀錄,來源:連接到 GCSR


## 點擊查看全部,會把這個觸發條件構建過的紀錄篩選出來

