Circle CI run Terraform and AWS deployment

最近花很多時間在 CI,其中一個比較大的目標是跑 Terraform 加上用它輸出的 S3 name 來作為後面發佈步驟的發佈目標,然後加上不想要用第三方的 docker image 和 orbs,不過網路上都沒看到有這樣子做的範例,所以花了些時間嘗試、看文件和範例,這篇就是把一些目前的結論記錄下來:

Terraform 是用 hashicorp 官方的image,基本上就是 alpine + go + terraform 而已,shell 只有 sh 沒有 bash,不過其實 Circle CI 的一些文件看起來,他們應該是建議要使用 bash 為主,其中一個主要原因就是BASH_ENV這個環境變數有沒有支援,支援的話就可以很輕鬆的在不同 command 間傳遞環境變數了,不過還好我在 Terraform 這邊只需要寫入,還不需要讀出,所以就是 Terraform 執行完之後加一個 command 執行:

echo "export S3_ID=`terraform output s3_bucket_name`" >> $BASH_ENV

當然你的 terraform module 要有定義好 output。

第二個是重點是$BASH_ENV的值,個人建議是設定絕對路徑,直接寫出完整路徑,不要用其它環境變數來組合,然後位置要放在 working directory 內,好方便能persist_to_workspace,這樣才能夠跨 job 使用,另外就是檔名建議不要用.開頭的隱藏檔名,我遇到過各種找不到檔案的錯誤訊息,然後 working directory 建議不要放在 home 目錄下,一來$BASH_ENV去用$HOME組合出來我遇到錯誤過,用~來寫路徑也是遇到錯誤過,二來不同 image 的 home 目錄路徑不同,如果要在 config 內直接寫死絕對路徑,建議直接定一個固定的位置,我現在是用:

/tmp/workspace

然後這樣後面就可以用官方的 s3 orb 下指令了:

- aws-s3/sync:
    from: build
    to: "s3://${S3_ID}"
    aws-region: "ap-northeast-1"

COSCUP 2019

COSCUP 2019

今年發生什麼事大家都知道了,我今年負責的是 Open Web Technologies 議程軌,相對是受影響比較小的單位,不過還是想從我的角度來記錄一下,這篇就流水帳吧。

前一天晚上聽到說台科大停電的時候,還沒什麼實感,而且研揚大樓很快就恢復了,想說應該不會停太久吧,直到後來要睡前都沒有恢復才有一點緊張感,不過基本上也做不了什麼事情,還是準時去睡覺,還把龍王的工作八給看完了,隔天早上七點多醒來一看已經確定要換場地了,各管道的宣傳也開始在跑了,我就邊處理小孩的東西,先發了一封信件給今天的所有講者說場地要換大樓了,當時新教室的位置還沒出來。然後也邊跟另外一位社群協調人 hlb 聯絡,他還要從新竹出發過來,比我還早出門,後來教室確定後我又再發一封郵件,還有在 Telegram 的 Mozillians at COSCUP 2019 群(專門開給國外來參加 COSCUP 的 Mozilla 人的群)也趕快發通知,剛好那邊還有今天下午的兩位講者在裡面。

我自己本來的規劃是九點到場,後來因為確定狀況和發信等等後來有比較晚到,不過還是去採買了要給講者喝的水,我準備了一個保冷袋還加買兩包冰塊,後來冰塊到離開時都還沒融化完,可是冷卻效果不是很好,或許還是專用的保冷劑效果會比較好,另外就是有一包冰塊好像袋子還有破洞漏水。停到研揚大樓停車場的時候,竟然只能使用悠遊卡,然後一刷,只剩下 80 塊,這表示我要離開前勢必要先找地方加值了,當然,當時校內的便利商店也都停電了 ~_~

九點多到場時很感謝 hlb 都已經確認完場地狀況了,而且看起來幾乎場地都已經準備好了,雖然還有攤位沒準備完,樓下其實還一直在搬東西過來,不過真的是要讓演講開始已經完全沒問題了,像是教室指標、背版、麥克風備用電池,甚至連新印的單間會議廳的議程表都有,隔壁教室的贊助商攤位看起來也很有一回事了。

