一天學會 DevOps 自動化測試及部署
4.8 (58 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
213 students enrolled

一天學會 DevOps 自動化測試及部署

用 Go 語言所打造的 Drone 輕量級容器持續交付平台 (使用 Docker)
Bestseller
4.8 (58 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
213 students enrolled
Created by Bo-Yi Wu
Last updated 4/2019
Traditional Chinese
Current price: $51.99 Original price: $129.99 Discount: 60% off
30-Day Money-Back Guarantee
This course includes
  • 7.5 hours on-demand video
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to Udemy's top 3,000+ courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • 製作 Docker 映像檔並且自動上傳到 Docker Hub
  • 導入團隊取代傳統 Jenkins 或 GitLab CI

  • 用各式語言撰寫 Plugin 整合進 Drone 服務

  • 完整自動化測試
  • 部署到雲端機器 (AWS EC2, Linode, DigitalOcean)
  • 無痛導入 CI/CD
  • 在 AWS 或 GCP平台用 Kubernetes 架設 Drone
  • 搭配 Kubernetes 自動化部署
Course content
Expand all 57 lectures 07:41:31
+ Drone 基礎認識
9 lectures 48:42
Drone 系統架構
03:34

終於看到 Drone 作者 bradrydzewski 在 11/7 號釋出 1.0.0-RC1 版本,此版本尚未開源在 GitHub 上面,所以目前只能透過 docker 方式來安裝。另外如果您正在用 0.8.x 版本的,不建議現在轉換到 1.0 版本,原因有幾點,第一作者尚未公開原始碼,第二現在公開也才一週而已,還有很多 bug 以及用法都沒有在線上 document 寫很清楚,第三就是作者尚未提供工具從 0.8.x 升級到 1.0.0 RC 版本。根據上述的原因,建議大家先不要轉換,當然如果團隊尚未導入 CI/CD 的話,我強烈建議使用 1.0.0 RC-1 版本。

Preview 07:04

Drone 在 2018/11/21 正式推出 Cloud 免費版本,讓 GitHub 上面的開源專案都可以免費使用 Drone,另外也支援 ARM 系統,未來不只有 Travis 或 circleCI 可以提供免費服務,現在 Drone 也來角逐這行列了。

Preview 06:52
+ Drone 安裝方式
12 lectures 01:43:28

本講座會帶您深入了解 Docker Compose 設定檔

Preview 07:58

Drone 搭配 GitHub 服務

Drone 搭配 GitHub (0.8 版本)
07:47

Drone 搭配 GitLab 設定

Drone 搭配 GitLab (0.8 版本)
04:35

Drone 搭配 BitBucket 服務設定

Drone 搭配 BitBucket (0.8 版本)
04:09

Drone 搭配 Gitea 服務設定

Drone 搭配 Gitea (0.8 版本)
04:23

很高興看到 Gitea 正式支援 OAuth Provider 了,此功能經歷了四個月終於正式合併進 master 分支,預計會在 1.8 版本釋出,由於此功能已經進 master,這樣我們就可以把原本 Drone 透過帳號密碼登入,改成使用 OAtuh 方式了,增加安全性。如果您會使用 Go 語言,不妨現在就可以來試試看了,透過 go build 來編譯原始碼。也可以等 Drone 釋出 Docker 版本

Preview 08:45
將 Drone 安裝在 Kubernetes 上 (Amazon Web Service)
14:30

在 AWS 用 Shell Script 方式安裝 Drone,省去輸入 Kubernets 眾多指令,並且自動產生 Server 及 Agent 通訊的密碼。

在 AWS 上用 Shell Script 快速安裝 Drone 在 Kubernetes 上
08:30
將 Drone 安裝在 Google Kubernetes Container 內 (Google Cloud Platform)
15:34

Drone 可以搭配多個 agent 服務,但是假設有特定的專案吃掉很多 CPU 或 RAM 資源,團隊內需要買一台獨立機器來跑特定的專案,這時可以透過 drone-filter 功能來指定特定的專案跑在特定的 Angent 服務上。

Drone 使用 Filter 跑特定專案
08:03

Drone 在 1.0.0 RC-1 版本增加了單機版安裝,現在您可以啟動一個服務裡面包含了 Drone Server 及 Drone Agent,對於小團隊來說是一大福音,快速安裝在單一台機器上面。

Preview 10:23

Drone 是一套開源專案的 CI/CD 服務,非常輕巧且容易安裝,本影片教大家如何用 Traefik 來架設 Drone 服務,並且透過 Let's Encrypt 服務讓網站自動更新憑證,底下是課程大綱:


00:37 架設 Traefik 服務 Listen 80 及 443 port

02:42 用 Docker 架設 Drone 並且透過 Label 跟 Traefik 串接

04:11 在 GitHub 申請 App Client ID 及 Secret


了解 Traefik + Docker 可以參考 https://www.youtube.com/watch?v=0GkJb6-CDUU

Traefik + Let's Encrypt 可以參考 https://www.youtube.com/watch?v=ddJxBXShkZg

用 Traefik 搭配 Drone 服務 (1.0 版本)
08:51
+ Drone 基本用法
8 lectures 59:38

介紹如何使用 Drone 後台 UI 介面,操作十分單純。

Preview 07:56
使用 Git Clone
04:20
WorkSpace 介紹
03:45
Pipeline 介紹 (平行執行)
07:04
啟動額外服務 (像是 Redis, MySQL.. 等)
05:33
隱藏敏感資訊 (像是 AWS Secret 或 API Token)
10:12
條件子句 (特定 Branch 或觸發 Tag)
14:52
+ Drone 外掛介紹
9 lectures 01:17:03
打包檔案上傳 (SCP Plugin)
13:52
執行伺服器指令 (SSH Plugin)
07:31
上傳映像檔到 Public Registry (像是 Docker Hub)
06:11
上傳映像檔到 Private Registry (像是 Harbor)
06:54
搭配 Kubernetes 自動化部署 (更新 k8s pod 版本)
11:37
消息通知 (Discord 範例)
05:07
用 drone-apex-up 自動更新 AWS Lambda
10:35

Flutter 是一個由 Google 開發的開源行動應用軟體開發套件,用於為 Android 和 iOS 開發應用。現在只要維護一套程式碼就可以同時發布 Android 及 iOS App 軟體,然而 Flutter 是透過 Dart 語言實現,所以只要用 Dart 寫完程式,透過 Flutter test 指令完成測試。本影片透過 Docker 搭配 Drone 來完成自動化測試。


Preview 04:54

在現代 CI/CD 的環境流程中,使用 Docker In Docker 來編譯容器已經相當流行了,像是 GitLab CI 或 Drone 都是全走 Docker 環境,然而有很多人建議盡量不要在 CI 環境使用 Docker In Docker,原因在於 CI 環境無法使用 Host Image 資料,導致每次要上傳 Image 到 Docker Hub 時都需要重新下載所有的 Docker Layer,造成每次跑一次流程都會重複花費不少時間,而這個問題在 v1.13 時被解決,現在只要在編譯過程指定一個或者是多個 Image 列表,先把 Layer 下載到 Docker 內,接著對照 Dockerfile 內只要有被 Cache 到就不會重新再執行,講得有點模糊,底下直接拿實際例子來看看。

提升 Docker build 速度,加速部署 Image
10:22
+ Drone 外掛撰寫
3 lectures 09:47

介紹如何擴充 Drone Yaml 檔案參數設定,並且用 Shell Script 撰寫 Plugin。

撰寫 Bash Shell Script
03:27
打包 Docker Image 並上傳到 Docker Hub
04:00
測試 Drone 外掛
02:20
+ Drone 指令介紹
4 lectures 37:27

介紹如何在 MacOS 或 Linux 安裝 Drone CLI 工具

Drone 指令安裝方式
05:18

除了透過 Drone 後台新增 Secret 方式,還可以透過 drone cli 來設定 Secret 增加其安全性

Drone Secret 指令介紹
12:38

如果團隊尚未導入 Drone,但是開發團隊又想要使用 Yaml 優勢,現在可以直接透過 drone cli 方式直接在自己的電腦上面做測試,本單元教大家如何用 drone cli 在專案內直接測試,不需要架設 drone server 就可以享用 drone 的優勢。

Preview 08:27

Drone 在 1.0 版本推出了用 jsonnet 來撰寫 YAML 設定檔,方便開發者可以維護多個專案設定,現在只要寫一份 jsonnet 就可以產生好幾個專案的設定檔,不用每次新的專案都要重新複製一份,對於 CI/CD 維護者相當方便。

Drone jsonnet 指令介紹 (用 jsonnet 撰寫 Drone CI/CD 設定檔)
11:04
+ 實戰 Node.JS 專案
5 lectures 38:15
Node.js 專案測試 (mocha + eslint)
09:48
Node.js 專案快取檔案 (加速測試)
07:46
Node.js 專案打包 (drone-scp 外掛)
07:18
Node.js 專案部署 (drone-ssh 外掛)
06:27
Node.js 專案使用 Dockerfile 部署
06:56
+ 實戰 Go 語言專案
5 lectures 01:06:16
Go 專案編譯多種 OS 執行檔 (ARM64, AMD64 或 i386)
09:05
Go 專案編譯 Docker 映像檔並且上傳到 Docker Hub
08:44

在之前寫過一篇『Drone 搭配 Kubernetes 升級應用程式版本』,裡面內容最主要介紹 honestbee 撰寫的 drone 外掛: drone-kubernetes,但是此外掛並非用 Go 語言所撰寫,而是用 Shell Script 透過 kubectl set image 方式來更新專案項目,但是這邊會有幾個缺點,第一點就是假設在 Develop 環境永遠都是吃 master 分支,也就是讀取 Image 的 latest 標籤,這時候此外掛就無法作用,第二點此外掛無法讀取 kubernetes YAML 檔案,假設專案要修正一個 ENV 值,此外掛也無法及時更新。綜合這兩點因素,只好捨棄此外掛,而本篇會帶給大家另一個用 Go 語言所撰寫的外掛,是由 @Sh4d1 所開發的項目,用法相當容易,底下會一步一步教大家如何部署 Go 語言項目。

Go 專案搭配 Kubernetes 部署
20:45

相信大家在架設服務肯定會選一套像是 HAProxy, Nginx, Apache 或 Caddy,這四套架設的難度差不多,如果要搭配 Let’s Encrypt 前面兩套需要自己串接 (Nginx, Apache),而 Caddy 是用 Golang 開發裡面已經內建了 Let’s Encrypt,,管理者不用擔心憑證過期,相當方便。但是本篇我要介紹另外一套工具叫 Traefik,這一套也是用 Go 語言開發,而我推薦這套的原因是,此套可以跟 Docker 很深度的結合,只要服務跑在 Docker 上面,Traefik 都可以自動偵測到,並且套用設定。透過底下的範例讓 Traefik 串接後端兩個服務,分別是 domain1.com 及 domain2.com。來看看如何快速設定 Traefik。

Go 專案使用 Docker 搭配 Traefik 自動化部署
20:19
+ 實戰 Packer 自動化編譯 Image
2 lectures 20:55

本篇來介紹 Hashicorp 旗下其中一個產品叫 Packer,其實在 Hashicorp 旗下有很多其他雲端工具都非常好用,如果大家有興趣都可以上官網參考看看。而 Packer 是用來產生各大雲平台映像檔的工具,平行產生 AWS, GCP, Docker 或 DigitalOcean… 等等眾多雲平台之映像檔對 Packer 來說相當容易,詳細可以參考這邊,也就是說透過 Packer 來統一管理各大雲平台的映像檔,用 JSON 檔案進行版本控制。假設您有需求要管理工程團隊所使用的 Image,你絕對不能錯過 Packer。Packer 不是用來取代像是 Ansible 或是 Chef 等軟體,而是讓開發者更方便整合 Ansible .. 等第三方工具,快速安裝好系統環境。


Preview 13:34

本章節會教大家如何跟 Drone 整合,這邊可以直接使用 drone-packer 套件,使用文件也已經放到 drone plugin 首頁了。使用方式非常簡單

Packer 搭配 Drone CI/CD 自動化編譯
07:21
Requirements
  • 具備 Shell Script 或其他語言基礎知識
  • 已安裝 Docker + Docker Compose 環境
Description

重要提醒:因此平台 Udemy 為境外公司,在 Udemy 的刷卡屬於境外刷卡,您的信用卡公司會另外向您收取大約 1.5% 的國外交易手續費。手續費根據各家信用卡公司規定有所不同,詳細數字需與您的發卡銀行確認。

溫馨提醒:即日起在課程右上「有優惠券嗎?」(Have a coupon?)輸入「DRONE2019」,即可享優惠!(海外用戶因幣別不同,優惠折扣會略有差異)

課程介紹:

團隊內原本使用 Bamboo 之後跳到 Jenkins 最後又跳到 Drone,本課程會介紹為什麼我們放棄 Bamboo 及 Jenkins,它們所帶來的缺陷,以及為什麼最後選擇 Drone。

Drone 是一套基於 Docker 容器技術的持續交付平台。每個 Build 都在一個短暫的 Docker 容器中執行,讓開發人員可以完全控制他們的建置環境並保證隔離互不干擾。Drone 非常容易安裝及維護,並且提供強大的插件 (plugin) 系統,也可以讓開發者輕易完成個人插件,如果您正在煩惱該選擇 Jenkins 或 GitLab CI 等工具,我會建議您嚐試看看輕量級的 Drone。本議程會帶您深入了解由 Go 語言所撰寫的 Drone 架構及如何輕易整合原有的 Git 服務 (像是 Github, Bitbucket, Gitea 或 GitLab) 來快速部署及測試軟體品質。

課程緣由:

當初想開這課程的原因是,希望可以造福全台灣的朋友,之前跟 iThome 合作開了一堂實體課程,但是很多人卡在假日無法出門,再來是實體課程成本比較高,有時候上課沒聽懂,回家也沒有老師可以討論,造成學習效果不是很好,所以我就來錄製線上課程,讓不能北上的朋友們也可以學習到基本的 DevOps 技巧。希望能透過線上課程可以跟學員有些互動,把 DevOps 推廣到各大公司及新創。如果正要創業,或是在 DevOps 上有些困擾,不知道該如何導入及選擇工具,都可以來跟我聊聊。

底下是在我的 Blog 公開介紹 Drone 相關文章:

  1. 2017 COSCUP 研討會: Gitea + Drone 介紹

  2. Drone 發佈 0.8.0-rc.1 版本

  3. Drone 自動觸發 GitLab CI 或 Jenkins 任務

  4. 台灣第一屆 Laravel 研討會

  5. 台灣第一屆 GoPher 大會

  6. 用 Go 語言打造 DevOps Bot

  7. Cronjob 搭配 Drone 服務

  8. Caddy 搭配 Drone 伺服器設定

  9. 用 drone-line 架設 Line webhook 及發送訊息

  10. Drone CI Server 搭配 Atlassian Bitbucket Server (前身 Stash)

目前我也擔任 Drone 開源專案的維護者,詳細可以參考我的 GitHub 組織

  • Drone 核心成員

  • Drone Plugin 核心成員

Who this course is for:
  • 系統管理者
  • 前端開發者
  • 後端開發者
  • 全端開發者