為什麼我用 Drone 取代 Jenkins 及 GitLab CI

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

Drone 自動觸發 GitLab CI 或 Jenkins 任務

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

在 Debian 7.8 安裝 Gitlab 筆記

gitlab_logo

之前寫過一篇 GitLab 快速安裝筆記,但是這次在 Debian 7.8 上安裝起來遇到蠻多問題,故寫此篇來記錄安裝遇到的問題,也會寫到如何搭配 Nginx 設定。GitLab 分兩種版本,一種是 Community Edition packages 另一種是 Enterprise Edition packages,本篇是記錄 Community 版本安裝步驟,可以到下載頁面選擇您的作業系統,就可以看到安裝方式

Continue reading “在 Debian 7.8 安裝 Gitlab 筆記”

GitLab 快速安裝

gitlab_logo

最近想安裝新版的 GitLab,竟然發現 GitLab 推出快速懶人包,終於可以不用打很多指令來安裝了,大幅降低了安裝困難度,目前支援 CentOS, Ubutnu, Debian 等安裝包,GitLab 各版本也可以從這邊列表找到,另外安裝前請確保你的硬體環境是符合 GitLab 所要求,來看看有沒有這麼簡單安裝。

Continue reading “GitLab 快速安裝”

用 Go 語言寫的 Github Git 服務

null

最近看到大陸那邊用 Go 語言寫了一套類似 Github 服務叫做 Gogs(Go Git Service),目前個人裝起來速度方面相當快,跟 GitLabRuby 寫的 Git Service 速度有差,以功能完整性來說,GitLab 還是大勝 Gogs,安裝方式則是 Gogs 勝於 GitLab,如果最後要推薦用 Gogs 還是 GitLab,我個人還是會選 GitLab 因為畢竟還是要搭配 Jenkins 等 CI 服務才能發揮作用,這次來筆記如何在 Ubuntu 上安裝 Gogs。

Continue reading “用 Go 語言寫的 Github Git 服務”

Git Server 噴 git upload-pack: git-pack-objects died with error

Git-Logo-2Color

透過 Gitlab 架設 Git Server 來放一些 Document 資料,由於個人 Document 都是 pdf 檔案,所以整個 Git Repository 就非常肥大,今天在 Clone 下來的時候,不僅是主機 CPU 飆高,然後記憶體被吃到快沒了,最後還噴出底下錯誤訊息

remote: Counting objects: 4912, done.
remote: fatal: Out of memory, malloc failed
error: git upload-pack: git-pack-objects died with error.
fatal: git upload-pack: aborting due to possible repository corruption on the remote side.
remote: aborting due to possible repository corruption on the remote side.
fatal: early EOF
fatal: index-pack failed

Continue reading “Git Server 噴 git upload-pack: git-pack-objects died with error”

Jenkins + Nginx User Auth

jenkins_logo

Jenkins CI 是一套非常好的 Job 執行 Tool,可以幫忙跑專案測試,測試完成後繼續 Deploy 到相對應的伺服器,也可以自動寄信給開發者或者是指定的內部人員。在 UbuntuDebian 安裝方式非常簡單,按照下述操作就可以簡易架設完成

$ aptitude -y install openjdk-7-jre openjdk-7-jdk
$ wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
$ sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list'
$ aptitude -y update
$ aptitude -y install jenkins
Continue reading “Jenkins + Nginx User Auth”

Gitlab CE + Gitlab CI 打造版本控制及自動測試流程

gitlab_logo

Git 版本控制不管在嵌入式或 Web 領域都是很受歡迎的工具,尤其是不會遇到像 svn 搞爛 source tree,然後又要 Google 一堆解法。一般公司入門大概就是買 Github 服務,一個月才五美金,可以提供五個 Private Project,當然你也可以不付錢,而去使用 Bitbucket,好處就是無限的 Private Project,唯一的限制就是開發者數量,只能在五個以內,設定超過五個,就不給 push 或 pull 了,完成版本控制後,接著就是專案的自動測試,在 github 上面,推的就是 travis-ci,這也是全部 open source 專案的喜好,你會發現大部分的專案都會放上 .travis.yml,來告訴 travis 需要的測試步驟,測試步驟完成後,就要將 source code deploy 到 Amazone 或其他雲端服務,到這個服務基本上都要收費了,所以上一篇有介紹 Drone.io 服務,可以自動測試加上 Deploy 到遠端機器,不過缺點就是不支援 Private Project,要的話就是要收費。 Continue reading “Gitlab CE + Gitlab CI 打造版本控制及自動測試流程”