利用 Gitlab CI/CD 部署專案到 GCP VM

Ray Lee | 李宗叡
Learn or Die
Published in
Jun 21, 2019
Photo by Pankaj Patel on Unsplash

Click here for English version

我的部落格

前言

本篇將分享如下:

  1. 利用 gcloud 開立一台 GCP instance
  2. 如何利用 gcloudinstance 上匯入 ssh key
  3. 利用 Daemon 使服務常駐
  4. 利用 gitlab pusher 部署專案到 GCP virtual machine

環境建立

開啟一台 GCP 虛擬機

以下是個人做法,不需要照做

  • Ray 使用 Mac 所以我在本地端安裝了 Google Cloud SDK, 安裝方式可以參考官方文件
  • 建立一台 VM
  1. 建立一台機器, 叫做 example-instance-1
  2. 開機碟的空間為 10GB
  3. ubuntu-os-cloud, 來 pull 我們需要的 image
  4. 我們使用 ubuntu-1804-ltsimage 版本, 這會自動使用這個版本的最新版
  5. 硬碟類型為 pd-stand, 不知道類型可以跑 gcloud compute disk-types list 來看看
  6. 機器型號為 f1-micro, 不知道類型可以跑 gcloud compute machine-types list 來看看
  7. tags 用來當作該 instance 的一個識別,等等開防火牆的時候會用到
  8. zone 指定該 instance 的地區, 有些資源只有相同 zone 或者 region 可以取用,要注意

如下:

開啟後,我們先來產 key

假設 key 的名稱為 example

在最前面加上 root, 格式如下:

我們只有一把 key

獲得 instance 名稱

新增 public keyinstance (這邊請注意,這個指令會替換掉這個 instance 在 GCP 的 SSH key, 換言之,這個檔案裡面沒有的 key 都會消失)

安裝

以下主要是安裝 nvm, node 版本v12.1.0, 以及 npm, 細節可以參考官方文件

Daemon

接下來, 以下為 Daemon 設定, 我們將使用 Daemon 來幫我們跑我們的服務,並且讓我們的服務在斷開的時候可以自動重啟

  • 若發現找不到 service 的話,那需要重新載入 daemon
  • 記得更改權限,讓 deamon 可以執行
  • 開啟自動重啟,當 VM 重啟時,服務會跟著重啟
  • Daemon 的名稱在此範例中,會設置的跟專案名稱一樣

CI/CD

Gitlab variables setting

  • 我們將使用 Gitlab 的 pusher 來做 CI/CD 的部分,所以這邊先建立一組 ssh key, 並且在 gitlab 中設定為 $SSH_PRIVATE_KEY

Gitlab yaml config file

下面我們會開始設定 Gitlab 的 pusher config yaml 檔案 在我們的專案中:

結論

到這邊,當我們 git push 到指定的 branch 時,就會觸發 gitlabpusher 來達成自動部署。

Write Medium in Markdown? Try Markdium!

--

--

Ray Lee | 李宗叡
Learn or Die

It's Ray. I do both backend and frontend, but more focus on backend. I like coding, and would like to see the whole picture of a product.