GitLab CI/CD課程34

Promote to Production (Multi-Stage Demo — Part 4)

ZONGRU Li
Aug 21, 2022

Promote to Production

同上一篇,接著建立佈署PRODJob

並且安排在佈署完staging後多一個測試performanceJob

同樣若是performance測試失敗則不進行PROD的佈署

Configure manual approval

在一般情況下,正式環境的佈署通常不會是全自動的

通常是人為決定何時佈署,並在人員監視下進行

所以上面流程需要有一個手動的部分

安排在stagingperformance測試OK之後

只要加入以下設定:

when: manual設定

  • Job不會自己執行,而是會等待人啟動執行
  • 非常普遍的PROD佈署策略!

Workaround for GitLab Bug

前篇最後有發現在使用繼承的佈署方式後

繼承的佈署Job會拿不到SSHKEY:

這個是前面設定在GitLab Server上的變數檔案:

LINK

簡單解說就是當用檔案式的變數來設定另一個變數:

在用繼承的時候會變成檔案變數的內容給了上圖左邊的變數

而不是檔案路徑(但是記得ssh指令的-i給定指定SSHKEY是用檔案路徑)

所以上面chmod 400 後面可能是一堆加密key內容,而不是檔案絕對路徑

所以為了繞過這個BUG,要額外多出一些加工

首先先調整一下變數命名SSH_PRIVATE_KEY都改成SSH_KEY

然後利用Shell指令處理這段問題:

這時候還需要一些額外加工

因為ssh/scp在這情況下使用"-i"這個option指定KEY

仍然需要保持key檔的格式,會有很多的換行

但實際目前處理下以下講師的畫面:

需要調整回以下格式:

所以剛剛.deploy的這一段:

echo $SSH_KEY > deploy-key.pem#需要調整為頭尾換行外,中間每64個字元要自動加入換行符號
echo $SSH_KEY |sed -e "s/-----BEGIN RSA PRIVATE KEY-----/&\n/" -e "s/-----END RSA PRIVATE KEY-----/\n&/" -e "s/\S\{64\}/&\n/g"\ > deploy-key.pem
#當遇到開頭或是結尾的指定字串時,加入換行
#最後才是其他每64個字元後額外串接換行
#sed的相關語法參考(
LINK)

變成超長:

最後執行看看:

停在dev的佈署

如上小圖中我事後把dev的手動關掉

重跑後:

可以簡單地看看前面Job跑的結果報告等等或是直接看看網頁:

確認沒問題後直接點:

因為我們只有一個Job,點哪個都一樣

按下去後開始執行:

最後成功後記得防火牆也調整一下就可以瀏覽到5000 PORT的結果:

此時完整的pipeline如下:

記得改上面宣告的IP位置與DNS位置才能用!

參考課程(reference)

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet