Drone 自動觸發 GitLab CI 或 Jenkins 任務
Posted on June 28, 2017
| 2 minutes
| 385 words
| appleboy

Drone 是一套由 Go 語言所開發的開源碼專案,讓開發者可以使用 Docker Container 快速設定自動化測試及部署,上篇有提到『Cronjob 搭配 Drone 服務』,讓 Jenkins 或 GitLab CI 用戶可以轉換 Cron Job 任務到 Drone 上面。本篇則是會介紹如何透過 Drone 去觸發 Jenkins 或 GitLab CI 上的工作,當然這是過渡時期,希望大家最後能將工作完整移轉到 Drone 上面,不要再依靠 Jenkins 或 GitLab CI 了。本篇會教大家用三種方式來觸發 GitLab CI 或 Jenkins 任務。
- 使用 Drone CI/CD
- 使用 Docker 指令
- 使用 Command Line (命令列)
[Read More]Cronjob 搭配 Drone 服務
Posted on June 25, 2017
| 1 minutes
| 171 words
| appleboy

Drone 是一套基於 Docker Container 技術的 CI/CD 服務,它是用 Go 語言所開發,可以安裝在任何作業系統內,你可以把 Drone 當作是開源版的 Travis 服務。Drone 本身不支援排程任務,也就是說無法像 Jenkins CI 一樣可以設定每天幾點幾分執行單一 Job 任務。但是可以透過第三方工具像是 cron
來整合 Drone API 達成自動排程的效果,底下來看看該如何實作。
[Read More]Node.js 8 搭配 npm 5 速度
Posted on June 11, 2017
| 1 minutes
| 160 words
| appleboy

這個月 Node.js 釋出 8.0 版本,搭配的就是 npm v5.0.0 版本,上一篇寫到如何透過 Yarn 指令移除 devDependencies 內的 Package 套件,減少 node_modules 大小,有網友提到那 npm 5 的速度為何?其實筆者已經好久沒有用 npm 了,但是有人提問,我就立馬來測試看看 npm vs yarn 的速度,詳細數據可以參考此專案說明。測試方法如下
[Read More]減少 node_modules 大小來加速部署 Node.js 專案
Posted on June 6, 2017
| 1 minutes
| 123 words
| appleboy

相信 Node.js 開發者現在大部分都在使用 Yarn 了吧?如果還不知道或無法體會 Yarn 帶來的好處可以參考之前寫的一篇『用 Yarn 取代 Npm 管理 JavaScript 套件版本』,帶你體會 yarn install
vs npm install
的速度差異。本篇最主要會介紹在部署 Node.js 專案都需要把 node_modules 壓縮一起丟到遠端伺服器 (假設你不是用 Docker 部署),這時候來聊聊怎麼減少 node_modules
大小。
[Read More]Go 語言內 struct methods 該使用 pointer 或 value 傳值?
Posted on May 22, 2017
| 2 minutes
| 372 words
| appleboy

上週末在台北講『Go 語言基礎課程』,其中一段介紹 Struct 的使用,發現有幾個學員對於在 Method 內要放 Pointer 或 Value 感到困惑,而我自己平時在寫 Go 語言也沒有注意到這點。好在強者學員 Dboy Liao 找到一篇說明:『Don’t Get Bitten by Pointer vs Non-Pointer Method Receivers in Golang』,在 Go 語言如何區分 func (s *MyStruct)
及 func (s MyStruct)
,底下我們先來看看簡單的 Struct 例子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| package main
import "fmt"
type Cart struct {
Name string
Price int
}
func (c Cart) GetPrice() {
fmt.Println(c.Price)
}
func main() {
c := &Cart{"bage", 100}
c.GetPrice()
}
|
[Read More]用 Docker Multi-Stage 編譯出 Go 語言最小 Image
Posted on April 29, 2017
| 2 minutes
| 351 words
| appleboy

之前應該沒寫過用 Docker 結合 Go 語言編譯出最小 Image 的文章,剛好趁這機會來介紹。其實網路上可以直接找到文章,像是這篇『Building Minimal Docker Containers for Go Applications』,那本文來介紹 Docker 新功能 multi-stage builds,此功能只有在 17.05.0-ce 才支援,看起來是 2017/05/03 號會 release 出來。我們拿 Go 語言的 Hello World 來介紹 Single build 及 Multiple build。
[Read More]用 Go 語言打造 DevOps Bot
Posted on April 29, 2017
| 1 minutes
| 67 words
| appleboy

在 4/27 參加 iThome 舉辦的第一屆 ChatBot Day,我分享了如何用 Go 語言 實作 DevOps Bot,可以透過 Facebook Messenger 或 Line Messenger API 來主動通知開發者。此議程希望可以幫助想玩 Bot 但是又不知道如何入門的開發者。如果不懂程式語言,也可以直些下載 Binary 來玩玩看。
[Read More]在 DigitalOcean 新竹社群簡介 Gitea 開源專案
Posted on April 23, 2017
| 1 minutes
| 78 words
| appleboy

很高興受到 DigitalOcean 新竹社群邀請來介紹輕量級的 Git 服務: Gitea,在不久之前筆者已經寫過一篇 Gitea 介紹,這次到交通大學宣傳這套免費的開源專案,目的就是希望台灣有更多開發者或企業可以了解用 Go 語言也可以打造一套輕量級 Git 服務,並且導入台灣的新創團隊。這次分享是透過 DigitalOcean 最小機器 (512MB 記憶體,每個月五美金) 來 Demo 如何在 Ubuntu 16.04 快速架設 Gitea 及使用 Caddy 來自動申請 Let’s Encrypt 憑證,最後搭配 Jenkins 串自動化部署及測試等…。

[Read More]五大理由從 Python 轉到 Go 語言
Posted on April 8, 2017
| 1 minutes
| 188 words
| appleboy

在網路上看到這篇『5 Reasons Why We switched from Python To Go』,先發到自己 Facebook 牆上,引發討論,乾脆整理一篇 Blog 來寫自己的感想,底下五大理由讓該篇作者從 Python 轉到 Go 語言。我會針對前四點來寫心得
- 編譯二進制檔案 (加速部署及跨平台)
- 編譯自動檢查 Static 型態 (你不會把 string 欄位帶入 Integer)
- 效能 (Go 並發跟 Python thread 比起來節省許多資源)
- 不需要 web framework (Go 內建大多數 Library 像是 HTTP, JSON, HTML templating)
- 好用的 IDE (內文提到 Webstorm, PHPStorm) 我推薦用 VSCode
除了第五點外,其他四點個人覺得都是工程師的痛點。
[Read More]在 Go 語言用一行程式碼自動化安裝且更新 Let’s Encrypt 憑證
Posted on April 7, 2017
| 3 minutes
| 462 words
| appleboy

在去年寫了一篇『申請 Let’s Encrypt 免費憑證讓網站支援 HTTP2』教學,如果您是用 Nginx,就可以參考該篇教學讓您的伺服器支援 HTTPS,而 Google Security Blog 也宣布在 56 版本以後將會提示 non-secure 網站,讓使用者可以選擇性瀏覽網站。Let’s Encrypt 官方也公布去年 2016 發了多少張憑證,相當驚人,想必大家對 HTTPS 已經有相當程度的瞭解。底下這張圖說明 2016 年 Let’s Encrypt 發憑證總量的狀況

此篇會介紹在 Go 語言如何跟 Let’s Encrypt 串接,底下有兩種方式。
[Read More]