在中建立建置專案 AWS CodeBuild - AWS CodeBuild

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在中建立建置專案 AWS CodeBuild

您可以使用 AWS CodeBuild 主控台 AWS CLI、或 AWS SDKs來建立組建專案。

必要條件

在建立組建專案之前,請先回答中的問題規劃組建

建立組建專案 (主控台)

https://console.aws.amazon.com/codesuite/代碼生成/家中打開 AWS CodeBuild 控制台。

如果顯示 CodeBuild 資訊頁,請選擇 [建立組建專案]。否則,在瀏覽窗格中,展開 [組建],選擇 [建置專案],然後選擇 [建立組建專案]。

選擇 Create build project (建立建置專案)

填寫以下各節。完成後,選擇頁面底部的 [建立建置專案]。

項目配置

Project name (專案名稱)

輸入此組建專案的名稱。每個 AWS 帳戶的組建專案名稱必須是唯一的。

Description

輸入建置專案的選用描述,以協助其他使用者瞭解此專案的用途。

建立徽章

(選擇性) 選取 [啟用組建徽章],讓專案的建置狀態可見且可嵌入。如需詳細資訊,請參閱建置徽章範例

注意

如果您的來源供應商是 Amazon S3,則不適用建立徽章。

啟用並行建置限制

(選擇性) 如果您要限制此專案的並行建置數目,請執行下列步驟:

  1. 選取「限制此專案可啟動的並行建構數目」。

  2. 並行建構限制中,輸入此專案允許的並行建構數目上限。此限制不得大於針對帳戶設定的並行建置限制。如果您嘗試輸入的數字大於帳號限制,則會顯示錯誤訊息。

只有當目前的建置數量小於或等於此限制時,才會啟動新的建置。如果目前的建置計數符合此限制,則會調節新的建置且不會執行。

其他資訊

(選擇性) 針對標籤,輸入您希望支援 AWS 服務使用之任何標籤的名稱和值。使用 Add row (新增資料列) 來新增標籤。您最多可新增 50 個標籤。

來源

來源提供者

選擇源代碼提供者類型。使用下列清單來選取適合您的來源提供者的選項:

注意

CodeBuild 不支援比特桶伺服器。

Amazon S3
儲存貯體

選擇包含原始程式碼之輸入值區的名稱。

S3 物件金鑰或 S3 資料夾

輸入ZIP檔案名稱或包含原始程式碼之資料夾的路徑。輸入正斜線 (/) 以下載 S3 儲存貯體中的所有項目。

來源版本

輸入代表輸入檔案組建之物件的版本 ID。如需詳細資訊,請參閱 原始碼版本範例 AWS CodeBuild

CodeCommit
儲存庫

選擇您要使用的存放庫。

參考類型

選擇「分支」、「Git 標籤」或「提交 ID」來指定原始程式碼的版本。如需詳細資訊,請參閱原始碼版本範例 AWS CodeBuild

注意

我們建議您選擇看起來不像提交的 Git 分支名稱IDs,例如811dd1ba1aba14473856cee38308caed7190c0d5392f7. 這有助於避免與實際提交的 Git 結帳衝突。

Git 克隆深度

選擇此選項可建立歷程記錄截斷為指定數目的簡易複製。如果您想要完整複製,請選擇 Full (完整)

Git 子模塊

若您要將 Git 子模組包含在您的儲存庫中,請選擇Use Git submodules (使用 Git 子模組)

Bitbucket
憑證

選擇 [預設來源認證] 或 [自訂來源認證],然後依照指示管理預設來源認證或自訂來源認證。

連接類型

選擇CodeConnectionsOAuth應用程式密碼個人存取權杖來連線 CodeBuild。

Connection (連線)

選取 Bitbucket 連線或秘 Secrets Manager 碼,以透過您指定的連線類型進行連線。

儲存庫

在我的 Bitbucket 帳戶或公共存儲庫中選擇存儲庫,然後輸入存儲庫URL。

來源版本

輸入分支、提交 ID、標籤或參照,以及提交 ID。如需詳細資訊,請參閱 原始碼版本範例 AWS CodeBuild

注意

我們建議您選擇看起來不像提交的 Git 分支名稱IDs,例如811dd1ba1aba14473856cee38308caed7190c0d5392f7. 這有助於避免與實際提交的 Git 結帳衝突。

Git 克隆深度

選擇 Git clone depth (Git 複製深度),建立記錄截取至指定遞交數的 Shallow 複製。如果您想要完整複製,請選擇 Full (完整)

Git 子模塊

若您要將 Git 子模組包含在您的儲存庫中,請選擇Use Git submodules (使用 Git 子模組)

建置狀態

如果您想要將組建的開始和完成狀態報告給來源提供者,請選取 [在組建開始和完成時向來源提供者報告組建狀態]。

若要能夠向來源提供者報告組建狀態,與來源提供者關聯的使用者必須具有存放庫的寫入存取權。如果使用者沒有寫入權限,則無法更新組建狀態。如需詳細資訊,請參閱來源提供者存取

針對狀態內容,請在 Bitbucket 認可狀態中輸入要用於name參數的值。如需詳細資訊,請參閱 Bitbucket API 文件中的組建

針對 Target URL,請在 Bitbucket 認可狀態中輸入要用於url參數的值。如需詳細資訊,請參閱 Bitbucket API 文件中的組建

由 webhook 觸發的構建狀態始終報告給源提供程序。若要具有從主控台啟動的組建狀態,或向來源提供者回報API呼叫,您必須選取此設定。

如果您的項目的構建是由 webhook 觸發的,則必須將新的提交推送到存儲庫,以使對此設置的更改生效。

如果您想要在每次將程式碼變更推送至此儲存庫時建立原始程式碼,請在 [主 CodeBuild 要來源 webhook 事件] 中選取 [每次程式碼變更推送至此儲存庫時重建]。如需有關 Webhook 和篩選器群組的詳細資訊,請參閱比特桶網絡鉤事件

GitHub
憑證

選擇 [預設來源認證] 或 [自訂來源認證],然後依照指示管理預設來源認證或自訂來源認證。

連接類型

選擇要連接的GitHub 應用程序個人訪問令牌 CodeBuild。OAuth

Connection (連線)

選取 GitHub 連線或 Secrets Manager 碼,以透過您指定的連線類型進行連線。

儲存庫

在我的 GitHub 帳戶,公共存儲庫GitHub 範圍的 webhook 中選擇存儲庫,然後輸入存儲庫。URL

