發表文章

目前顯示的是有「NodeJS」標籤的文章

如何自動化 release 的流程?

圖片
這篇文章會介紹如何使用 semantic-release 這個工具,自動化 Node.js (or JavaScript) 專案的版本號,以及 changelog 的 release 流程。 什麼是 semantic-release? 為什麼要用 semantic-release? 如何使用 semantic-release? 什麼是 semantic-release? semantic-release 可以自動完成下列這些事: 當 code 被 push 或 merge PR 回 production branch (ex: master) 的時候 CI build 被觸發, semantic-release 會收集此次更新的所有 commit messages(需遵循 AngularJS Git Commit Message Conventions 的格式) 自動根據 semver 的規則來更新 package.json 的 version,並建立 Git tag 自動 publish 新版本的 package 到 npm registry (非必要) 自動在 GitHub releases 的頁面上,產生相對應的 changelog 所以簡單來講, semantic-release 指的就是遵循 semver 的 release 流程。 semver 的介紹和好處可以在網路上找到很多文章,這裡就不贅述了,它的概念主要就是將版本號分成: Major . Minor . Patch 例如 React 的 0.11.2、Vue.js 的 2.0.10 等,這三個數字各自代表: Major 當你的 API 不兼容前一版本時(又稱 Breaking Change),major + 1,例如:1.x.x -> 2.0.0。 Minor 當你增加新 feature 的時候,並且不影響前一版本的 API,minor + 1,例如:x.6.x -> x.7.0。 Patch 當你修復 bug 的時候,並且不影響前一版本的 API,patch + 1,例如:x.x.9 -> x.x.10。 如果專案有在執行 git-flow 的話,minor 配合的就是 feature 的 re...

DevOps:持續整合&持續交付(Docker、CircleCI、AWS)

圖片
這篇文章將一步一步介紹如何使用 Docker、GitHub Flow、CircleCI、AWS Elastic Beanstalk 與 Slack 來完成 持續整合 與 持續交付 的開發流程。 前言 什麼是持續整合&持續交付? 持續整合&持續交付(Continuous Integration & Continous Delivery),簡稱 CI & CD,具體介紹可以參考「 山姆鍋對持續整合、持續部署、持續交付的定義 」這篇文章。 簡單來說就是盡量減少手動人力,將一些日常工作交給自動化工具。例如:環境建置、單元測試、日誌紀錄、產品部署。 我使用了哪些工具? Git - 版本管理 GitHub - 程式碼託管、審查 CircleCI - 自動化建置、測試、部署 Docker - 可攜式、輕量級的執行環境 AWS Elastic Beanstalk - 雲端平台 Slack - 團隊溝通、日誌、通知 看完這篇你可以學到什麼? 瞭解 GiHub 的工作流程( GitHub Flow ),利用 Pull Request 以及 分支 來完成 代碼審查 (Code Review)與 環境配置 ,例如:開發版(development)、測試版(testing/QA)、上線產品(staging/production)。 使用 Docker,統一開發者、測試人員、以及產品的執行環境。 使用 EB CLI 將應用程式部署到 AWS Elastic Beanstalk 平台上。 使用 CircleCI 將以上工作全部自動化。偵測 GitHub 分支上的程式碼,若有更新則觸發:建置 Docker 環境、單元測試、然後自動部署新版本到 AWS EB。 使用 Slack,讓團隊成員能夠即時接收 GitHub 與 CircleCI 每一項動作的通知。 內容大綱 Node.js 在本地端執行 Node.js 在本地端測試 Node.js GitHub CircleCI 在 CircleCI 測試 Node.js Code Review with GitHub Flow Docker 在 Docker 執行 Node.js 在 CircleCI 測試 Docker ...