# Release CI 整個產品由 4X 個專案購築而成,由於專案跑 Scrum,所以每隔兩周就會發版一次,由人工處理各專案的發版跟上線到各環境太慢也不穩定,所以開發腳本來自動執行。 ## 產品專案類型 * Parent pom(2) 管理 Maven 專案中,使用的第三方套件版本 * Domain package(2X) 將 Java Service 中,共用的功能和業務獨立成 Package ,託管在 Nexus Server ,讓需要的服務引用,總共 2X 個。 * Spring Cloud (10) 微服務的基礎架構共兩組,各別為官方網站和後台,有以下服務 * Config Server * Eureka * API Gateway * Admin Server * Config Repository * Java Service(8) 由 Spring Boot 開發的服務,根據職責拆開成 8 個服務 * Nginx(2) 作為前端的 Web Server 跟 API 的反向代理和負載均衡 * Angular 後台前端專案 * Vue3 前台前端專案 ## 工作順序 一. 發布 依據專案類型使用不同的 docker image 進行下列行為 ``` shellscript bash release.sh ``` 1. clone 指定的專案 2. 修改專案中 SNAPSHOT 為 RELEASE 並提交。(目前只有 Java 有用到) 3. 將目前 **master checkout** 為 **release/version** branch (version 為 versions 內定義的值) 4. build & publish 到 nexus server。(例如: jar) 5. 標記 tag 6. publish release branch 7. post release note to gitlab 二. 部屬 ``` shellscript bash deploy.sh ``` 1. clone 指定的專案 2. checkout 指定 release branch 中最新的 tag 3. build 4. deploy 到指定的機器上 5. 啟動服務 * 如果 artefacts 已經存在指定專案的版號目錄,則不會重複執行 三. 依據專案類型使用不同的 docker image 進行下列行為,基本上只有 Maven 專案有使用到 ``` shellscript bash snapshot.sh ``` 1. checkout master 2. 修改專案中 RELEASE 為下一個 SNAPSHOT 版號並提交。(目前只有 Java 有用到) 3. merge master to develop 4. deploy SNAPSHOT jar to nexus server
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up