來源版本

輸入分支、提交 ID、標籤或參照,以及提交 ID。如需詳細資訊,請參閱 原始碼版本範例 AWS CodeBuild

注意

我們建議您選擇看起來不像提交的 Git 分支名稱IDs,例如811dd1ba1aba14473856cee38308caed7190c0d5392f7. 這有助於避免與實際提交的 Git 結帳衝突。

Git 克隆深度

選擇 Git clone depth (Git 複製深度),建立記錄截取至指定遞交數的 Shallow 複製。如果您想要完整複製,請選擇 Full (完整)

Git 子模塊

若您要將 Git 子模組包含在您的儲存庫中,請選擇Use Git submodules (使用 Git 子模組)

建置狀態

如果您想要將組建的開始和完成狀態報告給來源提供者,請選取 [在組建開始和完成時向來源提供者報告組建狀態]。

若要能夠向來源提供者報告組建狀態,與來源提供者關聯的使用者必須具有存放庫的寫入存取權。如果使用者沒有寫入權限,則無法更新組建狀態。如需詳細資訊,請參閱來源提供者存取

在「狀態」內容中,輸入要用於 GitHub 確認狀態中context參數的值。如需詳細資訊,請參閱 GitHub 開發人員指南中的建立提交狀態

Target 中URL,輸入 GitHub 確認狀態中要用於target_url參數的值。如需詳細資訊,請參閱 GitHub 開發人員指南中的建立提交狀態

由 webhook 觸發的構建狀態始終報告給源提供程序。若要具有從主控台啟動的組建狀態,或向來源提供者回報API呼叫,您必須選取此設定。

如果您的項目的構建是由 webhook 觸發的,則必須將新的提交推送到存儲庫,以使對此設置的更改生效。

如果您想要在每次將程式碼變更推送至此儲存庫時建立原始程式碼,請在 [主 CodeBuild 要來源 webhook 事件] 中選取 [每次程式碼變更推送至此儲存庫時重建]。如需有關 Webhook 和篩選器群組的詳細資訊,請參閱GitHub 網絡掛鉤事件

GitHub Enterprise Server
憑證

選擇 [預設來源認證] 或 [自訂來源認證],然後依照指示管理預設來源認證或自訂來源認證。

連接類型

選擇CodeConnections或要連接的個人訪問令牌 CodeBuild。

Connection (連線)

選取 GitHub 企業連線或 Secret 管理員密碼,以透過您指定的連線類型進行連線。

儲存庫

在我的 GitHub 企業帳戶或GitHub 企業範圍的 webhook 中選擇存儲庫,然後輸入存儲庫。URL

來源版本

輸入提取請求、分支、提交 ID、標籤或參照,以及提交 ID。如需詳細資訊,請參閱原始碼版本範例 AWS CodeBuild

注意

我們建議您選擇看起來不像提交的 Git 分支名稱IDs,例如811dd1ba1aba14473856cee38308caed7190c0d5392f7. 這有助於避免與實際提交的 Git 結帳衝突。

Git 克隆深度

選擇 Git clone depth (Git 複製深度),建立記錄截取至指定遞交數的 Shallow 複製。如果您想要完整複製,請選擇 Full (完整)

Git 子模塊

若您要將 Git 子模組包含在您的儲存庫中,請選擇Use Git submodules (使用 Git 子模組)

建置狀態

如果您想要將組建的開始和完成狀態報告給來源提供者,請選取 [在組建開始和完成時向來源提供者報告組建狀態]。

若要能夠向來源提供者報告組建狀態,與來源提供者關聯的使用者必須具有存放庫的寫入存取權。如果使用者沒有寫入權限,則無法更新組建狀態。如需詳細資訊,請參閱來源提供者存取

在「狀態」內容中,輸入要用於 GitHub 確認狀態中context參數的值。如需詳細資訊,請參閱 GitHub 開發人員指南中的建立提交狀態

Target 中URL,輸入 GitHub 確認狀態中要用於target_url參數的值。如需詳細資訊,請參閱 GitHub 開發人員指南中的建立提交狀態

由 webhook 觸發的構建狀態始終報告給源提供程序。若要具有從主控台啟動的組建狀態,或向來源提供者回報API呼叫,您必須選取此設定。

如果您的項目的構建是由 webhook 觸發的,則必須將新的提交推送到存儲庫,以使對此設置的更改生效。

不安全 SSL

選取 [啟用不安全性] 以在連線SSL至您的 GitHub 企業專案儲存庫時忽略SSL警告。

如果您想要在每次將程式碼變更推送至此儲存庫時建立原始程式碼,請在 [主 CodeBuild 要來源 webhook 事件] 中選取 [每次程式碼變更推送至此儲存庫時重建]。如需有關 Webhook 和篩選器群組的詳細資訊,請參閱GitHub 網絡掛鉤事件

GitLab
憑證

選擇 [預設來源認證] 或 [自訂來源認證],然後依照指示管理預設來源認證或自訂來源認證。

連接類型

CodeConnections用於連接 GitLab 到 CodeBuild。

Connection (連線)

選取要透過 GitLab 連線的連線 CodeConnections。

儲存庫

選擇您要使用的存放庫。

來源版本

輸入提取請求 ID、分支、提交 ID、標籤或參照,以及提交 ID。如需詳細資訊,請參閱原始碼版本範例 AWS CodeBuild

注意

我們建議您選擇看起來不像提交的 Git 分支名稱IDs,例如811dd1ba1aba14473856cee38308caed7190c0d5392f7. 這有助於避免與實際提交的 Git 結帳衝突。

Git 克隆深度

選擇 Git clone depth (Git 複製深度),建立記錄截取至指定遞交數的 Shallow 複製。如果您想要完整複製,請選擇 Full (完整)

建置狀態

如果您想要將組建的開始和完成狀態報告給來源提供者,請選取 [在組建開始和完成時向來源提供者報告組建狀態]。

若要能夠向來源提供者報告組建狀態,與來源提供者關聯的使用者必須具有存放庫的寫入存取權。如果使用者沒有寫入權限,則無法更新組建狀態。如需詳細資訊,請參閱來源提供者存取

GitLab Self Managed
憑證

選擇 [預設來源認證] 或 [自訂來源認證],然後依照指示管理預設來源認證或自訂來源認證。

連接類型

CodeConnections用於將 GitLab 自我管理連接到 CodeBuild。

Connection (連線)

