461 字
2 分鐘
Azure DevOps 部署到 VM (3) - Secret
2023-03-23
無標籤

承上篇,我們講到如何自動化打包與部署,這次我們來說機敏的參數該如何處理,正常來說開發者是不會把機敏的token或key放在repo中的,這是非常危險的事情,就算刪掉了,也可以在git中找回來,因次各DevOps工具都會有存在這種參數的地方,Github的Actions secrets and variables、Gitlab的variables,而在Azure DevOps這功能叫做Library的Variable groups。Variable groups其他說明可以看微軟文件

本次先假設我們會需要用到mailgun的token,並把它放到.env這個檔案給專案用,那就開始吧!


建立Variable#

到專案中點選Pipelines > Library > Variable group

輸入group名稱,並在下面新增參數,如果不需要之後可以重新檢視參數內容,可以開啟旁邊的鎖頭,之後在網頁上就只能修改不能看。

這樣就建立完成了


撰寫azure-pipelines.yml#

我們拿上一篇的azure-pipelines.yml繼續改

trigger:
- main
pool:
vmImage: ubuntu-latest
stages:
- stage: Build
variables: #新增這行
- group: env #新增這行
jobs:
- job: build_npm
steps:
- task: NodeTool@0
inputs:
versionSpec: '10.x'
displayName: 'Install Node.js'
- script: echo "test" > test.html
- script: echo "mailgun_token=$(mailgun_token)" > .env #新增這行
- publish: $(System.DefaultWorkingDirectory)
artifact: afterbuild
- stage: Deploy
dependsOn: Build
condition: succeeded()
jobs:
- deployment: VMDeploy
displayName: Deploy to VM
environment:
name: Production
resourceType: virtualMachine
strategy:
runOnce:
deploy:
steps:
- download: current
artifact: afterbuild
- script: rsync -avh --cvs-exclude $(Pipeline.Workspace)/afterbuild/ /var/www/html第一次執行pipelines要點選讀取variable的授權

在stage中新增variables,並指定剛剛的group env,在script中就可以讀取參數。

等pipelines部署完成,到Server上看看有沒有部署成功


結語#

透過這方法就可以隱藏起來重要的參數,不要把token或密碼放在repo中,之後也可以直接在variable換參數。下一篇來講如何幫NGINX設定也加入DevOps。