本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
變更建置專案的設定 (主控台)
若要變更 Build 專案的設定,請執行以下程序:
請在以下位置開啟AWS CodeBuild主控台。
https://console.aws.amazon.com/codesuite/codebuild/home -
在導覽窗格中,選擇 Build projects (建置專案)。
-
執行下列任意一項:
-
選擇您想要變更的組建專案連結,然後選擇 Build details (組建詳細資訊)。
-
選擇您想要變更之組建專案旁的選項按鈕,選擇 View details (檢視詳細資訊),然後選擇 Build details (組建詳細資訊)。
-
您可以修改下列區段:
專案組態
在 [專案組態] 區段中,選擇 [編輯]。變更完成後,請選擇 [更新組態] 以儲存新的組態。
您可以修改下列屬性。
- Description (描述)
-
輸入建置專案的選用描述,以協助其他使用者瞭解此專案的用途。
- 建立徽章
-
選取 Enable build badge (啟用組建徽章),讓專案的組建狀態變成可見且可嵌入。如需詳細資訊,請參閱 建置徽章範例。
注意
如果您的來源供應商是 Amazon S3,則不適用建立徽章。
- 啟用並行建置限制
-
如果您想要限制此專案的並行建置數目,請執行下列步驟:
-
選取「限制此專案可啟動的並行建構數目」。
-
在並行建置限制中,輸入此專案允許並行建置的最大數量。此限制不得大於針對帳戶設定的並行建置限制。如果您嘗試輸入的數字大於帳號限制,則會顯示錯誤訊息。
只有當目前的建置數量小於或等於此限制時,才會啟動新的建置。如果目前的建置計數符合此限制,則會調節新的建置且不會執行。
-
- 啟用公用組建存取
-
若要讓公眾使用專案的建置結果,包括無法存取AWS帳戶的使用者,請選取 [啟用公用組建存取權限],並確認您要公開組建結果。以下屬性用於公共構建項目:
- 公用建置服務角色
-
如果您想要為您 CodeBuild 建立新的服務角色,請選取 [新增服務角色];如果您想要使用現有的服務角色,請選取 [現有的服務角色]。
公用 Build 服務角色可 CodeBuild 以讀取 CloudWatch 日誌,並下載專案組建的 Amazon S3 成品。這是為了使公眾可用項目的構建日誌和工件是必需的。
- 服務角色
-
輸入新服務角色的名稱或現有服務角色的名稱。
若要將專案的建置結果設為私有,請清除 [啟用公用組建存取權]。
如需詳細資訊,請參閱 中的公共組建專案AWS CodeBuild。
警告
將項目的構建結果公開時,應牢記以下幾點:
-
專案的所有組建結果、記錄檔和成品,包括專案為私有時執行的組建,都可供公開使用。
-
所有構建日誌和成品都可供公眾使用。環境變量,源代碼和其他敏感信息可能已輸出到構建日誌和成品。您必須小心將哪些信息輸出到構建日誌。一些最佳做法是:
-
不要在環境變量中存儲敏感值,特別是AWS訪問密鑰 ID 和秘密訪問密鑰。我們建議您使用 Amazon EC2 Systems Manager 參數存放區或AWS Secrets Manager存放機密值。
-
請遵循使用 Webhook 的最佳實務以限制哪些實體可以觸發構建,並且不要將 buildspec 存儲在項目本身中,以確保您的 webhook 盡可能安全。
-
-
惡意使用者可使用公開組建來散佈惡意成品。我們建議專案管理員檢閱所有提取要求,以確認提取要求是否為合法變更。我們也建議您使用其總和檢查碼來驗證任何人工因素,以確保下載正確的成品。
- 其他資訊
-
對於標籤,請輸入您希望支援AWS服務使用的任何標籤之名稱和值。使用 Add row (新增資料列) 來新增標籤。您最多可新增 50 個標籤。
來源
在「來源」區段中,選擇 「編輯」。變更完成後,請選擇 [更新組態] 以儲存新的組態。
您可以修改下列屬性:
- 來源提供者
-
選擇源代碼提供者類型。使用下列清單來選取適合您的來源提供者的選項:
注意
CodeBuild 不支援比特桶伺服器。
Environment (環境)
在「環境」段落中,選擇編輯。變更完成後,請選擇 [更新組態] 以儲存新的組態。
您可以修改下列屬性:
- 環境影像
-
若要變更組建映像檔,請選擇 [覆寫影像],然後執行下列其中一個動作:
-
若要使用 AWS CodeBuild 管理的 Docker 映像,請選擇 Managed image (受管映像),然後從 Operating system (作業系統)、Runtime (執行時間)、Image (映像) 及 Image version (映像版本) 下拉式清單進行選擇。若可用,請從 Environment type (環境類型) 進行選擇。
-
若要使用另一個 Docker 映像,請選擇 Custom image (自訂映像)。在「環境類型」中,選擇 ARM、Linux 、GPU 或視窗。如果您選擇 [其他登錄],對於 [外部登錄 URL],請使用格式在 Docker Hub 中輸入 Docker 映像的名稱和標記
。如果您選擇亞馬遜 ECR,請使用亞馬遜 ECR 存儲庫和亞馬遜 ECR 映像在您的AWS帳戶中選擇碼頭映像。docker repository
/docker image name
-
若要使用私人 Docker 映像檔,請選擇 [自訂映像檔]。在「環境類型」中,選擇 ARM、Linux 、GPU 或視窗。針對 Image registry (映像登錄) 選擇 Other registry (其他登錄),然後輸入私人 Docker 映像的憑證的 ARN。認證必須由 Secrets Manager 建立。如需詳細資訊,請參閱什麼是AWS Secrets Manager? 在《AWS Secrets Manager使用者指南》中。
注意
CodeBuild 會覆寫自
ENTRYPOINT
訂泊塢視窗影像的。 -
- 特權
-
只有當您打算使用此構建項目構建 Docker 映像時,才選擇「特權」。否則,所有嘗試與 Docker 協助程式互動的相關建置都會失敗。您也必須啟動 Docker 協助程式,以讓您的建置與其互動。執行這項操作的一種方式是執行下列建置命令,以在建置規格的
install
階段中初始化 Docker 協助程式。如果您選擇由 CodeBuild Docker 支援提供的建置環境映像檔,請勿執行這些命令。注意
根據預設,Docker 容器不允許存取任何裝置。「Privileged」(特殊權限) 模式會授予建置專案之 Docker 容器對所有裝置的存取權。如需詳細資訊,請參閱 Docker Docs 網站上的 Runtime Privilege and Linux Capabilities
。 - nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay2 & - timeout 15 sh -c "until docker info; do echo .; sleep 1; done"
- 服務角色
執行下列任意一項:
-
如果您沒有 CodeBuild 服務角色,請選擇 [新增服務角色]。在角色名稱中,輸入新角色的名稱。
-
如果您有 CodeBuild 服務角色,請選擇現有服務角色。在角色 ARN 中,選擇服務角色。
注意
當您使用主控台建立 Build 專案時,您可以同時建立 CodeBuild 服務角色。根據預設,此角色只能與該建置專案搭配運作。如果您使用主控台將此服務角色與另一個建置專案建立關聯,則會更新此角色以與其他建置專案搭配運作。服務角色最多可以與 10 個組建專案搭配運作。
-
- 其他組態
-
- Timeout (逾時)
-
指定介於 5 分鐘到 8 小時之間的值,如果建置未完成,則 CodeBuild 會停止建置。如果 hours (小時) 和 minutes (分鐘) 空白,則會使用預設值 60 分鐘。
- VPC
如果您 CodeBuild 想要使用 VPC:
-
對於 VPC,請選擇 CodeBuild 使用的 VPC 識別碼。
-
對於 VPC 子網路,請選擇包含 CodeBuild 使用之資源的子網路。
-
對於 VPC 安全性群組,請選擇 CodeBuild 用來允許存取 VPC 中資源的安全性群組。
如需詳細資訊,請參閱 使用AWS CodeBuildAmazon Virtual Private Cloud。
-
- 運算
-
選擇其中一個可用選項。
- 環境變數
-
輸入名稱和值,然後選擇要使用之組建之每個環境變數的類型。
注意
CodeBuild 自動設定「AWS區域」的環境變數。如果您尚未在 buildspec.yml 中加入環境變數,您必須加以設定:
-
AWS_ACCOUNT_ID
-
IMAGE_REPO_NAME
-
IMAGE_TAG
主控台和 AWS CLI 使用者可查看環境變數。如果您不在意環境變數的可見性,請設定 Name (名稱) 和 Value (值) 欄位,然後將 Type (類型) 設定為 Plaintext (純文字)。
我們建議您將具有敏感值的環境變數 (例如AWS存取金鑰 ID、AWS秘密存取金鑰或密碼) 存放在 Amazon EC2 Systems Manager 參數存放區或AWS Secrets Manager。
如果您使用 Amazon EC2 Systems Manager 參數存放區,請選擇「參數」做為「類型」。在「名稱」中,輸入 CodeBuild 要參考的識別碼。對於值,請輸入存放在 Amazon EC2 Systems Manager 參數存放區的參數名稱。使用名為
/CodeBuild/dockerLoginPassword
的參數做為範例,針對 Type (類型),選擇 Parameter (參數)。對於 Name (名稱),輸入LOGIN_PASSWORD
。於 Value (數值) 輸入/CodeBuild/dockerLoginPassword
。重要
如果您使用 Amazon EC2 Systems Manager 參數存放區,建議您使用開頭的參數名稱來存放參數
/CodeBuild/
(例如,/CodeBuild/dockerLoginPassword
)。您可以使用 CodeBuild 主控台在 Amazon EC2 Systems Manager 中建立參數。選擇 Create parameter (建立參數),然後遵循對話方塊中的說明。在該對話方塊中,對於 KMS 金鑰,您可以指定帳戶中金AWS KMS鑰的 ARN。 Amazon EC2 Systems Manager 使用此金鑰在儲存期間加密參數的值,並在擷取期間將其解密。) 如果您使用 CodeBuild 主控台建立參數,則主控台會在儲存參數名稱時以其開始。/CodeBuild/
如需詳細資訊,請參閱 Amazon EC2 Systems Manager 使用指南中的 Systems Manager 參數存放區和系統管理員參數存放主控台逐步解說。如果您的建置專案參考存放在 Amazon EC2 Systems Manager 參數存放區中的參數,則建置專案的服務角色必須允許該
ssm:GetParameters
動作。如果您先前選擇 [新增服務角色],請將此動作 CodeBuild 包含在組建專案的預設服務角色中。不過,如果您選擇 Existing service role (現有服務角色),則您必須個別將此動作包含在服務角色中。如果您的建置專案參照存放在 Amazon EC2 Systems Manager 參數存放區中,參數名稱不是開頭為的參數
/CodeBuild/
,且您選擇了新服務角色,則必須更新該服務角色,以允許存取開頭不是以的參數名稱/CodeBuild/
。這是因為該服務角色僅允許存取開頭為/CodeBuild/
的參數名稱。如果選擇 [新增服務角色],服務角色會包含解密 Amazon EC2 Systems Manager 參數存放區中
/CodeBuild/
命名空間下所有參數的權限。您設定的環境變數會取代現有環境變數。例如,如果 Docker 影像已包含名為
MY_VAR
且值為my_value
的環境變數,而且您設定名為MY_VAR
且值為other_value
的環境變數,則my_value
會取代為other_value
。同樣地,如果 Docker 影像已包含名為PATH
且值為/usr/local/sbin:/usr/local/bin
的環境變數,而且您設定名為PATH
且值為$PATH:/usr/share/ant/bin
的環境變數,則/usr/local/sbin:/usr/local/bin
會取代為文字值$PATH:/usr/share/ant/bin
。請不要設定名稱開頭為
CODEBUILD_
的任何環境變數。此字首保留供 內部使用。如果有多個位置定義同名的環境變數,則會決定值,如下所示:
-
開始建置操作呼叫中的值會採用最高優先順序。
-
組建專案定義中的值會採用下一個優先順序。
-
buildspec 宣告中的值會採用最低優先順序。
如果您使用 Secrets Manager,請選擇 Secrets Manager 做為類型。在「名稱」中,輸入 CodeBuild 要參考的識別碼。針對 Value (值),請、使用
模式輸入secret-id
:json-key
:version-stage
:version-id
reference-key
。如需相關資訊,請參閱 Secrets Manager reference-key in the buildspec file。重要
如果您使用「Secrets Manager」,建議您以
/CodeBuild/
(例如/CodeBuild/dockerLoginPassword
) 開頭的名稱來儲存密碼。如需詳細資訊,請參閱什麼是AWS Secrets Manager? 在《AWS Secrets Manager使用者指南》中。如果您的組建專案參照儲存在 Secrets Manager 中的密碼,則組建專案的服務角色必須允許該
secretsmanager:GetSecretValue
動作。如果您先前選擇 [新增服務角色],請將此動作 CodeBuild 包含在組建專案的預設服務角色中。不過,如果您選擇 Existing service role (現有服務角色),則您必須個別將此動作包含在服務角色中。如果您的組建專案參照儲存在 Secrets Manager 中的密碼
/CodeBuild/
,而且您選擇了新服務角色,則必須更新服務角色,以允許存取開頭不是以的密碼名稱/CodeBuild/
。這是因為服務角色只允許存取以開頭的密碼名稱/CodeBuild/
。如果您選擇 [新增服務角色],服務角色會包含解密 Secrets Manager 中
/CodeBuild/
命名空間下所有密碼的權限。 -
BuildSpec
在「建置規格」區段中,選擇 「編輯」。變更完成後,請選擇 [更新組態] 以儲存新的組態。
您可以修改下列屬性:
- 建置規格
-
執行下列任意一項:
-
如果您的來源碼包含 buildspec 檔案,請選擇 Use a buildspec file (使用 buildspec 檔案)。根據預設, CodeBuild 會尋找來源碼根目錄中名為
buildspec.yml
的檔案。如果您的 buildspec 檔案使用不同的名稱或位置,請在 Buildspec 名稱 (例如,buildspec-two.yml
或configuration/buildspec.yml
. 如果 buildspec 檔案位於 S3 儲存貯體中,則必須位於和 BuildSpec 專案相同的AWS區域。 使用其 ARN 指定構建規格文件(例如,arn:aws:s3:::my-codebuild-sample2/buildspec.yml
)。 -
如果您的來源碼未包含 buildspec 檔案,或者,您要執行的組建命令與針對
build
階段 (位於來源碼根目錄的buildspec.yml
檔案中) 所指定的組建命令不同,則請選擇 Insert build commands (插入組建命令)。針對 Build commands (組建命令),在build
階段中輸入您要執行的命令。針對多個命令,以&&
區隔每個命令 (例如,mvn test && mvn package
)。若要在其他階段執行命令,或者您有一長串的build
階段指令,請將buildspec.yml
檔案新增至原始程式碼根目錄,將指令新增至檔案,然後在原始程式碼根目錄中選擇 [使用 buildspec.yml]。
如需詳細資訊,請參閱 Buildspec 參考。
-
Batch 組態
在「Batch 設定」區段中,選擇 「編輯」。變更完成後,請選擇 [更新組態] 以儲存新的組態。如需詳細資訊,請參閱 Batch 次組建AWS CodeBuild。
您可以修改下列屬性:
- Batch 服務角色
-
提供批次組建的服務角色。
選擇下列其中一項:
-
如果您沒有批次服務角色,請選擇 [新增服務角色]。在服務角色中,輸入新角色的名稱。
-
如果您有批次服務角色,請選擇現有服務角色。在服務角色中,選擇服務角色。
Batch 組建會在批次設定中引入新的資訊安全角色。此新角色是必要的,因為 CodeBuild 必須能夠代表您呼叫
StartBuild
StopBuild
、和RetryBuild
動作,才能在批次中執行組建。客戶應該使用新角色,而不是在組建中使用相同的角色,原因有兩個:-
賦予構建角色
StartBuild
StopBuild
,和RetryBuild
權限將允許單個構建通過 buildspec 啟動更多構建。 -
CodeBuild 批次組建會提供限制,限制可用於批次中組建的組建數量和運算類型。如果組建角色具有這些權限,則組建本身可能會略過這些限制。
-
- 批次允許的運算類型
-
選取批次允許的運算類型。選取所有適用的項目。
- 批次允許的最大組建
-
輸入批次中允許的建置數目上限。如果批次超過此限制,批次就會失敗。
- Batch 逾時
-
輸入批次建置完成的時間上限。
- 合併成品
-
選取「將批次中的所有人工因素合併至單一位置」,以將批次中的所有人工因素合併至單一位置。
- Batch 報告模式
-
為批次組建選取所需的建置狀態報告模式。
注意
只有當專案來源為 Bitbucket 或 GitHub企業 GitHub,並且在 [來源] 下選取 [組建開始和結束] 時,才能使用此欄位。
- 彙總組建
-
選取此選項可將批次中所有建構的狀態合併為單一狀態報表。
- 個別組建
-
選取此選項可分別報告批次中所有組建的建構狀態。
成品
在「成品」區段中,選擇 「編輯」。變更完成後,請選擇 [更新組態] 以儲存新的組態。
您可以修改下列屬性:
- 類型
-
執行下列任意一項:
-
如果您不要建立任何建置輸出成品,則請選擇 No artifacts (無成品)。如果您只執行建置測試,或者想要將 Docker 映像推送到 Amazon ECR 存放庫,則可能需要執行此操作。
-
若要將組建輸出存放在 S3 儲存貯體中,請選擇 Amazon S3,然後執行下列動作:
-
如果您想要使用專案名稱做為組建輸出 ZIP 檔案或資料夾名稱,則請將 Name (名稱) 保留空白。否則請輸入名稱。(如果您想要輸出 ZIP 檔案,並且想要 ZIP 檔案有副檔名,則請務必將其包含在 ZIP 檔案名稱後面。)
-
如果您想要 buildspec 檔案中所指定的名稱來覆寫主控台中所指定的任何名稱,請選取 Enable semantic versioning (啟用語意版本控制)。buildspec 檔案中的名稱是在建置時計算,並使用 Shell 命令語言。例如,您可以將日期和時間附加到成品名稱,讓它一律是唯一的。唯一成品名稱可防止覆寫成品。如需詳細資訊,請參閱 Buildspec 語法。
-
針對 Bucket name (儲存貯體名稱),選擇輸出儲存貯體的名稱。
-
如果您在本程序稍早選擇 Insert build commands (插入組建命令),然後針對 Output files (輸出檔案),輸入要放入組建輸出 ZIP 檔案或資料夾之組建中的檔案位置。針對多個位置,以逗號區隔每個位置 (例如,
appspec.yml, target/my-app.jar
)。如需詳細資訊,請參閱Buildspec 語法中的files
描述。 -
如果您不想要加密建置成品,請選取 Remove artifacts encryption (移除成品加密)。
-
針對您想要的每組次要成品:
-
針對 Artifact identifier (成品識別符),輸入的值少於 128 個字元,並且只包含英數字元和底線。
-
選擇 Add artifact (新增成品)。
-
遵循先前的步驟來設定您的次要成品。
-
選擇 Save artifact (儲存成品)。
-
- 其他組態
-
- 加密金鑰
-
執行下列任意一項:
-
若要使用帳戶中的AWS 受管金鑰 Amazon S3 加密組建輸出成品,請將加密金鑰保留空白。此為預設值。
-
若要使用客戶受管金鑰來加密 Build 輸出成品,請在加密金鑰中,輸入客戶受管金鑰的 ARN。使用
arn:aws:kms:
格式。region-ID
:account-ID
:key/key-ID
-
- 快取類型
-
針對 Cache type (快取類型),選擇以下其中一項:
-
如果您不想要使用快取,請選擇 No cache (無快取)。
-
如果您想要使用 Amazon S3 快取,請選擇 Amazon S3,然後執行下列動作:
-
針對 Bucket (儲存貯體),選擇存放快取的 S3 儲存貯體名稱。
-
(選擇性) 對於快取路徑前置詞,請輸入 Amazon S3 路徑前置詞。Cache path prefix (快取路徑字首) 值類似目錄名稱。它可讓您將快取存放至儲存貯體的相同目錄下方。
重要
請不要在路徑字首結尾附加尾端斜線 (/)。
-
-
如果您想要使用本機快取,請選擇 Local (本機),然後選擇一或多個本機快取模式。
注意
「Docker layer cache」(Docker 層快取) 模式僅適用於 Linux。如果您選擇此模式,您的專案必須以特殊權限模式執行。
使用快取可節省大量建置時間,因為建置環境的可重複使用部分存放在快取中,並用於各建置。如需在 buildspec 檔案中指定快取的詳細資訊,請參閱Buildspec 語法。如需快取的詳細資訊,請參閱「在 AWS CodeBuild 中建立快取」。
-
日誌
在「記錄檔」區段中,選擇 「編輯」。變更完成後,請選擇 [更新組態] 以儲存新的組態。
您可以修改下列屬性:
選擇您想要建立的日誌。您可以建立亞馬遜 CloudWatch 日誌、Amazon S3 日誌或兩者。
- CloudWatch
-
如果你想要亞馬遜 CloudWatch 日誌日誌:
- CloudWatch 日誌
-
選取CloudWatch 記錄檔。
- Group name (群組名稱)
-
輸入您的 Amazon CloudWatch Logs 日誌群組名稱。
- 串流名稱
-
輸入您的亞馬遜 CloudWatch 日誌日誌流名稱。
- S3
-
如果您想要 Amazon S3 日誌:
- S3 日誌
-
選取 S3 logs (S3 日誌)。
- 儲存貯體
-
為日誌選擇 S3 儲存貯體的名稱。
- 路徑前綴
-
輸入記錄檔的前置字元。
- 停用 S3 日誌加密
-
如果您不想加密 S3 日誌,請選取此選項。