選取要透過連線的 GitLab 自我管理連線 CodeConnections。

儲存庫

選擇您要使用的存放庫。

來源版本

輸入提取請求 ID、分支、提交 ID、標籤或參照,以及提交 ID。如需詳細資訊,請參閱原始碼版本範例 AWS CodeBuild

注意

我們建議您選擇看起來不像提交的 Git 分支名稱IDs,例如811dd1ba1aba14473856cee38308caed7190c0d5392f7. 這有助於避免與實際提交的 Git 結帳衝突。

Git 克隆深度

選擇 Git clone depth (Git 複製深度),建立記錄截取至指定遞交數的 Shallow 複製。如果您想要完整複製,請選擇 Full (完整)

建置狀態

如果您想要將組建的開始和完成狀態報告給來源提供者,請選取 [在組建開始和完成時向來源提供者報告組建狀態]。

若要能夠向來源提供者報告組建狀態,與來源提供者關聯的使用者必須具有存放庫的寫入存取權。如果使用者沒有寫入權限,則無法更新組建狀態。如需詳細資訊,請參閱來源提供者存取

環境

佈建模式

執行以下任意一項:

  • 若要使用由管理的隨選叢集 AWS CodeBuild,請選擇 [選]。透過隨選叢集,為您的組建 CodeBuild 提供運算。當構建完成時,機器將被銷毀。隨需叢集是全受管的,並包含自動擴充功能,可處理尖峰的需求。

  • 若要使用由管理的保留容量叢集 AWS CodeBuild,請選擇保留容量,然後選取叢集名稱。使用預留容量叢集,您可以為建置環境設定一組專用執行個體。這些機器保持閒置狀態,可立即處理構建或測試,並減少構建持續時間。使用保留容量叢集時,您的機器會一直在執行,而且只要佈建機器就會繼續產生成本。

如需相關資訊,請參閱 在保留容量叢集上執行組建

環境影像

執行以下任意一項:

  • 若要使用由管理的 Docker 映像檔 AWS CodeBuild,請選擇 [受管理的映像檔],然後從 [作業系統]、[執行階段]、[映像] 和 [映像] 版本中進行選取。若可用,請從 Environment type (環境類型) 進行選擇。

  • 若要使用另一個 Docker 映像,請選擇 Custom image (自訂映像)。對於「環境類型ARM,請選擇「Linux」、「Linux GPU」或「視窗」。如果您選擇 [其他登錄],對於 [外部登錄]URL,請使用格式在 Docker Hub 中輸入 Docker 映像的名稱和標記。docker repository/docker image name如果您選擇 Amazon ECR,請使用 Amazon ECR 存儲庫Amazon ECR 圖像在您的 AWS 帳戶中選擇 Docker 圖像。

  • 若要使用私人 Docker 映像檔,請選擇 [自訂映像檔]。對於「環境類型ARM,請選擇「Linux」、「Linux GPU」或「視窗」。對於映像登錄,請選擇 [其他登錄],然後輸入私人 Docker 映像ARN的認證。認證必須由 Secrets Manager 建立。如需詳細資訊,請參閱什麼是 AWS Secrets Manager?《AWS Secrets Manager 使用者指南》中。

注意

CodeBuild 會覆寫自ENTRYPOINT訂泊塢視窗影像的。

運算

執行以下任意一項:

  • 若要使用EC2計算,請選擇EC2。EC2運算可在動作執行期間提供最佳化彈性

  • 若要使用 Lambda 運算,請選擇 Lambda。Lambda 運算為您的組建提供最佳化的啟動速度。由於啟動延遲較低,Lambda 支援更快的建置速度。Lambda 也會自動擴展,因此組建不會在佇列中等待執行。如需相關資訊,請參閱 根據運 AWS Lambda 算執行組建

服務角色

執行以下任意一項:

  • 如果您沒有 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 文檔網站上的運行時特權和 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。

如需詳細資訊,請參閱搭 AWS CodeBuild 配 Amazon 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 (參數)。針對名稱,輸入 LOGIN_PASSWORD。針對數值,輸入 /CodeBuild/dockerLoginPassword

重要

