參考文件: https://docs.aws.amazon.com/codebuild/latest/userguide/getting-started.html
基本上大部分設定都維持預設值,以下提供須注意的事項 #
1. 來源 #
這裡的來源設定基本上同CodePipeline中的來源,就是指定repository與branch
2. 環境 #
這裡是關於在何種環境下建置專案,如果像是c#這類需要編譯的語言,就要設定好環境
-
首先有兩個方式,一個是Docker(可以使用已經安裝好的環境),另一個則是使用AWS的受管映像(可以理解成基本的環境)
因無自己建置好的docker,這裡使用受管映像
-
選擇作業系統、runtime、image(映像)
這裡的image需要注意支援語言版本,例如.net core 3.1最高只能使用到aws/codebuild/standard:5.0
更多對照請看: https://docs.aws.amazon.com/codebuild/latest/userguide/available-runtimes.html
-
選擇服務角色,這裡建議第一次設定使用"新增服務角色",因所需權限不確定,不建議自行建立
-
其他組態:
目前唯二需要設定的:
- VPC: 選擇對應環境的VPC
- 運算: 依據建置專案大小設定,應該會影響費用
3. Buildspec #
這也是最重要的部分,指定了環境安裝或設定、專案的建置與產出的文件位置格式
若有多組buildspec,可以在這裡指定Buildspec名稱
這裡分兩種方式:
- 使用buildspec檔案: 從原始碼中讀取buildspec
- 插入建置命令: 另外設定buildspec

如果選擇"使用buildspec檔案",buildspec.yml要存放在專案原始碼資料夾的最上層,以下為參考結構:
(root directory name)
|-- pom.xml
|-- buildspec.yml
`-- src
|-- main
| `-- java
| `-- MessageUtil.java
`-- test
`-- java
`-- TestMessageUtil.java
buildspec設定參考:
version: 0.2
#env:
#variables:
# key: "value"
# key: "value"
#parameter-store:
# key: "value"
# key: "value"
#secrets-manager:
# key: secret-id:json-key:version-stage:version-id
# key: secret-id:json-key:version-stage:version-id
#exported-variables:
# - variable
# - variable
#git-credential-helper: yes
#batch:
#fast-fail: true
#build-list:
#build-matrix:
#build-graph:
phases:
install:
#如果使用 Ubuntu 標準映像 2.0 或更新版本,您必須指定執行時間版本。
#如果指定執行時間版本且使用非 Ubuntu 標準映像 2.0 的映像,建置會失敗。
runtime-versions:
dotnet: 3.1
# name: version
#commands:
# - command
# - command
pre_build:
commands:
- echo Restore started on `date`
- dotnet restore <project>.csproj
build:
commands:
- echo Build started on `date`
- dotnet build <project>.csproj
post_build:
commands:
- echo Publish started on `date`
- dotnet publish -c Debug -o ./build_output
#reports:
#report-name-or-arn:
#files:
# - location
# - location
#base-directory: location
#discard-paths: yes
#file-format: JunitXml | CucumberJson
artifacts:
files:
- build_output/**/*
- scripts/**/*
- appspec.yml
# - location
#name: $(date +%Y-%m-%d)
#discard-paths: yes
#base-directory: location
#cache:
#paths:
# - paths
4. 成品(選用) #
專案建置完成後,可以將建置結果存於S3上,以利觀察或驗證