之後就都還蠻順利的,講者都有準時到,沒有開空窗,也沒有人超時卡到下一位講者,分享後互動最熱烈的那場,也剛好排在午餐前,比較可惜是我的主持還不太行,介紹講者的部分都不太好,當然週五無法先去找講者聊一下也是蠻有影響的,不過更大的因素是我自己事前準備還不夠,沒有練習好,這部分就明年繼續努力了。

今年 Open Web Technologies 下午有三位海外講者,其實都是他們各自籌經費,Mozilla 的 Rabimba 和 Bob 都是 Mozilla Tech Speaker,所以應該是從那邊申請經費的,另外一位則是 LINE 的 Trustin Lee,LINE 也是今年贊助商之一,講者的經費應該是公司出的,剛好攤位就在隔壁教室,好像也有該主題自己的攤位和其它一起從韓國來的朋友,開場前就看到他們開始在拍照,然後我才想到,像這種公司出錢來的海外講者,要是因為活動因故取消的話,人都到了不知道他們的旅費要怎麼處理,這時才第一次體會到,推廣國際能見度其實也是伴隨而來更多的責任的啊。

總之議程過程還算順利,我自己因為主持的關係幾乎離不開,只有挑了一場演講開始的時間去 HKOSC 買預計要入手的 kotties,還有去拿個人贊助的紀念品,不過我沒有拿到大會手冊就是,最後議程結束後,我就把東西收好走去長興街 7-11 儲值悠遊卡,那段時間雨還不小,回來時在一樓跟小耕打招呼,他也提到了場佈兩次的事情,我腦中就響起了這個旋律:

每條大街小巷
每個人的嘴裡
見面第一句話
場佈快不快樂

搭配音樂:

之後還在閃電講時間,我去了記錄組工作區晃了一下,還遇到不少老人回來要準備幫忙撤場,沒停留多久就回家顧小孩了,停車費 400(應該是 50 x 8 小時),大概九點弄完才有時間去找出 YouTube 直播留存的影片來看最後的閃電講和閉幕,看完覺得第二天能順利辦完真是太好了,不只是對贊助商和講者的交代,要是沒有辦起來也沒機會再次緬懷 Ilya 和阿怪了。

最後個人想法,其實我聽到要換場地的時候,我腦中倒是完全沒有懷疑過 COSCUP 團隊會辦不到,有個替代場地可以用反而是我覺得真的是撿到的,不知道為什麼一開始會先把研揚大樓的供電恢復,而且校方還能迅速幫忙協調出空間給我們用這真的是非常關鍵,如果今天在其它地方辦搞不好就真的無法找到替代空間了;然後在研揚辦的效果其實也還不錯,走道有空調真是舒適不少,第一次到台科辦的時候好像也有考慮過這個位置就是,不過大概就是因為沒有比較正式的會議廳吧。第二是 Bobchao 從前年開始推動的社群議程其實也在這次事件發揮蠻大的功效,不然整個議程相關的問題就會擠在議程組內了,現在這樣倒是可以把很多事務和權責放到外部,對我來說,其實更換場地影響沒有很大(當然是因為我到場時東西都已經準備好了,十點社群議程才開始也提供了相當充足的時間),最重要的就是確定新的會議廳位置以及想辦法通知講者,尤其是海外講者,這次我們軌三位海外講者中有兩位都有 IM 管道可以跟他們聯繫(感謝 Irvin 有先建立群組),所以我都有確定他們知道場地變動的訊息,以後也可以考慮先建立好跟講者聯繫的 IM 管道。

然後比較個人部分的感想,要顧一間做整天的主持人,幾乎都沒有機會離開啊,更不用說拍什麼照片了,其實攝影器材有帶不少但是大概用不到一半,希望以後能更多時間到場,然後可以分個半天一天做自由記錄。

最後的最後就放其它人的紀錄吧(不過目前看到的公開的只有四貓的,歡迎提供其它連結):


➡ 前一個月的文章