在pipeline中使用 Replace tokens
啥是Replace tokens? 為何要在Pipeline中使用Replace tokens? Replace tokens是一個DevOps的Pipeline設計中,我相當常被問到的需求。客戶常常會問我:『 如何在Pipeline中,把檔案(程式碼)裡面的某些字換掉。 』 我第一次被這樣問的時候,覺得有點怪,客戶為何要這樣做? 後來發現,原來是因為,同仁把敏感的資料(例如帳號密碼、token、連線字串…etc.)寫在設定檔(其實也不好)或程式碼(萬萬不可)裏面,然後就這樣commit到repo中。 全世界都嘛知道,不應該在repo中存放正式機的連線字串帳密或正式token,所以一般來說,開發人員commit的程式碼中,是不會放正式帳密的。然而,我們的Pipeline採全自動化佈署,需要一口氣自動建置、佈署到正式機,那能不能在Pipeline中,安全地把這些位於程式碼或設定檔中的機密資料換掉,換成正式機的帳密呢? 當然可以。 使用的就是Replace tokens。 舉例來說,底下這個設定檔內容,原本JSON裡面放的是帳號密碼,或是token之類的機密資訊,你可以把它改成這樣: 以 #{…}# 框起來,裡面放 變數 的名稱。把這樣的設定檔commit/push到正式repo的主要分支。 接著,在Pipeline的build之前,使用Replace tokens這個task: 它可以將特定檔案中,具有#{…}# 框起來的文字,都換成Pipeline中的環境變數。 所以,別忘了你還要設定相對應名稱的環境變數,例如,我們為Pipeline設定底下這樣的變數: 如此一來,上面程式碼中的 #{token}# 就會被換掉: { "token": "#{token}#", //會被換掉 "tempNote": "#{tempNote}#" //會被換掉 } 在build之前,它就會被換成Pipeline中Variables中的值,然後才進行build的動作。 如此一來,就可以在設計Pipeline的時候,把正式機的帳密等機密資料,塞入build好的artifact中,填入正式環境之中。 這樣可以達到開發人員無需經手正式環境帳密的效果。 總的來說,R...