包郵 enkins權威指南 Jenkins工具教程入門書籍 Jenkins運維 Jenki

包郵 enkins權威指南 Jenkins工具教程入門書籍 Jenkins運維 Jenki pdf epub mobi txt 電子書 下載 2025

[美] John Ferguson Smart(約 著
圖書標籤:
  • Jenkins
  • 持續集成
  • 持續交付
  • DevOps
  • 自動化
  • 運維
  • 工具
  • 教程
  • 入門
  • 包郵
想要找書就要到 靜流書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
店鋪: 蘭興達圖書專營店
齣版社: 電子工業齣版社
ISBN:9787121299063
商品編碼:11284533712
包裝:平裝
齣版時間:2016-10-01

具體描述

基本信息

書名:Jenkins指南

:89.00元

作者: John Ferguson Smart(約翰·弗格森·

齣版社:電子工業齣版社

齣版日期:2016-10-01

ISBN:9787121299063

字數:

頁碼:408

版次:1

裝幀:平裝

開本:16開

商品重量:0.4kg

編輯推薦


通過本書你將學到以下內容。

n

√學習如何安裝、配置和安全加固你的Jenkins服務器

n

√組織管理和監控通用的構建作業

n

√集成自動化測試來驗證構建,並建立代碼質量報告

n

√建立有效的團隊通知策略和技術

n

√配置構建管道、參數化的作業、矩陣構建和其他高級作業

n

√管理多個Jenkins服務器來運行分布式構建

n

√完成自動化部署和持續交付

n


內容提要


本書從實踐者的角度,在講解Jenkins基本原理的同時,深入到持續集成、持續交付領域,為讀者梳理齣如何使用Jenkins設計和實現一個自動化的、周期性的集成測試過程,幫助讀者理解Jenkins適用於什麼場景。書中首先介紹Jenkins以及持續集成、持續交付的基礎知識;然後安裝Jenkins和配置Jenkins服務器,使用Jenkins建立構建作業、進行自動化測試,介紹Jenkins支持的幾種安全模式,如何使用Jenkins進行消息通知,如何確保代碼質量;後進階展示如何建立高級的和分布式的構建,如何進行自動化的部署和交付以及對Jenkins的運維。

目錄


序 xvii
前言 xix
第1 章 Jenkins 簡介 1
簡介 1
持續集成基礎 1
Jenkins 簡介(née Hudson) 3
從Hudso到Jenkins――一個簡短的故事 3
應該使用Jenkins 還是Hudso 4
引進持續集成到你的公司 5
階段1――無構建服務器 5
階段2――夜間構建 6
階段3――夜間構建加自動化測試 6
階段4――加入度量指標 6
階段5――更認真地對待測試 6
階段6――自動化驗收測試和自動化部署 7
階段7――持續部署 7
接下來做什麼呢 7
第2 章 邁入Jenkins 的步 9
簡介 9
準備環境 9
安裝Java 10
安裝Git 11
創建GitHub 賬號 11
配置SSH 密鑰 11
創建代碼庫分支 12
啓動Jenkins 13
配置工具 17
配置你的Mave設置 18
配置K 19
通知 20
設置Git 20
你的個Jenkins 構建作業 21
你的個構建作業 26
更多的報告――顯示Javadoc 33
添加代碼覆蓋率和其他度量 34
小結 40
第3 章 安裝Jenkins 41
簡介 41
下載和安裝Jenkins 41
為Jenkins 準備好構建服務器 44
Jenkins 主目錄 45
在Debia或者Ubuntu 係統上安裝Jenkins 47
在Red Hat、Fedora 或者CentOS 上安裝Jenkins 48
在SUSE 或者OpenSUSE 上安裝Jenkins 49
以單機應用形式運行Jenkins 49
基於Apache 服務器運行Jenkins 53
在應用服務器上運行Jenkins 54
內存方麵的考慮 54
安裝Jenkins 為一個Windows 服務 55
Jenkins 主目錄裏有什麼 59
備份Jenkins 數據 62
升級Jenkins 安裝 63
小結 64
第4 章 配置Jenkins 服務器 65
簡介 65
配置麵闆――Manage Jenkins 界麵 65
配置係統環境 68
配置全局屬性 69
配置K 70
配置構建工具 72
Mave 73
Ant 74
Shell 腳本 75
配置版本控製工具 75
配置Subversio 75
配置CVS 75
配置郵件服務器 76
配置代理 77
小結 78
第5 章 設置構建作業 79
簡介 79
Jenkins 構建作業 79
創建自由式構建作業 80
通用選項 81
高級項目選項 82
配置源代碼管理 83
用Subversio工作 84
使用Git 86
Build Triggers 96
構建作業完成後觸發下一個 97
計劃構建作業 97
輪詢SCM 98
遠程觸發構建 99
手工構建作業 101
構建步驟 101
Mave構建步驟 102
Ant 構建步驟 103
執行Shell 或Windows 批處理命令 104
在構建中使用Jenkins 環境變量 105
運行Groovy 腳本 108
用其他語言構建項目 110
構建後的操作 110
報告測試結果 110
歸檔構建産物 110
通知 114
構建其他的項目 114
運行新的構建作業 115
使用Mave構建作業 115
每當SNAPSHOT(快照)依賴被建立時都要進行構建 116
配置Mave構建 116
構建後期操作 118
部署到企業倉庫管理器 118
部署到商業企業倉庫管理器 122
管理模塊 122
Mave構建作業中額外的構建步驟 122
用其他語言使用Jenkins 124
用Grails 構建項目 124
用Gradle 構建項目 126
用Visual Studio MSBuild 構建項目 129
用NAnt 構建項目 130
使用Ruby 和Ruby oRails 構建項目 130
小結 132
第6 章 自動化測試 133
簡介 133
自動化單元和集成測試 134
在Jenkins 中配置測試報告 135
顯示測試結果 137
忽略測試 140
代碼覆蓋率 142
使用Cobertura 測量代碼覆蓋率 143
使用Clover 測量代碼覆蓋率 152
自動化驗收測試 154
JMeter 自動化性能測試 157
請求幫助!我的測試運行得太慢瞭 165
添加更多的硬件 166
運行更少的集成/ 功能測試 166
並行運行測試 167
小結 167
第7 章 Jenkins 安全 169
簡介 169
激活Jenkins 安全 169
Jenkins 安全實例 170
安全域――定義Jenkins 用戶 171
使用Jenkins 內置用戶數據庫 171
使用LDAP 倉庫 174
使用微軟活動目錄 176
使用UNIX 用戶和用戶組 177
Servlet 容器授權 177
使用AtlassiaCrowd 178
與其他係統集成 179
授權――誰可以做什麼 181
安全矩陣 181
基於項目的安全 185
基於角色的安全 188
審計――跟蹤用戶行為 190
小結 193
第8 章 通知 195
簡介 195
電子郵件通知 195
更高級的電子郵件通知 197
聲明構建 200
RSS 訂閱 202
構建分發器 202
即時消息 204
用Jabber 進行IM 通知 204
使用IRC 的IM 通知 209
IRC 通知 209
桌麵通知器 212
通過Notifo 通知 213
移動通知 216
短信通知 216
製造噪聲 219
反饋設備 221
小結 222
第9 章 代碼質量 225
簡介 225
構建過程中的代碼質量 226
受歡迎的Java 和Groovy 代碼質量分析工具 227
Checkstyle 227
PMD/CPD 230
FindBugs 235
CodeNarc 237
使用Violations 插件報告代碼質量問題 238
與自由風格下的構建作業一起工作 239
使用Mave構建作業 242
使用Checkstyle、PMD 和FindBugs 報告 244
報告代碼復雜度 247
報告未完成的任務 248
集成Sonar 249
小結 253
第10 章 高級構建 255
簡介 255
參數化構建作業 255
創建一個參數化構建作業 256
為構建適配參數化構建腳本 257
高級參數類型 259
使用Subversio標簽構建 260
使用Git 標簽構建 261
遠程啓動參數化構建作業 262
參數化構建作業曆史 263
參數化觸發263
多重結構的構建作業 266
搭建多重結構構建 266
配置從節點軸 267
配置K 軸 268
自定義軸 268
執行多重結構構建 268
自動生成Mave構建作業 271
配置作業 271
使用繼承復用作業配置 273
插件支持 275
自由式作業 278
構建協作 278
在Jenkins 中並行構建 279
依賴關係圖 279
連接 280
Locks and Latches 插件 281
構建管道及優化 282
通過M2Release 插件管理Mave版本發布 283
復製構建産物 286
構建進階 289
匯總測試結果 295
構建管道 296
小結 299
第11 章 分布式構建 301
簡介 301
Jenkins 分布式構建架構 301
Jenkins 主/ 從策略 302
主節點使用SSH 啓動從節點代理 303
使用Java Web Start 手工啓動從代理 307
把Jenkins 從節點安裝為Windows 服務 309
無主節點模式啓動從節點 310
以遠程服務方式啓動Windows 從節點 310
把構建作業與一個或一組從節點關聯 311
節點監控 313
雲計算 314
使用AmazoEC2 314
使用CloudBees DEV@cloud 服務 318
小結 319
第12 章 自動化部署和持續交付 321
簡介 . 321
實現自動化和持續部署 322
部署腳本 322
數據庫更新 322
冒煙測試 325
迴滾更改 326
部署到應用程序服務器上 326
部署一個Java 應用 327
部署像Ruby 和PHP 這樣基於腳本的應用程序 336
小結 339
第13 章 Jenkins 的維護341
簡介 341
監控磁盤空間 341
使用Disk Usage 插件 343
磁盤使用及Jenkins Mave項目類型 344
監控服務器負載 345
備份配置 346
Jenkins 備份基礎 346
使用備份插件 348
更為輕量的自動備份 350
構建作業歸檔 350
構建遷移 351
小結 355
附錄A 自動化你的單元和集成測試 357
索引 367

作者介紹


JohFergusoSmart,Wakaleo Consulting的主管,幫助一些公司優化瞭他們的Java開發實踐和基礎架構。他提供一些在敏捷開發和測試實踐上的培訓和指導,比如持續集成,測試驅動開發,構建自動化和持續部署。

文摘


序言



《DevOps實戰:從零開始掌握自動化構建、測試與部署》 內容簡介 在當今快速迭代的軟件開發周期中,效率和穩定性是成功的關鍵。本書旨在為廣大軟件工程師、運維人員、項目經理以及任何希望深入瞭解並實踐DevOps理念的讀者,提供一套係統、詳盡且具有高度實操性的自動化交付流程構建指南。我們不隻是介紹工具,更側重於流程的優化、團隊協作的提升以及文化理念的滲透,幫助您建立一套高效、可靠、可持續的軟件交付體係,從而顯著縮短産品上市時間,提升軟件質量,降低運營成本。 本書將從DevOps的核心理念齣發,逐步深入到各個關鍵技術環節,通過豐富的案例分析和實踐指導,讓讀者能夠真正掌握如何將自動化貫穿於軟件開發的整個生命周期。我們避免瞭空泛的理論闡述,而是聚焦於解決實際問題,提供可落地、可復用的解決方案。 第一部分:DevOps理念與實踐基礎 本部分將為您奠定堅實的DevOps理論基礎,並引導您理解DevOps的真正價值所在。 第一章:DevOps的起源與發展:為何需要DevOps? 傳統開發模式的瓶頸:瀑布模型、敏捷開發的局限性。 DevOps的誕生:解決開發與運維之間的“牆”。 DevOps的核心原則:CAMS(Culture, Automation, Measurement, Sharing)。 DevOps帶來的益處:加速交付、提高穩定性、降低風險、提升協作。 DevOps的演進:從CI/CD到全鏈路自動化。 DevOps文化的塑造:打破孤島,建立信任與協作。 第二章:構建DevOps團隊與文化:協作是基石 敏捷與DevOps的結閤: Scrum、Kanban在DevOps中的應用。 跨職能團隊的組建與管理。 溝通與協作工具的選擇與使用:Slack、Microsoft Teams、Mattermost等。 持續反饋與學習的機製:站會、迴顧會議、知識分享。 擁抱失敗,鼓勵創新:建立安全的試錯環境。 度量驅動決策:識彆關鍵指標,用數據指導改進。 第二部分:自動化構建的藝術:高效的代碼集成 持續集成(CI)是DevOps流程的起點,它確保代碼能夠頻繁、可靠地集成到主乾,並進行自動化構建和初步驗證。 第三章:源代碼管理與分支策略:版本控製的實踐藝術 Git核心概念與常用命令迴顧。 Gitflow、GitHub Flow、GitLab Flow等主流分支策略的詳解與優劣分析。 如何製定適閤團隊的分支策略。 代碼審查(Code Review)的重要性與最佳實踐。 Pull Request/Merge Request的工作流程。 第四章:構建工具的選擇與配置:自動化構建的引擎 Maven、Gradle(Java領域)、npm、Yarn(JavaScript領域)、pip(Python領域)、Go Modules(Go領域)等主流構建工具的介紹。 (本節重點不涵蓋Jenkins,而是聚焦於其他構建工具本身的功能、配置與最佳實踐,例如如何編寫有效的pom.xml,build.gradle,package.json文件,如何管理依賴,如何進行單元測試集成等) 構建腳本的編寫與優化:提高構建速度與效率。 構建産物的管理與打包:JAR, WAR, Docker Image, NPM package等。 第五章:持續集成(CI)服務器的原理與實踐:自動化集成的核心 (本節將深入介紹CI服務器的核心工作原理,包括代碼拉取、觸發構建、執行腳本、生成報告等。我們將提供通用的CI流程設計思路,並以一種通用、非特定工具的方式來闡述CI流程的各個環節,重點在於理解CI流程本身如何運作,而不是某個特定工具的UI操作。) CI流程的設計:觸發條件、構建步驟、集成測試、通知機製。 構建失敗的應對策略:快速定位問題,及時修復。 構建曆史記錄與分析:識彆構建趨勢,優化構建性能。 與IDE的集成:提升開發效率。 第三部分:自動化測試的實踐:保障軟件質量 自動化測試是DevOps流程中不可或缺的一環,它能夠快速發現並驗證代碼中的缺陷,確保軟件的穩定性和可靠性。 第六章:單元測試:代碼質量的第一道防綫 單元測試的原則與設計模式:TDD(測試驅動開發)、BDD(行為驅動開發)簡介。 主流語言的單元測試框架:JUnit, TestNG (Java), Mocha, Jest (JavaScript), Pytest (Python), GoConvey (Go) 等。 編寫高質量單元測試的技巧:覆蓋率、可維護性、可讀性。 如何將單元測試集成到CI流程中。 第七章:集成測試:驗證模塊間的協作 集成測試的目的與類型。 服務間接口測試:RESTful API、gRPC等。 數據庫集成測試:數據準備與驗證。 模擬(Mocking)與樁(Stubbing)在集成測試中的應用。 集成測試框架與工具。 第八章:端到端(End-to-End)測試:模擬用戶真實場景 端到端測試的價值與挑戰。 UI自動化測試框架:Selenium, Cypress, Playwright等。 API自動化測試:Postman, Newman, Karate DSL等。 測試環境的搭建與管理。 如何編寫穩定且易於維護的E2E測試用例。 第九章:其他自動化測試類型:性能、安全與兼容性 性能測試:LoadRunner, JMeter, K6等工具介紹與應用。 安全測試:OWASP Top 10,自動化安全掃描工具簡介。 兼容性測試:跨瀏覽器、跨平颱測試策略。 缺陷管理與跟蹤:與Bugzilla, Jira等工具集成。 第四部分:自動化部署與發布:流暢的交付流程 持續交付(CD)與持續部署(CD)是DevOps流程的升華,它們將經過驗證的代碼自動、安全地部署到生産環境。 第十章:容器化技術:Docker與Kubernetes的基礎 Docker的核心概念:鏡像、容器、Dockerfile。 編寫高效的Dockerfile。 Docker Compose:編排多容器應用。 Kubernetes核心概念:Pod, Deployment, Service, Namespace。 (本節將側重於容器化技術本身的原理、使用方法及最佳實踐,而非特定工具的部署過程。) 容器化應用的網絡與存儲。 第十一章:配置管理:實現環境的一緻性 配置管理的重要性:解決“在我機器上可以運行”的問題。 Ansible, Chef, Puppet等主流配置管理工具的原理與使用。 (本節將側重於配置管理工具的核心功能,如模塊、Playbook/Cookbook/Manifest的編寫,狀態管理,冪等性,以及如何用它們來自動化部署應用和管理服務器。) 參數化配置與安全敏感信息的管理。 第十二章:流水綫(Pipeline)的設計與實現:自動化交付的路徑 (本節將詳細闡述流水綫的設計理念,如何將構建、測試、部署等各個環節串聯起來。我們將以通用流程圖和邏輯描述為主,重點在於流水綫的設計模式、 Stages, Steps, Stages 的概念,以及如何定義流水綫中的各個任務及其依賴關係。我們將強調不同階段的産物如何傳遞,以及如何通過流水綫實現快速、可靠的交付。具體工具的使用將作為實現流水綫的一種方式來提及,但核心在於理解流水綫本身的架構和工作流程。) 流水綫的設計原則:模塊化、可重用性、可視化。 流水綫中的關鍵階段:構建、測試、掃描、部署。 流水綫觸發條件:定時、代碼提交、手動觸發。 流水綫執行監控與故障排查。 第十三章:部署策略與實踐:安全、高效的上綫 藍綠部署(Blue/Green Deployment)。 金絲雀發布(Canary Release)。 滾動更新(Rolling Update)。 A/B測試在部署中的應用。 自動化迴滾策略:當部署齣現問題時如何快速恢復。 第五部分:運維監控與反饋:持續改進的閉環 DevOps不僅僅是開發,更是開發與運維的融閤,有效的監控與反饋機製是實現持續改進的關鍵。 第十四章:日誌管理:數據的海洋,洞察的來源 日誌的重要性:故障排查、性能分析、安全審計。 ELK Stack (Elasticsearch, Logstash, Kibana), Loki, Graylog等日誌聚閤與分析工具。 結構化日誌的編寫與收集。 日誌可視化與告警。 第十五章:指標監控:量化係統健康度 監控的關鍵指標:CPU、內存、磁盤、網絡、應用性能指標(APM)。 Prometheus, Grafana, Zabbix等監控係統。 服務健康檢查與存活探針(Liveness/Readiness Probes)。 自定義指標的采集與展示。 第十六章:告警與事件響應:及時發現與處理問題 告警策略的製定:閾值、告警級彆、抑製規則。 告警通知方式:郵件、短信、Slack、PagerDuty。 事件響應流程與Playbook。 事後分析(Postmortem)與經驗總結。 第六部分:DevOps的未來趨勢與實踐總結 第十七章:走嚮更高層次的DevOps:GitOps、Service Mesh與Serverless GitOps:將Git作為聲明式基礎設施和應用的唯一可信來源。 Service Mesh:Istio, Linkerd等,實現微服務間的流量管理、安全與可觀測性。 Serverless架構對DevOps的影響。 第十八章:DevOps的持續改進之路:文化、流程與工具的迭代 如何評估DevOps成熟度。 建立持續學習與改進的文化。 DevOps在不同規模和類型的項目中的應用。 總結與展望。 本書內容覆蓋瞭DevOps實踐中的核心技術和理念,通過係統性的講解和豐富的實戰案例,希望能幫助讀者構建起屬於自己的自動化交付體係,從而在日新月異的軟件開發領域保持競爭力。

用戶評價

評分

這本書的編排邏輯非常貼閤一個項目從原型到成熟生命周期的演進過程。它不僅僅關注構建和部署,還花瞭很大篇幅來討論如何管理“配置漂移”和實現環境間的“一緻性”。我感觸最深的是關於“配置即代碼”(Configuration as Code)的實踐部分。作者沒有停留在單純地使用Pipeline腳本,而是深入探討瞭如何使用外部配置管理工具(比如Vault或Consul)與進行無縫集成,確保開發、測試、預發布和生産環境的配置差異是可追蹤、可審計的。這種對DevOps深層理念的貫徹,讓這本書從一本單純的工具指南,升華成瞭一本企業級自動化實踐的參考手冊。對於那些正在努力實現完全自動化、零停機部署的團隊來說,這本書提供的不僅僅是技術指導,更是一種成熟的、可落地的管理框架。它解答瞭“如何纔能真正做到敏捷和可靠”這個終極問題。

評分

這本書的排版和案例演示達到瞭一個非常高的水準,這對於技術書籍來說太重要瞭。我發現很多技術書的作者要麼文字功底太弱,導緻代碼和解釋脫節;要麼就是案例過於簡單,脫離實際復雜場景。但這本則完美地平衡瞭兩者。每一個新的概念,比如參數化構建、環境上下文的傳遞,都有一個清晰的、從零開始的步驟圖解。我尤其喜歡它關於“分布式構建”的章節。我們公司有全球部署的需求,需要在不同地域的Agent上執行特定的部署邏輯。書中詳細對比瞭使用Shared Libraries與直接在項目中嵌入Groovy腳本的優缺點,並且提供瞭一個基於Git分支策略來動態加載不同配置庫的實戰方案。這個方案我馬上復製並根據我們自己的基礎設施做瞭微調,效果立竿見影。對於那些在復雜組織架構下推行CI/CD的工程師來說,這本書提供瞭極具參考價值的架構藍圖,它教會你如何構建一個“可擴展”的平颱,而不是一個“一次性”的腳本集閤。

評分

坦白講,我一開始是被“入門教程”這個標簽吸引的,但讀下去發現,它對“調試與故障排除”的深度遠遠超齣瞭我的預期。很多工具的“入門書”往往在齣現問題時就束手無策瞭。然而,這本書用大量的篇幅專門講解瞭如何深入到構建日誌的底層,如何利用內置的`catchError`塊進行精確的錯誤捕獲,以及如何配置Webhook來與其他監控係統進行實時聯動。我記得有一次我們遇到瞭一個非常詭異的超時問題,涉及到網絡代理和JVM內存設置的微妙平衡,單純看錯誤碼根本無法定位。正是書中關於如何啓用詳細的調試模式,以及如何分析Agent運行時的係統級日誌的指導,幫助我快速鎖定瞭問題的根源——原來是Agent的JVM參數配置不當導緻的資源競爭。這種“授人以漁”的調試思路,比單純提供幾個“修復命令”要有價值得多。這本書讓你從一個被動接收錯誤的執行者,轉變為一個主動分析和優化係統的架構師。

評分

作為一名多年的運維工程師,我對各種自動化工具都抱有過期望又失望過。直到我翻開瞭這本關於持續集成核心概念的書,我纔真正體會到什麼叫“權威”。這本書的厲害之處在於,它沒有沉迷於錶麵的功能展示,而是非常紮實地搭建瞭整個生態的底層認知框架。我特彆欣賞它對“安全掃描集成”和“憑證管理”那一章節的處理。在過去,我們總是把安全環節看得非常邊緣化,用一些粗糙的Shell腳本來勉強支撐。但書裏清晰地展示瞭如何利用內置或第三方插件,在構建的不同階段嵌入靜態代碼分析、依賴漏洞掃描,並且如何安全、規範地在Agent上注入或銷毀敏感密鑰。這種係統性的安全思維的植入,對於提升整個團隊對“安全左移”的理解至關重要。讀完後,我立刻組織瞭一場內部培訓,把書中關於安全最佳實踐的部分作為核心內容進行瞭分享。這本書的知識體係非常完整,適閤那些想要從“會用”升級到“精通”的人。

評分

天呐,這本書簡直是開發部署領域的“救命稻草”!我最近接手瞭一個老舊的項目,光是理解那個混亂的CI/CD流程就讓我焦頭爛額。我當時急需一本既有理論深度又不失實戰指導的材料,結果找到瞭它。拿到書的那一刻,我最驚喜的是它對構建流水綫(Pipeline)的講解細緻入微。很多教程隻會告訴你“這麼寫”,但這本書深入剖析瞭Groovy腳本在Pipeline DSL中的應用,讓我明白瞭為什麼某些步驟會失敗,以及如何優雅地處理異常和條件分支。特彆是關於Agent的配置,從Slave節點的動態分配到Label的精確匹配,作者的講解讓我徹底擺脫瞭過去那種“碰運氣”的部署模式。看完前幾章,我就動手重構瞭我們現有的一個核心服務的部署流程,效率提升瞭至少30%,而且關鍵是,現在連團隊裏剛入職的新人都能夠快速上手維護這個復雜的流程瞭。如果你的目標不僅僅是“能跑起來”,而是追求構建係統的健壯性和可維護性,這本書絕對值得你收藏。它不僅僅是一本工具手冊,更像是一本關於現代化軟件交付哲學的教材。

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.coffeedeals.club All Rights Reserved. 靜流書站 版權所有