為什麼我用 Drone 取代 Jenkins 及 GitLab CI
Posted on September 7, 2017
| 1 minutes
| 135 words
| appleboy

終於有機會正式跟大家介紹為什麼我會捨棄 Jenkins 跟 GitLab CI,取而代之的是用 Go 語言寫的 Drone。今年很高興錄取台灣第一屆 DevOps Day 講師,在今年主題是『用 Drone 打造輕量級容器持續交付平台』,主要推廣這套 Drone CI/CD 工具,會議內容圍繞在 Jenkins, GitLab CI 跟 Drone 的比較。也提到為什麼我不用 Jenkins 及 GitLab CI 的幾個原因。底下整理議程大綱。
- 為什麼選擇 Drone
- Drone 基礎簡介
- Drone 架構擴展
- Drone 安裝方式
- Drone 管理介面
- Drone 測試部署
- Drone 自訂套件
[Read More]用 upx 壓縮 Go 語言執行擋
Posted on September 1, 2017
| 1 minutes
| 152 words
| appleboy

剛開始學 Go 語言的時候,跟學習其他語言一樣,寫了底下一個簡單的 Hello World 檔案
1
2
3
4
5
6
7
8
9
| package main
import (
"fmt"
)
func main() {
fmt.Println("Hello World!")
}
|
這是一個最簡單的程式碼,接著透過 go build
的方式編譯出執行檔,這時候我們看看檔案大小:
[Read More]用 Go 語言打造微服務架構
Posted on August 11, 2017
| 1 minutes
| 65 words
| appleboy

今年在 ModernWeb 講『用 Go 語言打造微服務架構』,蠻開心看到底下很多 Go 開發者,希望未來能有更多公司導入 Go 語言,底下是會議大綱:
- Microservices vs. Monolithic 差異
- 微服務核心架構 (Go 工具專案)
- Go 語言核心高並發
- 為什麼選用 Go 語言
- 微服務代價跟準備
[Read More]2017 COSCUP 研討會: Gitea + Drone 介紹
Posted on August 7, 2017
| 1 minutes
| 96 words
| appleboy

今年很高興可以到 COSCUP 分享『Gitea + Drone 介紹』,我是在第二天的最後一場來做分享,最後還被大會進來趕人,講超過時間了。這次是我第一次到台大社科院,太陽真的好大,兩天下來流的汗水,大概已經是一年份的了。由於今年 COSCUP 不供應午餐,在第一天中午到科技站出口,左轉第一個店面就坐下來吃麵,店面不大,賣傳統小吃,我點了麻醬麵大碗 55 元,燙青菜 35 元,真的很大碗,不知道是不是因為在學校附近的關係,所以特別大碗,我心裡想說,這裡不是台北嗎?
[Read More]Go 語言框架 Gin 終於發佈 v1.2 版本
Posted on July 6, 2017
| 3 minutes
| 516 words
| appleboy

上週跟 Gin 作者 @javierprovecho 討論要發佈新版本,很快地經過一兩天,作者終於整理好 v1.2 版本,除了釋出新版本外,也換了有顏色的 Logo,真心覺得很好看。大家來看看 v1.2 釋出哪些功能,或修正哪些問題。
[Read More]台灣第一屆 Laravel 研討會
Posted on July 3, 2017
| 1 minutes
| 64 words
| appleboy

這次很高興擔任第一屆 Laravel 台灣研討會講者,會議當天中午才到現場,我是兩點分享的議程,在整天聽下來及最後的案例討論,聽到最多的都是原本從 CodeIgniter 架構換到 Laravel 上面,身為 CodeIgniter 的維護人員的我,聽到是蠻開心的,在 Laravel 還沒出來前,大家都是選用這輕量級的 CodeIgniter。
[Read More]台灣第一屆 GoPher 大會
Posted on June 30, 2017
| 1 minutes
| 49 words
| appleboy

很高興可以擔任第一屆 GoPher Day 大會講者,每次參加聚會都是跟一堆網友見面,人在新竹很難得大家見到面。很感謝 iThome 大力幫忙舉辦,才可以讓整天議程順利完成。底下分享『用 Go 語言實戰 Push Notification 服務』投影片。
[Read More]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]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]