Lab setup instructions and requirements
Protect your account and progress. Always use a private browser window and lab credentials to run this lab.

建立開發運作管道

Lab 1 hour universal_currency_alt 5 Credits show_chart Introductory
info This lab may incorporate AI tools to support your learning.
This content is not yet optimized for mobile devices.
For the best experience, please visit us on a desktop computer using a link sent by email.

總覽

在本實驗室,您將運用 GitHub、Cloud Build、自動建構觸發條件和 Artifact Registry,建構持續整合管道。

持續整合管道架構

目標

在本實驗室,您將瞭解如何執行下列工作:

  • 在 GitHub 建立 Git 存放區
  • 建立簡易的 Python 應用程式
  • 在 Cloud Shell 測試網頁應用程式
  • 定義 Docker 建構作業
  • 運用 Cloud Build 和 Artifact Registry 管理 Docker 映像檔
  • 透過觸發條件自動執行建構作業
  • 測試建構作業要套用的調整

事前準備

如果您還沒有 GitHub 帳戶,必須先建立帳戶

建議

  1. 如果有 GitHub 帳戶,可以直接使用。GitHub 比較可能將新帳戶視為垃圾內容帳戶並封鎖。
  2. 設定雙重驗證的 GitHub 帳戶,較不容易被當成垃圾內容帳戶。

設定實驗室環境

每個實驗室都會提供新的 Google Cloud 專案和一組資源,讓您在時限內免費使用。

  1. 請透過無痕視窗登入 Google Skills。

  2. 注意實驗室時間限制 (例如 1:15:00),並確實在該時限內完成相關工作。實驗室無法暫停。您可以重新開始,但原有進度不會保留。

  3. 準備就緒後,請按一下「Start lab」

  4. 請記下研究室憑證 (使用者名稱密碼),這組資訊將用於登入 Google Cloud 控制台。

  5. 點選「Open Google Console」

  6. 點選「Use another account」,然後複製本實驗室的憑證,並貼到提示訊息中。 如果使用其他憑證,會出現錯誤訊息或產生費用

  7. 接受條款,然後略過資源復原頁面。

工作 1:建立 Git 存放區

首先,在 GitHub 建立 Git 存放區,用於儲存原始碼。最後,您需要建立自動建構觸發條件,在程式碼推送到存放區時,啟動持續整合管道。

  1. 點選「Cloud 控制台」,然後在新分頁點按「啟用 Cloud Shell」圖示 「Cloud Shell」圖示
  2. 如果出現提示訊息,請點選「繼續」
  3. 執行下列指令,安裝 GitHub CLI
curl -sS https://webi.sh/gh | sh
  1. 登入 GitHub CLI
gh auth login

按下 Enter 鍵接受預設選項。按照 CLI 工具中的指示操作,登入 GitHub 網站。

  1. 執行下列指令,確認您已登入:
gh api user -q ".login"

如已成功登入,輸出內容應為您的 GitHub 使用者名稱。

  1. 建立 GITHUB_USERNAME 變數
GITHUB_USERNAME=$(gh api user -q ".login")
  1. 執行下列指令,確認已建立環境變數:
echo ${GITHUB_USERNAME}

如已成功建立變數,輸出內容應為您的 GitHub 使用者名稱。

  1. 設定全域 git 憑證:
git config --global user.name "${GITHUB_USERNAME}" git config --global user.email "${USER_EMAIL}"

這項指令會為您的 Cloud Shell 終端機建立 git 使用者。

  1. 建立空的 GitHub 存放區,並命名為 devops-repo
gh repo create devops-repo --private
  1. 在 Cloud Shell 輸入下列指令來建立資料夾,並命名為 gcp-course
mkdir gcp-course
  1. 切換到剛建立的資料夾:
cd gcp-course
  1. 複製剛建立的空存放區。如果出現提示訊息,請點選「授權」
gh repo clone devops-repo 注意:系統可能會警告您複製了空的存放區。這是正常的,不必理會。
  1. 前一個指令建立了空的 devops-repo 資料夾,請切換到該資料夾:
cd devops-repo

工作 2:建立簡易的 Python 應用程式

接著,我們會用原始碼來管理,因此請建立簡易的 Python Flask 網頁應用程式。這個應用程式的功能只會稍微優於「Hello World」,但足以用來測試您將建立的管道。

  1. 在 Cloud Shell 點按「開啟編輯器」(編輯器圖示),即可開啟程式碼編輯器。
  2. 在左側的探索工具樹狀結構,依序選取「gcp-course」>「devops-repo」資料夾。
  3. 點按「devops-repo」
  4. 點選「New File」
  5. 將檔案命名為 main.py,並按下 Enter 鍵。
  6. 將下列程式碼貼到剛建立的檔案內:
from flask import Flask, render_template, request app = Flask(__name__) @app.route("/") def main(): model = {"title": "Hello DevOps Fans."} return render_template('index.html', model=model) if __name__ == "__main__": app.run(host='0.0.0.0', port=8080, debug=True, threaded=True)
  1. 按下 Ctrl+S 鍵來儲存變更。
  2. 點按「devops-repo」資料夾。
  3. 點選「New Folder」
  4. 將資料夾命名為 templates,並按下 Enter 鍵。
  5. templates 資料夾按一下滑鼠右鍵,建立新檔案,並命名為 layout.html
  6. 新增下列程式碼,並和先前一樣儲存檔案:
<!doctype html> <html lang="en"> <head> <title>{{model.title}}</title> <!-- Bootstrap CSS --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"> </head> <body> <div class="container"> {% block content %}{% endblock %} <footer></footer> </div> </body> </html>
  1. 此外,請在 templates 資料夾中新增另一個檔案,並命名為 index.html

  2. 新增下列程式碼,並和先前一樣儲存檔案:

{% extends "layout.html" %} {% block content %} <div class="jumbotron"> <div class="container"> <h1>{{model.title}}</h1> </div> </div> {% endblock %}
  1. 在 Python,應用程式必須使用 pip 管理。現在請新增一個檔案,列出應用程式的必要依附元件。

  2. devops-repo 資料夾 (而非 templates 資料夾) 建立新檔案,然後將下列指令新增至該檔案並儲存為 requirements.txt

Flask>=2.0.3
  1. 現在您有一些檔案,請將這些檔案儲存至存放區。首先,您需要將建立的所有檔案新增至本機 Git 存放區。點選「開啟終端機」,然後在 Cloud Shell 輸入下列程式碼:
cd ~/gcp-course/devops-repo git add --all
  1. 我們要將變更提交到存放區,因此需驗證身分。接著輸入下列指令,並填入您的資訊 (您可以直接使用 Gmail 地址或其他電子郵件地址):
git config --global user.email "you@example.com" git config --global user.name "Your Name"
  1. 現在,請將變更提交到本機:
git commit -a -m "Initial Commit"
  1. 您已將變更提交到本機,但尚未更新您在 Cloud Source Repositories 建立的 Git 存放區。請輸入下列指令,將變更推送至雲端:
git push origin main
  1. 重新整理 GitHub 網頁,您應該會看見剛建立的檔案。

工作 3:定義 Docker 建構作業

要使用 Docker,第一步就是建立 Dockerfile。這個檔案會定義 Docker 容器的建構方式,我們現在就來建立。

  1. 點選「開啟編輯器」,並展開「gcp-course/devops-repo」資料夾。接著選取「devops-repo」資料夾,點選「New File」,然後將新檔案命名為 Dockerfile

這個 Dockerfile 檔案會用來定義容器的建構方式。

  1. 在檔案頂端輸入下列程式碼:
FROM python:3.13

這是基本映像檔。您可以選擇多個基本映像檔。在這個例子中,您可以使用已安裝 Python 的映像檔。

  1. 輸入下列指令:
WORKDIR /app COPY . .

這些指令會從目前的資料夾,將原始碼複製到容器映像檔中的 /app 資料夾。

  1. 輸入下列指令:
RUN pip install gunicorn RUN pip install -r requirements.txt

這會使用 pip 將 Python 應用程式的必要依附元件安裝到容器。Gunicorn 是 Python 網路伺服器,可用來執行網頁應用程式。

  1. 輸入下列指令:
ENV PORT=80 CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 main:app

環境變數會設定要執行應用程式的通訊埠 (本示例的環境變數為 80)。最後一行指令則會指定網頁應用程式使用 Gunicorn 網路伺服器來執行。

  1. 完成的檔案應會如下所示。確認無誤後,請儲存檔案:
FROM python:3.13 WORKDIR /app COPY . . RUN pip install gunicorn RUN pip install -r requirements.txt ENV PORT=80 CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 main:app

工作 4:運用 Cloud Build 和 Artifact Registry 管理 Docker 映像檔

您必須建立並儲存 Docker 映像檔,過程中會使用 Cloud BuildArtifact Registry

  1. 點選「Open Terminal」返回 Cloud Shell,並確認所用的資料夾正確:
cd ~/gcp-course/devops-repo
  1. Cloud Shell 環境變數「DEVSHELL_PROJECT_ID」會自動儲存目前專案的 ID。如要將映像檔儲存至 Artifact Registry,就必須有專案 ID。輸入下列指令來查看專案 ID:
echo $DEVSHELL_PROJECT_ID
  1. 輸入下列指令,建立名為「devops-repo」的 Artifact Registry 存放區:
gcloud artifacts repositories create devops-repo \ --repository-format=docker \ --location={{{ project_0.default_region | "REGION" }}}
  1. 輸入下列指令,將 Docker 設為向 Artifact Registry Docker 存放區進行驗證:
gcloud auth configure-docker {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev
  1. 輸入下列指令,透過 Cloud Build 建立映像檔,並儲存至 Artifact Registry:
gcloud builds submit --tag {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/$DEVSHELL_PROJECT_ID/devops-repo/devops-image:v0.1 .

請留意指令中的環境變數,映像檔會儲存至 Artifact Registry。

  1. 前往 Google Cloud 控制台,在標題列的「搜尋」欄位輸入 Artifact Registry,然後點按搜尋結果中的「Artifact Registry」

  2. 點按「Artifact Registry」旁的「固定」圖示。

  3. 點選「devops-repo」

  4. 點按「devops-image」,畫面應該會列出映像檔。

  5. 前往 Google Cloud 控制台,在標題列的「搜尋」欄位輸入 Cloud Build,然後按一下搜尋結果中的「Cloud Build」

  6. 點按「Cloud Build」旁的「固定」圖示。

  7. 記錄中應會列出建構作業。

現在,請試著透過 Compute Engine 虛擬機器執行這個映像檔。

  1. 依序點選「Navigation menu」>「Compute Engine」>「VM Instance」

  2. 點按「Create Instance」來建立 VM。

  3. 在「建立執行個體」頁面指定下列項目,並保留其餘設定的預設值:

屬性
「作業系統和儲存空間」>「容器」 點按「部署容器」
容器映像檔 -docker.pkg.dev//devops-repo/devops-image:v0.1」,然後點按「選取」
「網路」>「防火牆」 允許 HTTP 流量
  1. 點選「建立」

  2. VM 啟動後,點按 VM 的外部 IP 位址。瀏覽器分頁會隨即開啟,並顯示 Hello DevOps Fans

注意:建立 VM 後,Docker 容器大約會在一分鐘後啟動。
  1. 現在請將變更儲存到 Git 存放區。在 Cloud Shell 輸入下列指令,確保您所用的資料夾正確,然後將新的 Dockerfile 新增到 Git:
cd ~/gcp-course/devops-repo git add --all
  1. 在本機修訂變更:
git commit -am "Added Docker Support"
  1. 將變更推送至 Cloud Source Repositories:
git push origin main

點選「Check my progress」,確認目標已達成。 運用 Cloud Build 和 Artifact Registry 管理 Docker 映像檔。

工作 5:透過觸發條件自動執行建構作業

  1. 點選導覽選單中的「Cloud Build」。「建構作業記錄」頁面應會開啟,且應列出一或多項建構作業。

  2. 按一下「權限」

  3. 從「服務帳戶」下拉式選單,選取「@.iam.gserviceaccount.com」

  4. 啟用「設為新觸發條件的預先選取服務帳戶」選項。將 Cloud Build 服務設為「已啟用」

  5. 前往左方導覽選單的「觸發條件」,,點選「建立觸發條件」

  6. 指定下列屬性:

    「名稱」:devops-trigger

    「區域」

    「存放區」:請點選「連結新的存放區」

    • 選取「連結存放區」窗格中的「GitHub」(Cloud Build GitHub 應用程式),並點按「繼續」。
    • 選取「{您的 GitHub 使用者名稱}/devops-repo」做為「存放區」,按一下「確定」並選取「{您的 GitHub 使用者名稱}/devops-repo」(GitHub 應用程式)。
    • 接受條款及細則,並點按「連線」

    分支版本:.*(任何分支版本)

    設定類型:Cloud Build 設定檔 (yaml 或 json)

    位置:內嵌

  7. 點選「開啟編輯器」,將程式碼換成下方內容,並點選「完成」

steps: - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', '{{{project_0.default_region|REGION}}}-docker.pkg.dev/{{{project_0.project_id|Project ID}}}/devops-repo/devops-image:$COMMIT_SHA', '.'] images: - '{{{project_0.default_region|REGION}}}-docker.pkg.dev/{{{project_0.project_id|Project ID}}}/devops-repo/devops-image:$COMMIT_SHA' options: logging: CLOUD_LOGGING_ONLY
  1. 在「服務帳戶」選取以您的 project-id 開頭,類似「@.iam.gserviceaccount.com」的帳戶,然後點按「建立」

  2. 如要測試觸發條件,請依序點選「執行」和「執行觸發條件」

  3. 按一下「記錄」連結,您應該會看到建構作業正在執行。請等待建構作業完成,然後點選導向建構作業的連結來查看詳細資料。

  4. 向下捲動並查看記錄檔。這裡顯示的建構作業輸出內容,就是您在機器中執行作業時會看見的內容。

  5. 返回 Artifact Registry 服務,依序點選「devops-repo」>「devops-image」資料夾,當中應會顯示新的映像檔。

  6. 返回 Cloud Shell 程式碼編輯器。在 gcp-course/devops-repo 資料夾找出 main.py 檔案。

  7. 將 main() 函式的標題屬性變更為 "Hello Build Trigger.",如下所示:

@app.route("/") def main(): model = {"title": "Hello Build Trigger."} return render_template("index.html", model=model)
  1. 使用下列指令提交變更:
cd ~/gcp-course/devops-repo git commit -a -m "Testing Build Trigger"
  1. 輸入下列指令,將變更推送到 Cloud Source Repositories:
git push origin main
  1. 返回 Cloud 控制台和 Cloud Build 服務。您應該會看見另一項建構作業正在執行。

點選「Check my progress」,確認目標已達成。 透過觸發條件自動化處理建構作業。

工作 6:測試建構作業要套用的調整

  1. 建構作業結束後,點選該項作業來查看詳細資料。

  2. 點選「執行作業詳細資料」

  3. 點按「映像檔名稱」,系統會重新導向 Artifact Registry 的映像檔頁面。

  4. 在窗格頂端,點選映像檔名稱旁的「複製路徑」,後續步驟會用到這項資訊。格式應如下所示:

{{{project_0.default_region | Lab Region }}}-docker.pkg.dev/{{{project_0.project_id|Project ID}}}/devops-demo/devops-image@sha256:8aede81a8b6ba1a90d4d808f509d05ddbb1cee60a50ebcf0cee46e1df9a54810 Note: Do not use the image name located in Digest.
  1. 前往 Compute Engine 服務。如同先前操作的方式,請建立新的虛擬機器來測試映像檔。按一下「部署容器」,然後貼上剛複製的映像檔。

  2. 選取「允許 HTTP 流量」

  3. 建立虛擬機器後,請向 VM 在您瀏覽器中的外部 IP 位址發出要求,測試變更內容。系統應會顯示您設定的新訊息。

注意:建立 VM 後,Docker 容器會在幾分鐘內啟動。

點選「Check my progress」,確認目標已達成。 測試建構作業變更內容。

恭喜!

在本實驗室,您運用 GitHub、Cloud Build、自動建構觸發條件和 Artifact Registry,建構了持續整合管道。

關閉研究室

如果您已完成實驗室,請點選「End Lab」。Google Skills 會清除您使用的資源和帳戶。

您可以為實驗室的使用體驗評分。請選取合適的星級評等並提供意見,然後按一下「Submit」

星級評等代表您的滿意程度:

  • 1 星 = 非常不滿意
  • 2 星 = 不滿意
  • 3 星 = 普通
  • 4 星 = 滿意
  • 5 星 = 非常滿意

如果不想提供意見回饋,您可以直接關閉對話方塊。

如有任何想法、建議或指教,請透過「Support」分頁提交。

Copyright 2026 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。

Before you begin

  1. Labs create a Google Cloud project and resources for a fixed time
  2. Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
  3. On the top left of your screen, click Start lab to begin

Use private browsing

  1. Copy the provided Username and Password for the lab
  2. Click Open console in private mode

Sign in to the Console

  1. Sign in using your lab credentials. Using other credentials might cause errors or incur charges.
  2. Accept the terms, and skip the recovery resource page
  3. Don't click End lab unless you've finished the lab or want to restart it, as it will clear your work and remove the project

This content is not currently available

We will notify you via email when it becomes available

Great!

We will contact you via email if it becomes available

One lab at a time

Confirm to end all existing labs and start this one

Use private browsing to run the lab

Using an Incognito or private browser window is the best way to run this lab. This prevents any conflicts between your personal account and the Student account, which may cause extra charges incurred to your personal account.