如果您使用 Amazon EC2 Systems Manager 參數存放區,建議您使用開頭的參數名稱來存放參數 /CodeBuild/ (例如,/CodeBuild/dockerLoginPassword)。您可以使用 CodeBuild 主控台在 Amazon EC2 Systems Manager 中建立參數。選擇 Create parameter (建立參數),然後遵循對話方塊中的說明。(在該對話框中,對於 KMSkey,您可以指ARN定帳戶中的 AWS KMS 密鑰。 Amazon EC2 Systems Manager 使用此金鑰在儲存期間加密參數的值,並在擷取期間將其解密。) 如果您使用 CodeBuild 主控台建立參數,則主控台會在儲存參數名稱時以其開始。/CodeBuild/如需詳細資訊,請參閱 Amazon Systems Manager 使用指南中的 Systems Manager 參數存放區和 EC2 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 檔案,請選擇 Use a buildspec file (使用 buildspec 檔案)。依預設,會 CodeBuild尋找在原始程式碼根目錄buildspec.yml中名為的檔案。如果您的 buildspec 檔案使用不同的名稱或位置,請在 Buildspec 名稱中從來源根目錄輸入路徑 (例如,或. buildspec-two.yml configuration/buildspec.yml 如果 buildspec 檔案位於 S3 儲存貯體中,則該檔案必須與您的建置專案位於相同的 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 組建會在批次設定中引入新的資訊安全角色。此新角色是必要的,因為 CodeBuild 必須能夠代表您呼叫StartBuildStopBuild、和RetryBuild動作,才能在批次中執行組建。客戶應該使用新角色,而不是在組建中使用的角色,原因有兩個:

  • 賦予構建角色 StartBuildStopBuild,和RetryBuild權限將允許單個構建通過 buildspec 啟動更多構建。

  • CodeBuild 批次組建會提供限制,限制可用於批次中組建的組建數量和運算類型。如果組建角色具有這些權限,則組建本身可能會略過這些限制。

批次允許的運算類型

選取批次允許的運算類型。選取所有適用的項目。

批次允許的最大組建

輸入批次中允許的最大建構數目。如果批次超過此限制,批次就會失敗。

Batch 逾時

輸入批次建置完成的時間上限。

合併成品

選取「將批次中的所有人工因素合併至單一位置」,以將批次中的所有人工因素合併至單一位置。

Batch 報告模式

為批次組建選取所需的建置狀態報告模式。

注意

只有當專案來源為 Bitbucket 或 GitHub企業 GitHub,並且在 [來源] 下選取 [組建開始和結束] 時,才能使用此欄位。

彙總組建

選取此選項可將批次中所有建構的狀態合併為單一狀態報表。

個別組建

選取此選項可分別報告批次中所有組建的建構狀態。

成品

類型

執行以下任意一項:

  • 如果您不要建立任何建置輸出成品,則請選擇 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 (移除成品加密)

針對您想要的每組次要成品:

  1. 針對 Artifact identifier (成品識別符),輸入的值少於 128 個字元,並且只包含英數字元和底線。

  2. 選擇 Add artifact (新增成品)

  3. 遵循先前的步驟來設定您的次要成品。

  4. 選擇 Save artifact (儲存成品)

其他組態
加密金鑰

(選擇性) 執行下列操作:

  • 若要在帳戶中使 AWS 受管金鑰 用 Amazon S3 加密建置輸出成品,請將加密金鑰保留空白。此為預設值。

  • 若要使用客戶受管金鑰來加密組建輸出成品,請在加密金鑰中,輸入KMS金鑰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 日誌、Amazon S3 日誌或兩者。

CloudWatch

如果你想要 Amazon CloudWatch 日誌日誌:

CloudWatch 日誌

選取CloudWatch 記錄檔

Group name (群組名稱)

輸入您的 Amazon CloudWatch 日誌日誌群組的名稱。

串流名稱

輸入您的 Amazon CloudWatch 日誌日誌流名稱。

S3

如果你想要 Amazon S3 日誌:

S3 日誌

選取 S3 logs (S3 日誌)

儲存貯體

選擇日誌的 S3 儲存貯體名稱。

路徑前綴

輸入記錄檔的前置詞。

停用 S3 日誌加密

如果您不想要加密 S3 日誌,請選取此選項。

建立建置專案 (AWS CLI)

如需有關使用 AWS CLI 與的詳細資訊 CodeBuild,請參閱命令列參考

若要使用 CodeBuild 建立組建專案 AWS CLI,您可以建立JSON格式化的專案結構、填入結構,然後呼叫指create-project令來建立專案。

建立檔JSON案

使用以下選項,使用create-project指令建立骨架JSON檔--generate-cli-skeleton案:

aws codebuild create-project --generate-cli-skeleton > <json-file>

這將創建一個JSON具有由指定的路徑和文件名的文件 <json-file>.

填寫檔JSON案

如下所示修改JSON資料並儲存結果。

{ "name": "<project-name>", "description": "<description>", "source": { "type": "CODECOMMIT" | "CODEPIPELINE" | "GITHUB" | "GITHUB_ENTERPRISE" | "GITLAB" | "GITLAB_SELF_MANAGED" | "BITBUCKET" | "S3" | "NO_SOURCE", "location": "<source-location>", "gitCloneDepth": "<git-clone-depth>", "buildspec": "<buildspec>", "InsecureSsl": "<insecure-ssl>", "reportBuildStatus": "<report-build-status>", "buildStatusConfig": { "context": "<context>", "targetUrl": "<target-url>" }, "gitSubmodulesConfig": { "fetchSubmodules": "<fetch-submodules>" }, "auth": { "type": "<auth-type>", "resource": "<auth-resource>" }, "sourceIdentifier": "<source-identifier>" }, "secondarySources": [ { "type": "CODECOMMIT" | "CODEPIPELINE" | "GITHUB" | "GITHUB_ENTERPRISE" | "GITLAB" | "GITLAB_SELF_MANAGED" | "BITBUCKET" | "S3" | "NO_SOURCE", "location": "<source-location>", "gitCloneDepth": "<git-clone-depth>", "buildspec": "<buildspec>", "InsecureSsl": "<insecure-ssl>", "reportBuildStatus": "<report-build-status>", "auth": { "type": "<auth-type>", "resource": "<auth-resource>" }, "sourceIdentifier": "<source-identifier>" } ], "secondarySourceVersions": [ { "sourceIdentifier": "<secondary-source-identifier>", "sourceVersion": "<secondary-source-version>" } ], "sourceVersion": "<source-version>", "artifacts": { "type": "CODEPIPELINE" | "S3" | "NO_ARTIFACTS", "location": "<artifacts-location>", "path": "<artifacts-path>", "namespaceType": "<artifacts-namespacetype>", "name": "<artifacts-name>", "overrideArtifactName": "<override-artifact-name>", "packaging": "<artifacts-packaging>" }, "secondaryArtifacts": [ { "type": "CODEPIPELINE" | "S3" | "NO_ARTIFACTS", "location": "<secondary-artifact-location>", "path": "<secondary-artifact-path>", "namespaceType": "<secondary-artifact-namespaceType>", "name": "<secondary-artifact-name>", "packaging": "<secondary-artifact-packaging>", "artifactIdentifier": "<secondary-artifact-identifier>" } ], "cache": { "type": "<cache-type>", "location": "<cache-location>", "mode": [ "<cache-mode>" ] }, "environment": { "type": "LINUX_CONTAINER" | "LINUX_GPU_CONTAINER" | "ARM_CONTAINER" | "WINDOWS_SERVER_2019_CONTAINER" | "WINDOWS_SERVER_2022_CONTAINER", "image": "<image>", "computeType": "BUILD_GENERAL1_SMALL" | "BUILD_GENERAL1_MEDIUM" | "BUILD_GENERAL1_LARGE" | "BUILD_GENERAL1_2XLARGE", "certificate": "<certificate>", "environmentVariables": [ { "name": "<environmentVariable-name>", "value": "<environmentVariable-value>", "type": "<environmentVariable-type>" } ], "registryCredential": [ { "credential": "<credential-arn-or-name>", "credentialProvider": "<credential-provider>" } ], "imagePullCredentialsType": "CODEBUILD" | "SERVICE_ROLE", "privilegedMode": "<privileged-mode>" }, "serviceRole": "<service-role>", "timeoutInMinutes": <timeout>, "queuedTimeoutInMinutes": <queued-timeout>, "encryptionKey": "<encryption-key>", "tags": [ { "key": "<tag-key>", "value": "<tag-value>" } ], "vpcConfig": { "securityGroupIds": [ "<security-group-id>" ], "subnets": [ "<subnet-id>" ], "vpcId": "<vpc-id>" }, "badgeEnabled": "<badge-enabled>", "logsConfig": { "cloudWatchLogs": { "status": "<cloudwatch-logs-status>", "groupName": "<group-name>", "streamName": "<stream-name>" }, "s3Logs": { "status": "<s3-logs-status>", "location": "<s3-logs-location>", "encryptionDisabled": "<s3-logs-encryption-disabled>" } }, "fileSystemLocations": [ { "type": "EFS", "location": "<EFS-DNS-name-1>:/<directory-path>", "mountPoint": "<mount-point>", "identifier": "<efs-identifier>", "mountOptions": "<efs-mount-options>" } ], "buildBatchConfig": { "serviceRole": "<batch-service-role>", "combineArtifacts": <combine-artifacts>, "restrictions": { "maximumBuildsAllowed": <max-builds>, "computeTypesAllowed": [ "<compute-type>" ] }, "timeoutInMins": <batch-timeout>, "batchReportMode": "REPORT_AGGREGATED_BATCH" | "REPORT_INDIVIDUAL_BUILDS" }, "concurrentBuildLimit": <concurrent-build-limit> }

取代以下項目:

name

必要。此建置專案的名稱。此名稱在您 AWS 帳戶中的所有建置專案中必須是唯一的。

description

選用。此建置專案的描述。

source

必要。包含此組建專案原始程式碼設定相關資訊的ProjectSource物件。在您新增 source 物件之後,即可使用 secondarySources新增最多 12 個以上的來源。這些設定包含下列項目:

來源/類型

必要。包含要建置之來源碼的儲存庫類型。有效值包含:

  • CODECOMMIT

  • CODEPIPELINE

  • GITHUB

  • GITHUB_ENTERPRISE

  • GITLAB

  • GITLAB_SELF_MANAGED

  • BITBUCKET

  • S3

  • NO_SOURCE

若您使用 NO_SOURCE,則 Buildspec 不能是檔案,因為專案沒有任何來源。相反,您必須使用該buildspec屬性為構建規格指定一個YAML格式化的字符串。如需詳細資訊,請參閱創建一個沒有源代碼的構建項目

來源/位置

除非您設定,否則需 <source-type>CODEPIPELINE。所指定儲存庫類型的來源碼位置。

  • 對於 CodeCommit,HTTPS克隆URL到包含源代碼和 buildspec 文件的存儲庫(例如,https://git-codecommit.<region-id>.amazonaws.com/v1/repos/<repo-name>)。

  • 對於 Amazon S3,建置輸入儲存貯體名稱,後面接著包含原始程式碼和建置規格之ZIP檔案的路徑和名稱。例如:

    • 對於位於輸入值區根目錄的ZIP檔案:<bucket-name>/<object-name>.zip

    • 對於位於輸入值區中子資料夾中的ZIP檔案:<bucket-name>/<subfoler-path>/<object-name>.zip

  • 對於 GitHub,HTTPS克隆URL到包含源代碼和 buildspec 文件的存儲庫。必URL須包含網站。您必須將 AWS 帳戶連接到您的 GitHub 帳戶。若要這麼做,請使用 CodeBuild 主控台建立建置專案。

    • 選擇 Authorize application (授權應用程式)。(在您連線到您的 GitHub 帳戶之後,您不需要完成建置專案的建立作業。 您可以關閉主 CodeBuild 控台。)

  • 對於 GitHub 企業服務器,HTTP或HTTPS克隆URL到包含源代碼和 buildspec 文件的存儲庫。您也必須將您的 AWS 帳戶連線到您的 GitHub企業伺服器帳戶。若要這麼做,請使用 CodeBuild 主控台建立建置專案。

    1. 在 GitHub 企業伺服器中建立個人存取權杖。

    2. 將此令牌複製到剪貼板,以便在創建 CodeBuild 項目時可以使用它。如需詳細資訊,請參閱 GitHub 說明網站上的命令列建立個人存取權杖。

    3. 當您使用主控台建立 CodeBuild 專案時,請在 [源] 中,針對 [來源提供者] 選擇 [GitHub企業]。

    4. 針對 Personal Access Token (個人存取字符),貼上已複製至剪貼簿的字符。選擇 Save Token (儲存字符)。您的 CodeBuild 帳戶現在已連接到您的 GitHub 企業伺服器帳戶。

  • 對於 GitLab 和 GitLab 自我管理,HTTPS克隆URL到包含源代碼和 buildspec 文件的存儲庫。請注意,如果您使用 GitLab,則URL必須包含 gitlab.com。如果您使用 GitLab 自我管理,則URL不需要包含 gitlab.com。您必須將您的 AWS 帳戶連接到您的帳戶 GitLab或 GitLab 自我管理帳戶。若要這麼做,請使用 CodeBuild主控台建立建置專案。

    • 在開發人員工具導航窗格中,選擇設置接,然後創建連接。在此頁面上,建立 GitLab 或 GitLab 自我管理的連線,然後選擇 [Connect 線至 GitLab]。

  • 對於 Bitbucket,HTTPS克隆URL到包含源代碼和構建規格文件的存儲庫。URL必須包含比特伯克 .org。您還必須將您的 AWS 帳戶連接到您的 Bitbucket 帳戶。若要這麼做,請使用 CodeBuild 主控台建立建置專案。

    1. 當您使用主控台連線 (或重新連線) Bitbucket 時,請在 Bitbucket 的 Confirm access to your account (確認帳戶存取) 頁面上,選擇 Grant access (授予存取權)。(在您連接到您的 Bitbucket 帳戶之後,您不需要完成構建項目的創建。 您可以關閉主 CodeBuild 控台。)

  • 對於 AWS CodePipeline,請勿指定的locationsource。 CodePipeline 會忽略此值,因為當您在中建立管線時 CodePipeline,會在管線的「來源」階段中指定原始程式碼位置。

來源/gitCloneDepth

選用。要下載的歷史記錄深度。最小值為 0。如果此值為 0、大於 25 或未提供,則會下載每個建置專案的完整歷史記錄。如果您的來源類型是 Amazon S3,則不支援此值。

來源/構建規格

選用。要使用的組建規格定義或檔案。如果此值未提供,或設定為空字串,則來源碼必須包含其根目錄中的 buildspec.yml 檔案。如果設定此值,它可以是內嵌 buildspec 定義、相對於主要來源根目錄的替代 buildspec 檔案路徑,或 S3 儲存貯體的路徑。值區必須與建置專案位於相同的 AWS 區域。使用它來指定建置規格檔案 ARN (例如,arn:aws:s3:::<my-codebuild-sample2>/buildspec.yml)。如需詳細資訊,請參閱Buildspec 檔案名稱和儲存位置

來源/驗證

包含存取 CodeBuild 要建置之原始程式碼之授權設定的相關資訊。

來源/驗證/類型

必要。要使用的授權類型。有效的 值如下:

  • OAUTH

  • CODECONNECTIONS

  • SECRETS_MANAGER

來源/驗證/資源

選用。套用至指定授權類型的資源值。這可以是 Secrets Manager ARN 或 CodeConnections ARN.

來源/reportBuildStatus

指定是否將建置的啟動和完成狀態傳送給來源提供者。如果您使用 GitHub 企業伺服器或 Bitbucket 以外 GitHub的來源提供者進行設定,則會擲回一invalidInputException個。

若要能夠向來源提供者報告組建狀態,與來源提供者關聯的使用者必須具有存放庫的寫入存取權。如果使用者沒有寫入權限,則無法更新組建狀態。如需詳細資訊,請參閱來源提供者存取

來源/buildStatusConfig

包含定義 CodeBuild 組建專案如何向來源提供者報告組建狀態的資訊。此選項僅在來源類型為GITHUBGITHUB_ENTERPRISE、或時使用BITBUCKET

來源//buildStatusConfig上下文

對於 Bitbucket 來源,此參數會用於 Bitbucket 認可狀態中的name參數。對於 GitHub 來源,此參數會用於提 GitHub 交狀態中的context參數。

例如,您可以使用 CodeBuild環境變量來context包含內部版本號和 webhook 觸發器:

AWS CodeBuild sample-project Build #$CODEBUILD_BUILD_NUMBER - $CODEBUILD_WEBHOOK_TRIGGER

這會導致由 webhook 提取請求事件觸發的構建 #24 的上下文如下所示:

AWS CodeBuild sample-project Build #24 - pr/8
來源//buildStatusConfigtargetUrl

對於 Bitbucket 來源,此參數會用於 Bitbucket 認可狀態中的url參數。對於 GitHub 來源,此參數會用於提 GitHub 交狀態中的target_url參數。

例如,您可以設置targetUrlhttps://aws.amazon.com/codebuild/<path to build>,提交狀態將鏈接到此URL。

您也可以在中包含 CodeBuild 環境變數,targetUrl以將其他資訊新增至URL。例如,若要將建置區域新增至URL,請將設定targetUrl為:

"targetUrl": "https://aws.amazon.com/codebuild/<path to build>?region=$AWS_REGION"

如果構建區域是us-east-2,這將擴展到:

https://aws.amazon.com/codebuild/<path to build>?region=us-east-2
來源/gitSubmodulesConfig

選用。Git 子模組組態的相關資訊。僅與 CodeCommit、 GitHub、 GitHub 企業伺服器和 Bitbucket 搭配使用。

來源//gitSubmodulesConfigfetchSubmodules

如果您想要將 Git 子模組包含在您的儲存庫中,請將 fetchSubmodules 設定為 true。包含的 Git 子模塊必須配置為HTTPS.

來源/InsecureSsl

選用。僅適用於 GitHub 企業伺服器。將此值設定為可在連線true至 GitHub 企業伺服器專案存放庫時忽略TLS警告。預設值為 falseInsecureSsl 應僅用於測試目的。不應用於生產環境。

來源/sourceIdentifier

專案來源的使用者定義識別碼。主要來源的選用項目。次要來源需要。

secondarySources

選用。ProjectSource物件陣列,其中包含組建專案之次要來源的相關資訊。您最多可以新增 12 個次要來源。secondarySources物件使用物件所使用的source相同性質。在次要來源物件中,sourceIdentifier是必要的。

secondarySourceVersions

選用。ProjectSourceVersion 物件的陣列。如果在組建層級指定 secondarySourceVersions,則其優先順序會高於此。

sourceVersion

選用。要為此專案建置的組建輸入版本。如果未指定,則會使用最新的版本。如果指定,則必須是以下其中一個:

  • 對於 CodeCommit,要使用的提交 ID、分支或 Git 標籤。

  • 針 GitHub對您要建置的原始程式碼版本對應的提交 ID、提取要求 ID、分支名稱或標籤名稱。如果指定提取請求 ID,其格式必須為 pr/pull-request-ID (例如,pr/25)。如果指定了分支名稱,則使用分支的HEAD提交 ID。如果未指定,則使用默認分支的HEAD提交 ID。

  • 對於 GitLab,提交 ID,提取請求 ID,分支名稱,標籤名稱或引用和提交 ID。如需詳細資訊,請參閱原始碼版本範例 AWS CodeBuild

  • 針對 Bitbucket,為遞交 ID、分支名稱,或與您想要建置之來源碼版本對應的標籤名稱。如果指定了分支名稱,則使用分支的HEAD提交 ID。如果未指定,則使用默認分支的HEAD提交 ID。

  • 對於 Amazon S3,代表要使用之組建輸入ZIP檔案之物件的版本識別碼。

如果在組建層級指定 sourceVersion,則該版本的優先順序會高於此 sourceVersion (在專案層級)。如需詳細資訊,請參閱原始碼版本範例 AWS CodeBuild

文物

必要。包含此組建專案輸出成品設定相關資訊的ProjectArtifacts物件。在您新增 artifacts 物件之後,即可使用 secondaryArtifacts新增最多 12 個以上的成品。這些設定包含下列項目:

人工/類型

必要。建置輸出成品類型。有效的 值如下:

  • CODEPIPELINE

  • NO_ARTIFACTS

  • S3

人工/位置

僅與S3人工因素類型搭配使用。不適用於其他人工因素類型。

您在先決條件中建立或識別的輸出值區的名稱。

人工/路徑

僅與S3人工因素類型搭配使用。不適用於其他人工因素類型。

要放置ZIP檔案或資料夾的輸出值區中的路徑。如果您沒有為指定值path,則 CodeBuild 會使用 namespaceType (如果指定) 並決name定組建輸出ZIP檔案或資料夾的路徑和名稱。例如,如果您指定MyPathMyArtifact.zippathname,路徑和名稱將為MyPath/MyArtifact.zip

人工藝品/namespaceType

僅與S3人工因素類型搭配使用。不適用於其他人工因素類型。

組建輸出ZIP檔案或資料夾的命名空間。有效值包括 BUILD_IDNONE。用BUILD_ID於將組建 ID 插入組建輸出ZIP檔案或資料夾的路徑。否則,請使用 NONE。如果您沒有為指定值namespaceType,則 CodeBuild 會使用 path (如果指定) 並決name定組建輸出ZIP檔案或資料夾的路徑和名稱。例如,如果您指定MyPathpathnamespaceTypeBUILD_IDMyArtifact.zip於和 ofname,則路徑和名稱將為MyPath/build-ID/MyArtifact.zip

artifacts/name

僅與S3人工因素類型搭配使用。不適用於其他人工因素類型。

構建輸出ZIP文件或其中文件夾的名稱location。例如,如果您指定MyPathMyArtifact.zippathname,路徑和名稱將為MyPath/MyArtifact.zip

人工藝品/overrideArtifactName

僅與 S3 成品類型搭配使用。不適用於其他人工因素類型。

選用。如果設定為true,在 buildspec 檔案的artifacts區塊中指定的名稱會覆寫。name如需詳細資訊,請參閱建立的規格參考 CodeBuild

工藝/包裝

僅與S3人工因素類型搭配使用。不適用於其他人工因素類型。

選用。指定如何封裝成品。允許的值為:

NONE

建立包含組建加工品的資料夾。這是預設值。

ZIP

建立包含組建加工品的ZIP檔案。

secondaryArtifacts

選用。ProjectArtifacts物件陣列,其中包含組建專案之次要加工品設定的相關資訊。您可以新增最多 12 個次要成品。secondaryArtifacts 使用 文物 物件所使用的許多相同設定。

快取

必要。包含有關此構建項目緩存設置信息的ProjectCache對象。如需詳細資訊,請參閱快取建置

環境

必要。包含此專案之建置環境設定相關資訊的ProjectEnvironment物件。這些設定包括:

環境/類型

必要。建置環境類型。如需詳細資訊,請參閱「CodeBuild API參考」中的輸入

環境/影像

必要。此建置環境所使用的 Docker 影像識別符。通常,此標識符表示為 image-name:tag。 例如,在 CodeBuild 用來管理其 Docker 映像檔的 Docker 儲存庫中,這可能是. aws/codebuild/standard:5.0 在 Docker Hub 中,為 maven:3.3.9-jdk-8。在 AmazonECR,account-id.dkr.ecr.region-id.amazonaws.com/your-Amazon-ECR-repo-name:tag. 如需詳細資訊,請參閱碼頭圖片提供 CodeBuild

環境/computeType

必要。指定此建置環境使用的計算資源。如需詳細資訊,請參閱〈CodeBuild API參考computeType中的〈〉。

環境/證書

選用。包含已PEM編碼憑證ARN的 Amazon S3 儲存貯體、路徑前置詞和物件金鑰。物件金鑰可以只是 .pem 檔案,也可以是包含編碼憑證的 .zip 檔案。PEM例如,如果您的 Amazon S3 儲存貯體名稱是<my-bucket>,您的路徑前綴為<cert>,而您的物件金鑰名稱為 <certificate.pem>certificate,則可接受的 is <my-bucket/cert/certificate.pem> 或格式arn:aws:s3:::<my-bucket/cert/certificate.pem>

環境/environmentVariables

選用。EnvironmentVariable物件陣列,其中包含您要為此建置環境指定的環境變數。每個環境變數都以包含、和namevalue、和typename物件來表示typevalue

控制台和 AWS CLI 用戶可以看到所有環境變量。如果您對環境變數的可見性沒有任何疑慮value,請將和設定typePLAINTEXTname

我們建議您將具有敏感值的環境變數 (例如 AWS 存取金鑰 ID、 AWS 秘密存取金鑰或密碼) 存放在 Amazon EC2 Systems Manager 參數存放區或 AWS Secrets Manager。對於name,針對該儲存的參數,設定 CodeBuild 要參照的識別元。

如果您使用 Amazon EC2 Systems Manager 參數存放區value,則將參數名稱設定為存放在參數存放區中。將 type 設定為 PARAMETER_STORE。使用名/CodeBuild/dockerLoginPassword為範例的參數,name將設定為LOGIN_PASSWORD。將 value 設定為 /CodeBuild/dockerLoginPassword。將 type 設定為 PARAMETER_STORE

重要

如果您使用 Amazon EC2 Systems Manager 參數存放區,建議您使用開頭的參數名稱來存放參數 /CodeBuild/ (例如,/CodeBuild/dockerLoginPassword)。您可以使用 CodeBuild 主控台在 Amazon EC2 Systems Manager 中建立參數。選擇 Create parameter (建立參數),然後遵循對話方塊中的說明。(在該對話框中,對於 KMSkey,您可以指ARN定帳戶中的 AWS KMS 密鑰。 Amazon EC2 Systems Manager 使用此金鑰在儲存期間加密參數的值,並在擷取期間將其解密。) 如果您使用 CodeBuild 主控台建立參數,則主控台會在儲存參數名稱時以其開始。/CodeBuild/如需詳細資訊,請參閱 Amazon Systems Manager 使用指南中的 Systems Manager 參數存放區和 EC2 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 Managervalue,則設定參數名稱儲存在 Secrets Manager 中。將 type 設定為 SECRETS_MANAGER。使用名/CodeBuild/dockerLoginPassword為的密碼作為範例,name將設定為LOGIN_PASSWORD。將 value 設定為 /CodeBuild/dockerLoginPassword。將 type 設定為 SECRETS_MANAGER

重要

如果您使用「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/命名空間下所有密碼的權限。

環境/registryCredential

選用。指RegistryCredential定提供私人 Docker 登錄存取權之認證的物件。

環境//憑證 registryCredential

指定使用建立之認證的ARN或名稱 AWS Managed Services。您只能在登入資料存在於您目前區域時才能使用其名稱

環境/registryCredentialcredentialProvider

唯一有效的值為 SECRETS_MANAGER

當此值設為:

  • imagePullCredentials 必須設定為 SERVICE_ROLE

  • 該圖像不能是精選圖像或 Amazon ECR 圖像。

環境/類型 imagePullCredentials

選用。認證類型 CodeBuild 用來提取組建中的映像檔。兩種有效值如下:

CODEBUILD

CODEBUILD指定使 CodeBuild 用自己的認證。您必須編輯 Amazon ECR 儲存庫政策以信任 CodeBuild 服務主體。

SERVICE_ROLE

指定使 CodeBuild 用組建專案的服務角色。

當您使用跨帳戶或私有登錄影像,您必須使用 SERVICE_ROLE 登入資料。使用 CodeBuild 策劃映像時,必須使用CODEBUILD認證。

環境/privilegedMode

true僅當您打算使用此構建項目構建 Docker 映像時才設置為。否則,所有嘗試與 Docker 協助程式互動的相關建置都會失敗。您也必須啟動 Docker 協助程式,以讓您的建置與其互動。執行這項操作的一種方式是執行下列建置命令,以在 buildspec 檔案的 install 階段中初始化 Docker 協助程式。如果您指定了由 Docker 支援提供的建置環境映像檔,請勿執 CodeBuild 行這些命令。

注意

默認情況下,Docker 守護進程為非VPC構建啟用。如果您想使用 Docker 容器進行VPC構建,請參閱 Docker 文檔網站上的運行時特權和 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"

serviceRole

必要。服務角色 CodeBuild 用來代表使用者與服務互動 (例如,arn:aws:iam::account-id:role/role-name)。ARN

timeoutInMinutes

選用。5 到 2160(36 小時)之間的分鐘數,如果構建未完成,則 CodeBuild停止構建。如果未指定,則會使用預設值 60。若要判斷是否因逾時而 CodeBuild 停止組建,以及何時停止組建,請執行batch-get-builds命令。若要判斷是否已停止建置,請查看 buildStatusFAILED 的輸出。若要判斷組建何時逾時,請查看與 phaseStatusTIMED_OUT 建立關聯之 endTime 值的輸出。

queuedTimeoutIn分鐘

選用。5 到 480 (8 小時) 之間的分鐘數,如果建置仍處於佇列狀態,則 CodeBuild會停止建置。如果未指定,則會使用預設值 60。

encryptionKey

選用。 AWS KMS key 用 CodeBuild 來加密組建輸出ARN的別名或。如果您指定別名,則請使用 arn:aws:kms:region-ID:account-ID:key/key-ID 格式,或者,如果別名已存在,則請使用 alias/key-alias 格式。如果未指定,則會使用 Amazon S3 的 AWS受管KMS金鑰。

標籤

選用。Tag 物件陣列,提供您想要與此建置專案相關聯的標籤。您可以指定最多 50 個標籤。任何支援 CodeBuild 建置專案標籤的 AWS 服務都可以使用這些標記。每個標籤都以帶有key和的物件表示value

vpcConfig

選用。包VpcConfig含專案VPC組態相關資訊的物件。如需詳細資訊,請參閱搭 AWS CodeBuild 配 Amazon Virtual Private Cloud 使用

這些屬性包括:

vpcId

必要。 CodeBuild 使用的VPC識別碼。執行此指令以取得您所在地區VPCIDs的所有項目清單:

aws ec2 describe-vpcs --region <region-ID>
子網路

必要。子網路陣列,其中包IDs含使用的資源 CodeBuild。運行此命令以獲取這些IDs:

aws ec2 describe-subnets --filters "Name=vpc-id,Values=<vpc-id>" --region <region-ID>
securityGroupIds

必要。安全群組的陣列,IDs用 CodeBuild 於允許存取中的資源VPC。運行此命令以獲取這些IDs:

aws ec2 describe-security-groups --filters "Name=vpc-id,Values=<vpc-id>" --<region-ID>

badgeEnabled

選用。指定是否要在 CodeBuild 專案中包含組建徽章。設定為以啟true用組建徽章,或以false其他方式啟用。如需詳細資訊,請參閱建立徽章範例 CodeBuild

logsConfig

包含此組建記錄檔所在位置之相關資訊的LogsConfig物件。

logsConfig/cloudWatchLogs

包含將記錄檔推送至 CloudWatch 記錄檔的相關資訊的CloudWatchLogsConfig物件。

logsConfig/日誌

包含將日誌推送到 Amazon LogsConfigS3 的相關資訊的 S3 物件。

fileSystemLocations

選用。包含 Amazon 組EFS態相關資訊的ProjectFileSystemsLocation物件陣列。

buildBatchConfig

選用。buildBatchConfig物件是包含專案之批次建置組態資訊的ProjectBuildBatchConfig結構。

buildBatchConfig/serviceRole

批次建置專案的服務角色ARN。

buildBatchConfig/combineArtifacts

Boolean 值,指定是否要將批次組建的建置加工品合併至單一人工因素位置。

buildBatchConfig/限制/ maximumBuildsAllowed

允許的最大組建數。

buildBatchConfig/限制/ computeTypesAllowed

字串陣列,指定批次建置允許的運算類型。有關這些值,請參閱構建環境計算類型

buildBatchConfig/timeoutInMinutes

批次建置必須在中完成的時間上限 (以分鐘為單位)。

buildBatchConfig/batchReportMode

指定如何將建置狀態報告傳送至批次建置的來源提供者。有效值包含:

REPORT_AGGREGATED_BATCH

(預設) 將所有建置狀態彙總到單一狀態報告中。

REPORT_INDIVIDUAL_BUILDS

針對每個個別建置傳送單獨的狀態報告。

concurrentBuildLimit

此專案允許並行建置的最大數量。

只有當目前的建置數量小於或等於此限制時,才會啟動新的建置。如果目前的建置計數符合此限制,則會調節新的建置且不會執行。

建立專案

要創建項目,請再次運行create-project命令,傳遞您的JSON文件:

aws codebuild create-project --cli-input-json file://<json-file>

如果成功,Pro ject 物件的JSON表示會出現在主控台輸出中。如需此資料的範例,請參閱CreateProject 回應語法

除了建置專案名稱之外,您稍後可以變更任何建置專案設定。如需詳細資訊,請參閱變更建置專案的設定 (AWS CLI)

若要開始執行建置,請參閱執行建置 (AWS CLI)

如果您的原始程式碼儲存在儲存 GitHub 庫中,而且您想 CodeBuild 要在每次將程式碼變更推送至儲存庫時重建原始程式碼,請參閱自動開始執行建置 (AWS CLI)

建立建置專案 (AWS SDKs)

若要取得有關 AWS CodeBuild 與配合使用的資訊 AWS SDKs,請參閱AWS 開發套件和工具參考

建立建置專案 (AWS CloudFormation)

要取得有關 AWS CodeBuild 搭配使用的資訊 AWS CloudFormation,請參閱《使AWS CloudFormation 用指南》 CodeBuild中的〈〉的 AWS CloudFormation 樣板