本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 中變更建置專案設定 AWS CodeBuild
您可以使用 AWS CodeBuild 主控台 AWS CLI或 AWS SDKs 來變更建置專案的設定。
如果您將測試報告新增至建置專案,請確定您的IAM角色具有 中所述的許可測試報告許可。
變更建置專案的設定 (主控台)
若要變更建置專案的設定,請執行下列程序:
在 https://console.aws.amazon.com/codesuite/Codebuild/home
開啟 AWS CodeBuild 主控台。 -
在導覽窗格中,選擇 Build projects (建置專案)。
-
執行以下任意一項:
-
選擇您想要變更的組建專案連結,然後選擇 Build details (組建詳細資訊)。
-
選擇您想要變更之組建專案旁的選項按鈕,選擇 View details (檢視詳細資訊),然後選擇 Build details (組建詳細資訊)。
-
您可以修改下列區段:
專案組態
在專案組態區段中,選擇編輯 。變更完成後,請選擇更新組態以儲存新組態。
您可以修改下列屬性。
- Description
-
輸入建置專案的選用描述,以協助其他使用者了解此專案的用途。
- 建置徽章
-
選取 Enable build badge (啟用組建徽章),讓專案的組建狀態變成可見且可嵌入。如需詳細資訊,請參閱建置徽章範例。
注意
如果您的來源供應商是 Amazon S3,建置徽章將不適用。
- 啟用並行建置限制
-
如果您想要限制此專案的並行建置數量,請執行下列步驟:
-
選取限制此專案可以啟動 的並行建置數量。
-
在並行建置限制 中,輸入此專案允許的並行建置數量上限。此限制不能大於為帳戶設定的並行建置限制。如果您嘗試輸入大於帳戶限制的數字,則會顯示錯誤訊息。
只有當目前的建置數量小於或等於此限制時,才會啟動新的建置。如果目前的建置計數符合此限制,則會調節新的建置且不會執行。
-
- 啟用公有建置存取權
-
若要讓專案的建置結果公開,包括沒有 AWS 帳戶存取權的使用者,請選取啟用公有建置存取權,並確認您要公開建置結果。下列屬性用於公有建置專案:
- 公有建置服務角色
-
如果您想要為您 CodeBuild 建立新的服務角色,請選取新服務角色;如果您想要使用現有服務角色,請選取現有服務角色。
公有建置服務角色 CodeBuild 可讓您讀取 CloudWatch 日誌,並下載專案建置的 Amazon S3 成品。這是讓專案的建置日誌和成品可供公有使用的必要條件。
- 服務角色
-
輸入新服務角色或現有服務角色的名稱。
若要讓專案的建置結果私有,請清除啟用公有建置存取 。
如需詳細資訊,請參閱取得公有建置專案 URLs。
警告
公開專案建置結果時,請注意下列事項:
-
所有專案的建置結果、日誌和成品,包括在專案私有時執行的建置,都可供公有使用。
-
所有建置日誌和成品都可供公有使用。環境變數、原始程式碼和其他敏感資訊可能已輸出至建置日誌和成品。您必須謹慎處理要輸出到建置日誌的資訊。一些最佳實務是:
-
請勿在環境變數中存放敏感值,尤其是 AWS 存取金鑰IDs和秘密存取金鑰。建議您使用 Amazon EC2 Systems Manager 參數存放區或 AWS Secrets Manager 來存放敏感值。
-
遵循 使用 Webhook 的最佳實務 來限制哪些實體可以觸發建置,並且不要將 buildspec 存放在專案本身中,以確保您的 Webhook 盡可能安全。
-
-
惡意使用者可以使用公有建置來分發惡意成品。我們建議專案管理員檢閱所有提取請求,以確認提取請求是合法的變更。我們也建議您使用其總和檢查碼驗證任何成品,以確保下載正確的成品。
- 其他資訊
-
對於標籤 ,輸入您希望支援服務 AWS 使用的任何標籤的名稱和值。使用 Add row (新增資料列) 來新增標籤。您最多可新增 50 個標籤。
來源
在來源區段中,選擇編輯 。變更完成後,請選擇更新組態以儲存新組態。
您可以修改下列屬性:
- 來源提供者
-
選擇原始碼提供者類型。使用下列清單,針對來源提供者進行適當的選擇:
注意
CodeBuild 不支援 Bitbucket Server。
環境
在環境區段中,選擇編輯 。變更完成後,請選擇更新組態以儲存新組態。
您可以修改下列屬性:
- 佈建模型
-
若要變更佈建模型,請選擇變更佈建模型,然後執行下列其中一項操作:
-
若要使用 管理的隨需機群 AWS CodeBuild,請選擇隨需 。透過隨需機群, 為您的建置 CodeBuild 提供運算。建置完成時,機器會遭到銷毀。隨需機群受到完整管理,並包含自動擴展功能,可處理需求激增。
-
若要使用 管理的預留容量機群 AWS CodeBuild,請選擇預留容量 ,然後選擇機群名稱 。使用預留容量機群,您可以為建置環境設定一組專用執行個體。這些機器會保持閒置狀態,準備好立即處理建置或測試,並減少建置持續時間。透過預留容量機群,您的機器始終在執行中,只要佈建,就會持續產生成本。
如需相關資訊,請參閱 在預留容量機群上執行建置。
-
- 環境映像
-
若要變更建置映像,請選擇覆寫映像並執行下列其中一項動作:
-
若要使用 管理的 Docker 映像 AWS CodeBuild,請選擇 受管映像 ,然後從作業系統 、執行期 (s)、映像 和映像版本 進行選擇。若可用,請從 Environment type (環境類型) 進行選擇。
-
若要使用另一個 Docker 映像,請選擇 Custom image (自訂映像)。針對環境類型 ,選擇 ARM、Linux 、Linux GPU或 Windows 。如果您選擇其他登錄檔 ,請針對外部登錄檔 URL,使用 格式 在 Docker Hub 中輸入 Docker 映像的名稱和標籤
。如果您選擇 Amazon ECR,請使用 Amazon ECR儲存庫和 Amazon ECR映像來選擇 AWS 帳戶中的 Docker 映像。docker repository
/docker image name
-
若要使用私有 Docker 映像,請選擇自訂映像。針對環境類型 ,選擇 ARM、Linux 、Linux GPU或 Windows 。針對映像登錄檔 ,選擇其他登錄檔 ,然後輸入私有 Docker 映像ARN的憑證的 。憑證必須由 Secrets Manager 建立。如需詳細資訊,請參閱 使用者指南 中的什麼是 AWS Secrets Manager?。 AWS Secrets Manager
注意
CodeBuild 會覆寫自訂 Docker 映像
ENTRYPOINT
的 。 -
- 服務角色
執行以下任意一項:
-
如果您沒有 CodeBuild 服務角色,請選擇 新服務角色 。在角色名稱 中,輸入新角色的名稱。
-
如果您有 CodeBuild 服務角色,請選擇現有服務角色 。在角色 ARN中,選擇服務角色。
注意
當您使用主控台建立建置專案時,您可以同時建立 CodeBuild 服務角色。根據預設,此角色只能與該建置專案搭配運作。如果您使用主控台將此服務角色與另一個建置專案建立關聯,則會更新此角色以與其他建置專案搭配運作。服務角色最多可以與 10 個組建專案搭配運作。
-
- 其他組態
-
- Timeout (逾時)
-
指定介於 5 分鐘到 36 小時之間的值,之後如果未完成,則會 CodeBuild 停止建置。如果 hours (小時) 和 minutes (分鐘) 空白,則會使用預設值 60 分鐘。
- 特殊權限
-
如果您想要建置 Docker 映像,或想要讓建置獲得提升的權限,請選取啟用此旗標。 只有在您打算使用此建置專案建置 Docker 映像時。否則,所有嘗試與 Docker 協助程式互動的相關建置都會失敗。您也必須啟動 Docker 協助程式,以讓您的建置與其互動。執行這項操作的一種方式是執行下列建置命令,以在建置規格的
install
階段中初始化 Docker 協助程式。如果您選擇由 提供的建置環境映像 CodeBuild 並支援 Docker,請勿執行這些命令。注意
根據預設,Docker 常駐程式會針對非VPC建置啟用。如果您想要使用 Docker 容器進行VPC建置,請參閱 Docker Docs 網站上的執行期權限和 Linux 功能
,並啟用權限模式。此外,Windows 不支援特權模式。 - 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"
- VPC
如果您想要 CodeBuild 使用 VPC:
-
針對 VPC,選擇 CodeBuild 使用的 VPC ID。
-
針對VPC子網路 ,選擇包含 CodeBuild 使用之資源的子網路。
-
針對VPC安全群組 ,選擇 CodeBuild 用於允許存取 中資源的安全群組VPCs。
-
- 運算
-
選擇其中一個可用的選項。
- 環境變數
-
輸入名稱和值,然後選擇要用於建置的每個環境變數類型。
注意
CodeBuild 會自動為您的 AWS 區域設定環境變數。如果您尚未在 buildspec.yml 中加入環境變數,您必須加以設定:
-
AWS_ACCOUNT_ID
-
IMAGE_REPO_NAME
-
IMAGE_TAG
主控台和 AWS CLI 使用者可以查看環境變數。如果您不在意環境變數的可見性,請設定 Name (名稱) 和 Value (值) 欄位,然後將 Type (類型) 設定為 Plaintext (純文字)。
建議您將環境變數儲存為敏感值,例如 AWS Amazon EC2 Systems Manager 參數存放區或 中的存取金鑰 ID、 AWS 秘密存取金鑰或密碼作為參數 AWS Secrets Manager。
如果您使用 Amazon EC2 Systems Manager 參數存放區,則對於類型 ,請選擇參數 。對於名稱 ,輸入 CodeBuild 要參考的識別碼。對於值 ,輸入儲存在 Amazon EC2 Systems Manager 參數存放區中的參數名稱。使用名為
/CodeBuild/dockerLoginPassword
的參數做為範例,針對 Type (類型),選擇 Parameter (參數)。針對名稱,輸入LOGIN_PASSWORD
。針對數值,輸入/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 參數存放區和 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 區段中,選擇編輯 。變更完成後,請選擇更新組態以儲存新組態。
您可以修改下列屬性:
- 建置規格
-
執行以下任意一項:
-
如果您的來源碼包含 buildspec 檔案,請選擇 Use a buildspec file (使用 buildspec 檔案)。根據預設, CodeBuild 尋找在原始碼根目錄中名為
buildspec.yml
的檔案。如果您的 buildspec 檔案使用不同的名稱或位置,請在 Buildspec 名稱中輸入來源根中的路徑 (例如,buildspec-two.yml
或configuration/buildspec.yml
。 如果 buildspec 檔案位於 S3 儲存貯體中,則其必須與建置專案位於相同的 AWS 區域。 使用 buildspec 檔案 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 參考。
-
批次組態
在批次組態區段中,選擇編輯 。變更完成後,請選擇更新組態以儲存新組態。如需詳細資訊,請參閱批次執行建置。
您可以修改下列屬性:
- 批次服務角色
-
提供批次建置的服務角色。
選擇下列其中一項:
-
如果您沒有批次服務角色,請選擇新服務角色 。在服務角色 中,輸入新角色的名稱。
-
如果您有批次服務角色,請選擇現有服務角色 。在服務角色 中,選擇服務角色。
批次建置會在批次組態中引入新的安全角色。此新角色是必要的
StopBuild
,因為 CodeBuild 必須能夠代表您呼叫StartBuild
、 和RetryBuild
動作,才能作為批次的一部分執行組建。客戶應該使用新的角色,而不是他們在建置中使用的相同角色,原因有兩個:-
授予建置角色
StartBuild
、StopBuild
和RetryBuild
許可,可讓單一建置透過 buildspec 啟動更多建置。 -
CodeBuild 批次建置提供限制,限制可用於批次中建置的建置和運算類型數目。如果建置角色具有這些許可,則建置本身可能會略過這些限制。
-
- 批次允許的運算類型 (s)
-
選取批次允許的運算類型。選取所有適用項目。
- 批次中允許的建置上限
-
輸入批次中允許的建置數量上限。如果批次超過此限制,批次將會失敗。
- 批次逾時
-
輸入批次建置完成的時間上限。
- 合併成品
-
選取將所有成品從批次合併到單一位置,讓所有成品從批次合併到單一位置。
- 批次報告模式
-
選取批次建置所需的建置狀態報告模式。
注意
只有在專案來源為 Bitbucket GitHub或 GitHub Enterprise 時,才能使用此欄位,並在來源 下選取建置開始和完成時,向來源提供者報告建置狀態。
- 彙總建置
-
選取 ,讓批次中所有建置的狀態合併為單一狀態報告。
- 個別建置
-
選取 ,讓批次中所有建置的建置狀態分別報告。
成品
在偽影區段中,選擇編輯 。變更完成後,請選擇更新組態以儲存新組態。
您可以修改下列屬性:
- 類型
-
執行以下任意一項:
-
如果您不要建立任何建置輸出成品,則請選擇 No artifacts (無成品)。如果您只執行建置測試,或想要將 Docker 映像推送至 Amazon ECR儲存庫,您可能想要執行此操作。
-
若要將建置輸出儲存在 S3 儲存貯體中,請選擇 Amazon S3,然後執行下列動作:
-
如果您想要將專案名稱用於建置輸出ZIP檔案或資料夾,請將名稱保留空白。否則請輸入名稱。(如果您想要輸出ZIP檔案,而且想要ZIP檔案具有檔案副檔名,請務必在檔案名稱後面包含ZIP該檔案。)
-
如果您想要 buildspec 檔案中所指定的名稱來覆寫主控台中所指定的任何名稱,請選取 Enable semantic versioning (啟用語意版本控制)。buildspec 檔案中的名稱是在建置時計算,並使用 Shell 命令語言。例如,您可以將日期和時間附加到成品名稱,讓它一律是唯一的。唯一成品名稱可防止覆寫成品。如需詳細資訊,請參閱Buildspec 語法。
-
針對 Bucket name (儲存貯體名稱),選擇輸出儲存貯體的名稱。
-
如果您在此程序中稍早選擇插入建置命令,則針對輸出檔案 ,輸入您要放入建置輸出檔案或資料夾的建置ZIP檔案位置。針對多個位置,以逗號區隔每個位置 (例如,
appspec.yml, target/my-app.jar
)。如需詳細資訊,請參閱Buildspec 語法中的files
描述。 -
如果您不想要加密建置成品,請選取 Remove artifacts encryption (移除成品加密)。
-
針對您想要的每組次要成品:
-
針對 Artifact identifier (成品識別符),輸入的值少於 128 個字元,並且只包含英數字元和底線。
-
選擇 Add artifact (新增成品)。
-
遵循先前的步驟來設定您的次要成品。
-
選擇 Save artifact (儲存成品)。
-
- 其他組態
-
- 加密金鑰
-
執行以下任意一項:
-
若要使用帳戶中的 AWS 受管金鑰 Amazon S3 來加密建置輸出成品,請將加密金鑰保留空白。此為預設值。
-
若要使用客戶受管金鑰來加密建置輸出成品,請在加密金鑰 中輸入客戶受管金鑰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 語法。如需快取的詳細資訊,請參閱「快取建置可改善效能」。
-
日誌
在日誌區段中,選擇編輯 。變更完成後,請選擇更新組態以儲存新組態。
您可以修改下列屬性:
選擇您要建立的日誌。您可以建立 Amazon CloudWatch Logs、Amazon S3 Log 或兩者。
- CloudWatch
-
如果您想要 Amazon CloudWatch Logs 日誌:
- CloudWatch 日誌
-
選取CloudWatch 日誌 。
- Group name (群組名稱)
-
輸入您的 Amazon CloudWatch Logs 日誌群組的名稱。
- 串流名稱
-
輸入您的 Amazon CloudWatch Logs 日誌串流名稱。
- S3
-
如果您想要 Amazon S3 日誌:
- S3 日誌
-
選取 S3 logs (S3 日誌)。
- 儲存貯體
-
選擇日誌的 S3 儲存貯體名稱。
- 路徑字首
-
輸入日誌的字首。
- 停用 S3 日誌加密
-
如果您不希望 S3 日誌加密,請選取 。
變更建置專案的設定 (AWS CLI)
如需 AWS CLI 搭配 使用 的相關資訊 AWS CodeBuild,請參閱 命令列參考。
若要使用 更新 CodeBuild 專案 AWS CLI,您可以建立具有更新屬性JSON的檔案,並將該檔案傳遞至 update-project
命令。更新檔案中未包含的任何屬性保持不變。
在更新JSON檔案中,只需要 name
屬性和修改的 屬性。name
屬性會識別要修改的專案。對於任何修改的結構,也必須包含這些結構的必要參數。例如,若要修改專案的環境,需要 environment/type
和 environment/computeType
屬性。以下是更新環境映像的範例:
{ "name": "
<project-name>
", "environment": { "type": "LINUX_CONTAINER", "computeType": "BUILD_GENERAL1_SMALL", "image": "aws/codebuild/amazonlinux2-x86_64-standard:4.0" } }
如果您需要取得專案的目前屬性值,請使用 batch-get-projects命令來取得您正在修改之專案的目前屬性,並將輸出寫入 檔案。
aws codebuild batch-get-projects --names "
<project-name>
" >project-info.json
所以此 project-info.json
檔案包含專案陣列,因此無法直接用來更新專案。不過,您可以從 複製要修改的屬性 project-info.json
檔案並將其貼到您的更新檔案中,作為您要修改屬性的基準。如需詳細資訊,請參閱檢視建置專案的詳細資訊 (AWS CLI)。
如 中所述修改更新JSON檔案建立建置專案 (AWS CLI),並儲存結果。修改更新JSON檔案完成後,請執行 update-project
命令並傳遞更新JSON檔案。
aws codebuild update-project --cli-input-json file://
<update-project-file>
如果成功,更新的專案JSON會出現在輸出中。如果缺少任何必要的參數,輸出中會顯示錯誤訊息,以識別缺少的參數。例如,如果environment/type
參數遺失,則會顯示錯誤訊息:
aws codebuild update-project --cli-input-json file://update-project.json Parameter validation failed: Missing required parameter in environment: "type"
變更建置專案的設定 (AWS SDKs)
如需 AWS CodeBuild 搭配 使用 的相關資訊 AWS SDKs,請參閱 AWS 開發套件和工具參考。