發表文章

目前顯示的是 10月, 2022的文章

在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...

LineBotSDK更新 - validating message objects

圖片
10/24 Line Messaging API有了一個更新: https://developers.line.biz/en/news/2022/?month=10&day=24&article=validate-message-objects-api 主要內容是,提供了一組新的endpoint,來驗證你想發送的訊息,看看你組出的JSON訊息格式是否正確。 其實這對使用我們的 LineBotSDK的開發人員來說,不算是常會用到的功能,因為如果你用我們的 LineBotSDK,大可透過 message object 來建立要發送的訊息物件,不需要自己組JSON。 但,萬一你有自己組JSON的需求,或是需要透過 PushMessageWithJSON 或 ReplyMessageWithJSON 這類 method來送出自己組出的訊息,那這個功能就非常好用。你先呼叫它,將可以避免讓你送出格式錯誤的訊息,畢竟,LINE Bot的 Message JSON格式愈來愈複雜了。 這組API,我們依舊是搶先實作在我們的LineBotSDK套件上了。 使用的方式很簡單,在更新SDK時,我寫了底下的單元測試程式碼,就權充是使用範例給大家參考:

投資銀行家 與 漁夫

圖片
每次忙到天昏地暗時都想起這個故事 一位投資銀行家在墨西哥某海灣度假,看見一個年輕的漁夫在碼頭釣魚,手到擒來,不到半刻鐘便釣了十多條肥大的活魚,塞滿整個水桶。 漁夫收桿離開,投資銀行家語帶不解問道:「為什麼不多呆一會兒,可以釣更多的魚?」漁夫回答:『賣掉這些魚已經夠換來好幾天的家用,等需要時再釣吧。』 投資銀行家好奇,問漁夫除了釣魚,是怎麼過日子。 漁夫答道:「我釣魚的時間不多,沒錢用時才到碼頭或出海捕魚。白天我和我的孩子們玩、睡午覺,下午和太太漫步、溫馨溫馨,晚上和朋友們喝酒吃飯、唱歌跳舞玩吉他,一直到深夜。我們平時睡覺很晚的。」 投資銀行家於是教訓他:「你太不思進取了。你應該花多點時間去釣魚,多釣多賣多賺,然後買一隻大漁船,釣更多的魚。」 漁夫不明所以:「之後呢?」 投資銀行家續道:「之後賺了錢便換更大、更多的船,把船租出去,再把你村內的漁民組織起來,變成為你賺錢的船隊。到那個時候,你就不需要自己出海,你可以自己開一個魚食加工廠,做自己牌子的魚肉罐頭,自己生產、推銷。」 漁夫更加不解瞪大雙眼問:「那我豈不是很忙碌?我豈不是沒有時間陪伴家人,不能常常和朋友吃喝玩樂?」 投資銀行家安慰他:「我是投資銀行家,我可以幫你,把這個業務做大做強,然後安排公司在紐約交易所上市,到時你便是千萬富翁了。」 漁夫聽罷有點興奮:「這要用多長時間?」 投資銀行家回應:「沒意外的話,只需要10到20年時間。」 漁夫心裏冷了半截,續問:「公司上市後又如何?」 今次是投資銀行家有點興奮了,他回道:「公司上市後你可以退休,搬到一個美麗的小漁村去生活,白天和你的孩子們玩,中午睡個午覺,下午和你的太太一起溫馨溫馨,晚上你的朋友們喝酒唱歌跳舞玩吉他,一直玩到深夜!逍遙快活,多麼寫意。」 漁夫淡然回應:「哦,我現在不就是這樣生活嗎?我為什麼要等10到20年呢?」

法老的奴隸

圖片
上課的時候,中午休息回來,看到大家精神狀況不是很好,我就講了一個最近在書上看到的故事… 話說 有一個古代的王 就當作是法老好了 養了非常多做工的奴隸 來為法老工作蓋金字塔 然後其中 有個奴隸想要叛變 但卻被法老王知道了 法老打算殺了他 後來仔細一想 殺了一個 後面還有千千萬萬個 殺不完呀 得想一個一勞永逸的辦法 於是就跟所有的奴隸說 你們 從今天開始 全部自由了 不用再為我蓋金字塔了 你們現在隨時可以走 但 留下來的人 我每天給你一個金幣 你可以用金幣來買吃的 喝的 醫療 住更好的房子 結果 所有的奴隸都留了下來 甚至比以前更賣力工作了 因為奴隸們想從法老王那賺取更多的金幣 從此 法老王安枕無憂 繼續有人幫他蓋金字塔 大家也心甘情願 不會想要叛變 甚至 有些奴隸還時常擔心 萬一哪天法老不雇用自己了 沒有金字塔可以蓋 沒有磚可以搬 不知道該怎麼辦? 所以很珍惜這份工作 雖然天天抱怨法老虐待殘酷又沒人性 但心裡還是會擔心自己沒有機會可以繼續當奴隸 同時 為了成為稱職且Qualify的奴隸 開始進修 讓自己在市場上更有競爭力 以便從法老那賺取更多更多的金幣 冀望著或許有朝一日 可以擺脫法老的控制 得到自由 故事講完了,同學也差不多醒了。 課後,有位同學問:『老師,奴隸們不是早就自由了嗎? 為何還是天天抱怨卻不直接離開法老的掌握呢?』 『恩…這…也難說。人生嘛…本來就是一種選擇,也許奴隸覺得,離開了,也只不過是換另一個地方繼續當奴隸而已。又或者,其實奴隸實際上過得比法老王還快樂也說不定呀 😁,誰知道呢?』我笑著回答。