利用 Gitlab CI/CD 部署專案到 GCP VM
Published in
Jun 21, 2019
Click here for English version
我的部落格
前言
本篇將分享如下:
- 利用
gcloud
開立一台 GCPinstance
- 如何利用
gcloud
在instance
上匯入ssh key
- 利用
Daemon
使服務常駐 - 利用
gitlab pusher
部署專案到GCP virtual machine
上
環境建立
開啟一台 GCP
虛擬機
以下是個人做法,不需要照做
- Ray 使用
Mac
所以我在本地端安裝了 Google Cloud SDK, 安裝方式可以參考官方文件 - 建立一台 VM
- 建立一台機器, 叫做 example-instance-1
- 開機碟的空間為 10GB
- 從
ubuntu-os-cloud
, 來 pull 我們需要的image
- 我們使用
ubuntu-1804-lts
的image
版本, 這會自動使用這個版本的最新版 - 硬碟類型為
pd-stand
, 不知道類型可以跑gcloud compute disk-types list
來看看 - 機器型號為
f1-micro
, 不知道類型可以跑gcloud compute machine-types list
來看看 tags
用來當作該 instance 的一個識別,等等開防火牆的時候會用到zone
指定該 instance 的地區, 有些資源只有相同zone
或者region
可以取用,要注意
如下:
開啟後,我們先來產 key
假設 key 的名稱為 example
在最前面加上 root
, 格式如下:
我們只有一把 key
獲得 instance
名稱
新增 public key
到 instance
(這邊請注意,這個指令會替換掉這個 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
時,就會觸發 gitlab
的 pusher
來達成自動部署。
Write Medium in Markdown? Try Markdium!