arrow_back

建立開發運作管道

登录 加入
访问 700 多个实验和课程

建立開發運作管道

实验 2 个小时 universal_currency_alt 5 积分 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
访问 700 多个实验和课程

總覽

在本實驗室中,您將運用 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. 請透過無痕式視窗登入 Qwiklabs。

  2. 請記下研究室的存取時間 (例如 1:15:00),並確保自己能在時間限制內完成作業。
    研究室不提供暫停功能。如有需要,您可以重新開始,但原先的進度恕無法保留。

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

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

  5. 按一下「Open Google Console」

  6. 按一下「Use another account」,然後複製這個研究室的憑證,並貼入提示訊息。
    如果使用其他憑證,系統會顯示錯誤或向您收取費用

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

工作 1:建立 Git 存放區

首先,用 GitHub 建立 Git 存放區。這個 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 容器的建構方式。您現在就要建立 Dockerfile。

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

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

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

這是基本映像檔。您可以選擇多個基本映像檔。在這個例子中,您可以使用已經安裝 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.9 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」(VM 執行個體)

  2. 點選「Create Instance」(建立執行個體) 來建立 VM。

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

屬性
「OS 和儲存空間」>「容器」 點按「部署容器」
容器映像檔 -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 Cloud Skills Boost 會移除您使用的資源,並清除所用帳戶。

您可以針對研究室的使用體驗評分。請選取合適的星級評等並提供意見,然後按一下「Submit」(提交)

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

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

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

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

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

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

请使用无痕模式或无痕式浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。