久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

Jenkins集群部署與代碼發(fā)布流水線實戰(zhàn)指南

Jenkins集群部署與代碼發(fā)布流水線實戰(zhàn)指南 接手這套構(gòu)建發(fā)布系統(tǒng)的時候老板只丟過來一句話現(xiàn)在好幾個項目組都在搶 Jenkins動不動就卡隊列你想想辦法。這句話基本概括了大多數(shù)團隊從 Jenkins 單機走向集群的真實場景——不是趕時髦而是被并發(fā)任務逼出來的。后來我基于 Jenkins 官方推薦的 Controller/Agent 架構(gòu)把原有的單機實例改造成了集群部署同時梳理了一套代碼發(fā)布流程從源碼拉取、編譯、鏡像構(gòu)建到遠程發(fā)布全部串成流水線。這篇文章就是我整理出來的實戰(zhàn)文檔包含集群搭建的完整步驟、憑據(jù)與環(huán)境變量的處理方式、批量取消排隊任務的小技巧以及日常運維最容易踩到的坑。目標讀者是那些已經(jīng)用過 Jenkins 基礎功能、希望解決單點瓶頸或想把發(fā)布流程規(guī)范化的同學文章里的命令和腳本都來自真實環(huán)境可以直接拿過去改改就用。1. 項目背景與整體設計1.1 單機 Jenkins 的瓶頸為什么要拆成集群團隊剛開始用 Jenkins 的時候只有一個單機實例。你甚至不需要專門配一臺服務器隨便一臺 4C8G 的虛擬機就能跑。任務量小的時候master 上既跑 Web 界面又跑構(gòu)建任務感覺也沒啥問題。直到有一天你發(fā)現(xiàn)構(gòu)建隊列里堆了幾十個任務點一下立即構(gòu)建要等十分鐘才輪到某個項目的測試用例寫得稀爛把整個 master 的 CPU 打到 100%其他組的人想點一下構(gòu)建按鈕都卡半天。單機 Jenkins 的瓶頸不只是資源問題還有嚴重的隔離問題。所有構(gòu)建任務都在同一臺機器上執(zhí)行A 項目的構(gòu)建腳本如果執(zhí)行了sudo rm -rf /你整個 Jenkins 數(shù)據(jù)目錄都有可能被帶走。就算不出現(xiàn)這么極端的情況兩個項目依賴同一個 Maven 本地倉庫、同一個 npm 緩存目錄也經(jīng)常出現(xiàn)版本互相污染的問題。還有一點容易被忽視單機部署意味著 master 掛了整個發(fā)布能力就沒了。任何人想回滾一個版本、緊急修一個線上 bug都得眼巴巴等運維把 Jenkins 服務拉起來。所以當并發(fā)量和團隊規(guī)模到一定程度單機必然要轉(zhuǎn)集群。集群帶來的收益很直接任務分散到多臺 agent 上執(zhí)行master 只負責調(diào)度和數(shù)據(jù)存儲不會因為某個構(gòu)建任務失控而拖垮整個系統(tǒng)不同技術(shù)棧的構(gòu)建環(huán)境可以按標簽隔離比如 Java 項目跑在帶java-agent標簽的機器上前端項目跑在帶node-agent標簽的機器上互不干擾而且單臺 agent 掛了隊列里的任務會自動找其他可用節(jié)點可用性比單機高一個量級。1.2 整體架構(gòu)與組件選型我最終采用的是 Jenkins 官方推薦的 Controller/Agent 架構(gòu)也就是你常聽到的 Master/Agent。Master 節(jié)點負責 Web 控制臺、任務調(diào)度、憑據(jù)管理、構(gòu)建記錄存儲原則上不跑具體的構(gòu)建邏輯Agent 節(jié)點負責真正執(zhí)行流水線里的各個 stage比如拉代碼、編譯、跑測試、構(gòu)建鏡像、遠程發(fā)布。架構(gòu)圖不用畫得太復雜核心就三塊一臺 master、多臺 agent、一個共享存儲目錄。為什么不搞多個 master很多人的第一反應是搞兩臺 Jenkins 做高可用一個掛了另一個頂上。但多 master 的維護成本非常高插件配置、憑據(jù)同步、任務配置復制全是額外的工作量而且 Jenkins 的架構(gòu)設計里橫向擴展 agent 才是更合理的姿勢。一臺 master 加上一堆帶標簽的 agent已經(jīng)能應對絕大多數(shù)團隊的需求。如果到了 master 本身成了瓶頸的那一天再考慮 Jenkins 官方推薦的 HA 方案或者遷移到 Kubernetes 動態(tài)構(gòu)建環(huán)境也不遲。Agent 有兩種接入方式SSH 方式和 JNLP 方式。我在生產(chǎn)環(huán)境里用的是 SSH 方式master 主動通過 SSH 連接 agent然后拉起 agent 進程。這種方式配置直觀網(wǎng)絡環(huán)境也好控制只要 master 能訪問 agent 的 22 端口就夠了。JNLP 方式適合 agent 在另一個隔離網(wǎng)絡的場景agent 主動反向連接 master后面我會詳細說這兩種方式的利弊。組件選型方面我的原則是夠用就好。沒有一上來就上 Kubernetes 插件、動態(tài) Pod而是先用手頭的幾臺固定 agent 把流程跑通。構(gòu)建環(huán)境里統(tǒng)一裝 JDK 17、Maven、Node.js 18、Docker CLI共享目錄放在/mnt/jenkins_shared用來存放依賴緩存和跨節(jié)點傳遞的產(chǎn)物。這套組合在中小規(guī)模團隊里已經(jīng)非常穩(wěn)等確實需要彈性擴縮容的時候再引入 Kubernetes 動態(tài) agent 也不遲。2. 集群部署實操環(huán)境準備與安裝2.1 節(jié)點規(guī)劃與系統(tǒng)準備先規(guī)劃機器這步容易被人忽略但直接決定了后面集群好不好用。我的建議是 master 獨立一臺配置不用太高4C8G 起步就夠了因為 master 只做調(diào)度而不跑構(gòu)建agent 節(jié)點按實際構(gòu)建需求來編譯 Java 服務或者跑前端構(gòu)建的8C16G 是比較舒服的配置如果你要并行跑多個任務內(nèi)存可以再加。操作系統(tǒng)我優(yōu)先選 Ubuntu 20.04 或 22.04因為依賴安裝方便glibc 版本新老一點的 CentOS 7.9 也能用但 Java 17 和部分工具鏈在 CentOS 7 上可能會有坑。系統(tǒng)準備階段先把基礎工具裝好。下面的命令在 master 和所有 agent 上都執(zhí)行一遍sudo apt update sudo apt install -y openjdk-17-jre git curl unzip rsync java -version如果你用的是 CentOS 系sudo yum install -y java-17-openjdk git curl unzip rsync java -version這里有個細節(jié)不要只裝 JRE很多 Jenkins 操作和構(gòu)建任務會用到keytool、jarsigner這類 JDK 自帶的工具直接用openjdk-17-jdk更省心。同時建議創(chuàng)建統(tǒng)一的運行用戶我習慣叫jenkins避免直接用 root 跑構(gòu)建任務sudo useradd -m -d /var/lib/jenkins -s /bin/bash jenkins sudo mkdir -p /mnt/jenkins_shared sudo chown jenkins:jenkins /mnt/jenkins_shared目錄規(guī)劃上JENKINS_HOME放在/var/lib/jenkins構(gòu)建緩存放在/mnt/jenkins_shared。這樣 master 的系統(tǒng)盤和數(shù)據(jù)盤可以分離后續(xù)即使系統(tǒng)盤出問題數(shù)據(jù)依然安全。如果你有多塊磁盤強烈建議把/mnt/jenkins_shared掛載到獨立數(shù)據(jù)盤。2.2 Master 安裝與初始化流程Jenkins 官方推薦用 deb 包或 rpm 包安裝但對國內(nèi)網(wǎng)絡環(huán)境來說清華鏡像直接下載 war 包反而更穩(wěn)定。我在生產(chǎn)環(huán)境就是這樣干的sudo mkdir -p /opt/jenkins cd /opt/jenkins sudo wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.452.3/jenkins.war然后用 systemd 管理 Jenkins 進程。這里我要強烈建議你用 systemd 而不是直接用java -jar jenkins.war啟動因為 systemd 能提供守護進程、崩潰自動重啟、日志管理省掉你手動搞 nohup 和 pid 文件的麻煩。[Unit] DescriptionJenkins Controller Afternetwork.target [Service] Userjenkins Groupjenkins EnvironmentJENKINS_HOME/var/lib/jenkins EnvironmentJAVA_OPTS-Xms512m -Xmx2g ExecStart/usr/bin/java -Xms512m -Xmx2g -jar /opt/jenkins/jenkins.war --httpPort8080 --webroot/var/cache/jenkins/war Restarton-failure [Install] WantedBymulti-user.target把jenkins.service放到/etc/systemd/system/目錄后sudo systemctl daemon-reload sudo systemctl enable --now jenkins sudo tail -f /var/log/syslog | grep jenkins第一次啟動完成后打開http://master-ip:8080Jenkins 會要求輸入初始密碼。這個密碼在 master 的本地文件里sudo cat /var/lib/jenkins/secrets/initialAdminPassword初始化階段 Jenkins 會問你要裝哪些插件。新手會直接點 Install suggested plugins但我建議你冷靜一下裝精簡集合。你真正需要的插件其實不多Pipeline、Git、Credentials Binding、SSH Agent、SSH Pipeline Steps、Timestamper。裝太多插件會讓啟動變慢而且插件之間版本沖突非常鬧心。后面要用什么再裝什么保持插件列表干凈是 Jenkins 長期穩(wěn)定的關(guān)鍵。初始化完成后建議順手確認一下Manage Jenkins - Security里的設置。生產(chǎn)環(huán)境不要開 Anyone can do anything至少要開啟登錄后才能操作并且關(guān)閉掉不必要的匿名權(quán)限。CSRF 保護默認是開著的反向代理配置不當?shù)脑捄竺鏁霈F(xiàn) 403 問題這個我在排查清單里會專門講。2.3 Agent 節(jié)點接入與連接方式實戰(zhàn)Agent 接入是整個集群搭建里最核心的一步也是很多人第一次踩坑的地方。我先說 SSH 方式因為這是我最推薦的做法。進入Manage Jenkins - Nodes - New Node填節(jié)點名稱比如agent-node1類型選擇 Permanent Agent。然后在配置頁里設置Remote root directory/home/jenkins/agentLabelsnode javaLaunch methodLaunch agents via SSHHostagent 的實際 IP比如192.168.1.21Credentials添加一個SSH Username with private key類型的憑據(jù)用戶名填jenkins私鑰選 master 上生成的 SSH 私鑰在 master 上生成 SSH 密鑰對并分發(fā)到 agentsudo -u jenkins ssh-keygen -t ed25519 -N -f /var/lib/jenkins/.ssh/id_ed25519 sudo -u jenkins ssh-copy-id -i /var/lib/jenkins/.ssh/id_ed25519.pub jenkins192.168.1.21這步有個坑ssh-copy-id需要 agent 上已經(jīng)允許jenkins用戶登錄如果你用的是一臺全新的服務器先手動設置一下/etc/ssh/sshd_config里的PasswordAuthentication yes等密鑰分發(fā)成功后可以再關(guān)掉。分發(fā)完密鑰回到 Jenkins 頁面點保存再試一下 Launch agent如果能從離線變成在線就說明連接成功了。SSH 方式的優(yōu)勢在于master 主動連 agent只要有 22 端口通就行agent 不需要額外安裝任何 Jenkins 客戶端而且密鑰是放在 master 的憑據(jù)庫里管理方便。缺點是如果 master 到 agent 的網(wǎng)絡不通或者有防火墻限制就費勁了。這時候你改用 JNLP 方式agent 主動向 master 發(fā)起連接。JNLP 方式的連接命令長這樣curl -sO http://jenkins-master:8080/jnlpJars/agent.jar java -jar agent.jar -url http://jenkins-master:8080 -secret secret-token -name agent-node2 -workDir /home/jenkins/agent這里secret-token可以在節(jié)點的配置詳情頁找到。JNLP 方式不需要 master 能訪問 agent反而要求 agent 能訪問 master所以適合 agent 在云上、在別的機房、網(wǎng)絡隔離比較嚴格的場景。但 JNLP 有個煩人的地方如果 master 的公網(wǎng)地址換了一個端口agent 就得重新指定-url參數(shù)維護成本稍高。無論用哪種方式我都要強調(diào)一點agent 是一臺獨立的構(gòu)建機所有構(gòu)建需要用到的工具鏈都必須在 agent 上裝好而不是在 master 上裝。常見的問題是有人新加了 agent 節(jié)點結(jié)果流水線一直報找不到mvn、找不到node排查下來發(fā)現(xiàn) agent 上根本沒裝這些工具。我一般會在每個 agent 的 labels 里標明技術(shù)棧比如node、java、docker流水線里用agent { label node }去精確調(diào)度這個習慣能省掉很多莫名其妙的故障。3. 核心配置Credentials、環(huán)境變量與代碼發(fā)布流程3.1 Credentials 配置的正確姿勢與避坑Jenkins 里的憑據(jù)配置看著簡單但一旦用錯排查起來能讓你懷疑人生。我的原則只有一個任何密碼、token、私鑰都不準出現(xiàn)在 Jenkinsfile 里。說白了把密碼明文寫在流水線腳本里等于把密鑰直接暴露給所有能看到 Jenkins 源碼倉庫的人而且日志里到處都是。憑據(jù)在Manage Jenkins - Credentials - System - Global credentials下創(chuàng)建。常見類型和用途如下憑據(jù)類型用途典型場景Username with password用戶名密碼認證Git 私有倉庫、HTTP 接口賬號SSH Username with private keySSH 認證Git 倉庫、SSH 發(fā)布到服務器Secret textAPI tokenRegistry 登錄 token、Webhook 密鑰Secret file文件型密鑰kubeconfig、云平臺憑證文件在流水線里使用憑據(jù)最標準的方式是withCredentials或者credentials()綁定。比如 SSH 發(fā)布到遠程服務器stage(Deploy) { steps { withCredentials([sshUserPrivateKey( credentialsId: prod-deploy-key, keyFileVariable: SSH_KEY )]) { sh scp -i $SSH_KEY -o StrictHostKeyCheckingno -r dist/* deployprod-server:/opt/app/demo ssh -i $SSH_KEY -o StrictHostKeyCheckingno deployprod-server systemctl restart demo } } }注意幾個細節(jié)。第一憑據(jù) ID 盡量用小寫字母加橫線比如prod-deploy-key不要用中文或者帶空格。第二credentialsId一旦創(chuàng)建了就不要頻繁改動因為很多流水線腳本都引用它改了 ID 所有腳本都要跟著動。第三Secret text 在流水線日志里會被自動脫敏但如果你不小心把它 echo 出來雖然日志里會顯示****仍然要盡量避免這種用法。這里還要專門提一件事SSH Host Key 驗證。很多第一次做發(fā)布流水線的人會踩這個坑——用scp或ssh連接遠程服務器時因為目標主機沒有出現(xiàn)在 known_hosts 里命令直接卡在 Are you sure you want to continue connecting 上。最省事的辦法是在命令里加-o StrictHostKeyCheckingno或者干脆在 agent 上用 ssh-copy-id 先把 known_hosts 寫好。生產(chǎn)環(huán)境里我傾向于后者更安全也更可控。3.2 Jenkins 內(nèi)置可用環(huán)境變量盤點與自定義變量Jenkins 在每次構(gòu)建時會注入一堆環(huán)境變量幾乎可以說只要你在流水線里寫env.XXX就能拿到構(gòu)建上下文信息。掌握這幾十個環(huán)境變量你的流水線才算真正靈活起來。環(huán)境變量含義典型用途JENKINS_HOMEJenkins 數(shù)據(jù)目錄備份、清理、定位配置JENKINS_URLJenkins 訪問地址回調(diào)通知、生成鏈接BUILD_NUMBER當前構(gòu)建序號版本號、鏡像 tagBUILD_URL當前構(gòu)建地址發(fā)送通知時附鏈接JOB_NAME任務名稱構(gòu)建產(chǎn)物目錄、分支識別WORKSPACE構(gòu)建工作目錄定位源碼、產(chǎn)物NODE_NAME構(gòu)建節(jié)點名知道跑在哪臺 agentGIT_COMMITGit 當前提交 hash版本記錄、鏡像 tagGIT_BRANCHGit 當前分支區(qū)分環(huán)境構(gòu)建EXECUTOR_NUMBER執(zhí)行器編號并發(fā)任務時區(qū)分工作區(qū)怎么確認當前任務可用哪些環(huán)境變量最簡單的辦法是在流水線里加一個調(diào)試 stage把環(huán)境變量全部打出來stage(Show Env) { steps { sh env | sort } }這個輸出可能非常長但你能直接看到可用的變量名和取值。實際項目中我特別常用的是把BUILD_NUMBER和GIT_COMMIT拼起來生成鏡像 tag比如environment { IMAGE_TAG v${BUILD_NUMBER}_${GIT_COMMIT.take(8)} }這樣每個鏡像都有獨一無二的版本號既方便追溯每次構(gòu)建的源碼版本也能避免覆蓋同名鏡像。還要學會自定義環(huán)境變量。聲明式流水線里用environment塊environment { APP_NAME demo REGISTRY registry.example.com IMAGE ${REGISTRY}/ns/${APP_NAME}:${BUILD_NUMBER} }在steps里通過sh echo ${IMAGE}使用。需要注意區(qū)分environment塊里的變量會在 shell 里真實注入你可以直接用$IMAGE而 Groovy 側(cè)的變量要用${env.IMAGE}或者拼接字符串。這兩者的寫法很容易混尤其是在單引號 sh 腳本里經(jīng)常有人把 Groovy 變量名直接當成 shell 變量用結(jié)果值為空。調(diào)試技巧就是先sh echo $IMAGE看到底有沒有值再排查引用方式。3.3 用 Jenkinsfile 實現(xiàn)完整的代碼發(fā)布流水線流水線有兩種寫法代碼寫進 Git 倉庫的 Jenkinsfile 顯然比在 Web 界面里點來點去靠譜得多。Jenkinsfile 可以隨代碼一起版本化代碼評審、分支管理、回滾都方便這是現(xiàn)代 Jenkins 推薦的做法。這里我直接給一個包含拉代碼、構(gòu)建、打包鏡像、遠程部署的完整示例pipeline { agent { label node } options { timestamps() timeout(time: 30, unit: MINUTES) disableConcurrentBuilds() buildDiscarder(logRotator(numToKeepStr: 30)) } parameters { choice(name: ENV, choices: [test, prod], description: 發(fā)布環(huán)境) string(name: TAG, defaultValue: latest, description: 版本號/鏡像標簽) } environment { BRANCH env.TAG latest ? main : release/${env.TAG} REGISTRY registry.example.com IMAGE ${REGISTRY}/ns/demo:${BUILD_NUMBER} } stages { stage(Checkout) { steps { git branch: env.BRANCH, credentialsId: gitlab-account, url: http://git.example.com/group/demo.git } } stage(Build) { steps { sh npm ci sh npm run lint sh npm run test:unit sh npm run build } } stage(Package Image) { steps { sh docker build -t ${IMAGE} . withCredentials([string(credentialsId: registry-token, variable: REG_TOKEN)]) { sh echo ${REG_TOKEN} | docker login ${REGISTRY} --username ${REG_USER} --password-stdin docker push ${IMAGE} } } } stage(Deploy) { when { expression { params.ENV test } } steps { withCredentials([sshUserPrivateKey(credentialsId: deploy-key, keyFileVariable: SSH_KEY)]) { sh ssh -i $SSH_KEY -o StrictHostKeyCheckingno deploytest-server docker pull ${IMAGE} docker stop demo || true docker rm demo || true docker run -d --name demo -p 8080:80 ${IMAGE} } } } stage(Health Check) { steps { sh curl -sf http://test-server:8080/health || exit 1 } } } post { success { echo 構(gòu)建發(fā)布成功 } failure { echo 構(gòu)建發(fā)布失敗請查看日志 } } }逐個階段解釋一下。Checkout階段用credentialsId拉取私有倉庫代碼這里用了憑據(jù)綁定而不是把用戶名密碼寫在 URL 里。Build階段用了npm ci而不是npm install目的是保證每次構(gòu)建依賴版本完全可復現(xiàn)。Package Image階段用${IMAGE}直接打包并推送注意withCredentials里的變量只在它包裹的sh塊里有效出了這個塊REG_TOKEN就取不到了這個是很多人寫流水線時最容易犯的錯。Deploy階段我用when條件來控制只有參數(shù)選擇test時才執(zhí)行部署。Health Check階段是發(fā)布質(zhì)量的最后一道防線別省掉。對于生產(chǎn)環(huán)境的發(fā)布我其實更推薦滾動發(fā)布的思路先把新容器拉起讓負載均衡把流量切到新容器確認健康檢查通過后再下線舊容器。上面的例子為了演示簡潔直接 stop 舊容器再起新的這種模式在測試環(huán)境夠用但生產(chǎn)環(huán)境會因為停機窗口引來麻煩。如果你是做 To B 服務或者交易系統(tǒng)建議把 Deploy 階段替換成調(diào)用你們的發(fā)布平臺接口或者用 Ansible 腳本編排更平滑的發(fā)布流程。這個思路同樣適用于大數(shù)據(jù)組件比如你要通過 Jenkins 發(fā)布 Doris、ClickHouse 這類集群組件本質(zhì)也是構(gòu)建產(chǎn)物 配置管理 分批下發(fā)把 Deploy 階段的命令換成對應組件的管理接口即可。4. 集群運維排隊工程處理與啟動目錄管理4.1 批量取消排隊工程腳本與管理技巧隊列堆積是 Jenkins 集群運維里最常見的問題。一堆任務排隊不執(zhí)行可能的原因很多executor 被占滿、agent 在線但標簽不匹配、任務配置了disableConcurrentBuilds導致上一個還在跑。這時候你一個一個點取消顯然不現(xiàn)實尤其當你同時有幾十個誤觸發(fā)的構(gòu)建任務在隊列里躺著手動點到手酸。Jenkins 提供了一個很強大的工具Manage Jenkins - Script Console。在這里可以直接執(zhí)行 Groovy 腳本操作 Jenkins 內(nèi)部對象。批量取消排隊任務的標準腳本是這樣的def queue Jenkins.instance.queue queue.items.each { item - println Cancelling ${item.task.name} in queue: ${item.getInQueueForString()} item.doCancel() } println Queue cleared這段腳本會遍歷當前隊列里的所有任務逐個取消。執(zhí)行前你可以在 Script Console 里先跑一下只打印不取消的版本確認要取消的確實是目標任務def queue Jenkins.instance.queue queue.items.each { item - println Task: ${item.task.name}, waiting: ${item.getInQueueForString()}, label: ${item.task.assignedLabel} }這里我一般會加個hasBeenWaiting過濾只取消那些排隊超時的任務而不是把所有排隊項全部清空避免誤殺剛提交的合法構(gòu)建。比如只取消等待超過 10 分鐘的任務import jenkins.model.Jenkins def queue Jenkins.instance.queue queue.items.findAll { item - item.hasBeenWaiting(600000) }.each { item - println Cancelling stale task: ${item.task.name}, waited: ${item.getInQueueForString()} item.doCancel() }hasBeenWaiting的參數(shù)是毫秒600000就是 10 分鐘。這個腳本比全量清空要溫柔得多適合日常工作場景。還有一個常見場景是某個 agent 節(jié)點掉線了導致它身上的任務全部積壓。這時候你可以在腳本里先過濾節(jié)點名把積壓任務批量取消?;蛘咴诠?jié)點配置里把 executor 數(shù)量暫時調(diào)大讓任務分散到其他機器上跑而不是一味取消。批量取消只是止血找到根因才是重點。我一般在取消隊列之后會順手看一眼 Queue Item 里顯示的 Why is this build waiting? 提示這里會直接告訴你原因是找不到匹配標簽的 agent還是 executor 不夠。4.2 啟動目錄、數(shù)據(jù)目錄與備份遷移很多剛接觸 Jenkins 的人會把 war 包放在哪當成啟動目錄然后到處找配置文件。這里必須澄清一個概念Jenkins 真正的數(shù)據(jù)全在JENKINS_HOME指定的目錄下而啟動參數(shù)里的--webroot只是存放 war 解壓緩存的臨時目錄可以隨便清。我強烈建議在任何文檔和腳本里都統(tǒng)一用JENKINS_HOME這個詞避免團隊內(nèi)部溝通混亂。默認情況下JENKINS_HOME指向/var/lib/jenkins。里面最重要的子目錄包括jobs/所有任務配置和構(gòu)建記錄plugins/已安裝插件secrets/加密憑據(jù)的私鑰users/用戶配置和權(quán)限nodes/agent 節(jié)點信息init.groovy.d/啟動時自動執(zhí)行的初始化腳本備份時不要只復制 jobssecrets目錄尤其關(guān)鍵。Jenkins 的憑據(jù)是用 master 上的密鑰加密的如果只備份 jobs 而沒有 secrets遷移到新機器后你會發(fā)現(xiàn)所有憑據(jù)全部無法解密鬼知道到底哪個密碼對應哪個倉庫。我的備份策略是配合 ThinBackup 插件做定時備份插件備份的目錄可以直接拿到新環(huán)境恢復。如果不想用插件直接 rsync 整個JENKINS_HOME也行sudo rsync -az --delete /var/lib/jenkins/ backupnas:/backup/jenkins/注意 rsync 的時候不要用太頻繁的增量同步因為 Jenkins 運行過程中會不停寫日志和構(gòu)建記錄頻繁同步容易產(chǎn)生大量碎片文件。我一般是在每天凌晨跑一個 cron 任務停止 Jenkins 或者用插件在保障一致性的前提下備份。數(shù)據(jù)目錄的磁盤規(guī)劃很容易被忽略。JENKINS_HOME和workspace目錄別放在系統(tǒng)盤上最好放到獨立數(shù)據(jù)盤。構(gòu)建任務會不斷拉代碼、產(chǎn)生構(gòu)建產(chǎn)物如果系統(tǒng)盤只有 20G幾天就能被撐滿。我見過一種很典型的故障master 上磁盤被workspace占滿Jenkins 寫不了新記錄整個 UI 直接卡死連刪除任務都操作不了。這種問題一旦發(fā)生只能手動進服務器清文件非常被動。提前做好目錄規(guī)劃把共享目錄放在獨立掛載點再配合buildDiscarder定期清理構(gòu)建記錄能避免 80% 的磁盤故障。啟動參數(shù)方面有幾個常用的配置項值得記住。如果你想通過反向代理訪問比如用 Nginx 轉(zhuǎn)發(fā)到/jenkins那 Jenkins 啟動時要加上--prefix/jenkins否則頁面里的 CSS、JS、接口路徑都會不對你會經(jīng)歷一場樣式丟失但功能正常的邪門故障。JNLP 方式連接的固定端口也要顯式設置-Djenkins.model.Jenkins.slaveAgentPort50000默認不設置這個參數(shù)時JNLP 端口是隨機的你會有一種剛才連得上重啟后就連不上的詭異體驗原因就在這。5. 常見問題與排查清單集群環(huán)境多起來之后故障排查幾乎成了日常。我把這一年多踩過的坑整理成一張速查表先對號入座再按表操作?,F(xiàn)象可能原因處理辦法新加的 agent 一直離線JNLP 端口不通 / SSH 密鑰不對 / agent 上 Java 版本過低先手動在 master 上ssh jenkinsagent測試改用 SSH 方式連接統(tǒng)一 JDK 17任務一直排隊但不執(zhí)行沒有匹配標簽的 agent / executor 全被占滿 / 并發(fā)鎖被卡住到隊列里看 Why is this build waiting?增加 executor 數(shù)量檢查同名任務的disableConcurrentBuilds憑據(jù)報錯或鑒權(quán)失敗憑據(jù) ID 寫錯 / 憑據(jù)權(quán)限范圍不對 / 私鑰回撤過在 Snippet Generator 里重新生成腳本比對確認憑據(jù)作用域是全局流水線里環(huán)境變量用出來是空引用方式錯誤 / 變量名拼錯 / 在environment塊外引用局部變量先加一個sh env的調(diào)試階段單引號里用$VARGroovy 里用${env.VAR}master 磁盤滿了workspace 產(chǎn)物堆積 / Jenkins 日志膨脹 / 構(gòu)建記錄沒有清理清理/var/lib/jenkins/workspace下舊目錄調(diào)整buildDiscarder把日志開 logrotate頁面操作后報 403CSRF 配置與反向代理不匹配 / 用戶權(quán)限不足檢查 Nginx 請求頭確認登錄用戶有操作權(quán)限補充 CSRF 白名單配置謹慎開放Git 倉庫拉取失敗憑據(jù)失效 / SSH host key 變更 / 分支名錯誤先手動git ls-remote驗證更新憑據(jù)確認分支和credentialsId重啟后 master 啟動異常卡住插件損壞 / 某個任務配置阻塞 / JENKINS_HOME 權(quán)限不對查看啟動日志禁用懷疑的插件確認/var/lib/jenkins屬主是jenkins構(gòu)建產(chǎn)物或依賴被串a(chǎn)gent 上緩存目錄互相污染 / workspace 復用舊文件每個任務用獨立 workspace清理 npm/Yarn/Maven 緩存必要時給不同 agent 打技術(shù)棧標簽某個構(gòu)建任務殺掉后 executor 一直占用子進程沒被徹底殺干凈 / agent 掉線到節(jié)點詳情點 Disconnect 再重連用ps -ef找殘留進程單獨拿出來說一個最容易被人忽略的問題Agent 掉線之后任務其實不會立刻排隊它會一直掛在該節(jié)點上嘗試重連時間久了看起來就像任務卡死。這其實是 agent 上的 Java 進程內(nèi)存溢出了或者網(wǎng)絡抖動導致連接斷開。我的處理方式是先把該節(jié)點標記離線然后去 agent 上看日志journalctl -u jenkins-agent -n 200如果是因為-Xmx配置太小導致 agent 進程內(nèi)存溢出把 agent 服務的內(nèi)存調(diào)上去就行。很多時候問題不在 master 而在 agent 本身。還有一類典型問題是 構(gòu)建過程一切正常但產(chǎn)物是舊的。常見原因是同一臺 agent 上多個任務共用了同一個 workspace 或緩存目錄。比如兩個項目都配了workspace: /var/lib/jenkins/workspace/demo后一個任務會覆蓋前一個的構(gòu)建結(jié)果。我的建議是不要手動指定共享 workspace讓 Jenkins 自己管理默認 workspace除非你非常清楚自己在做什么。如果需要共享依賴緩存就把緩存目錄放到/mnt/jenkins_shared這個獨立共享目錄里去并且用npm config set cache或 Maven 的localRepository指過去避免 workspace 之間互相打架。6. 實操心得與擴展建議最后分享一些我?guī)状尾瓤铀こ鰜淼慕?jīng)驗不一定都寫在官方文檔里但都非常實用。第一master 上堅決不跑構(gòu)建任務。哪怕 master 配置再高也別在它上面執(zhí)行npm build或者mvn package。一方面要讓 master 把資源都留給調(diào)度和數(shù)據(jù)讀寫另一方面是讓 agent 承擔構(gòu)建風險即使某個構(gòu)建腳本炸了也不會影響你登錄 Jenkins 控制臺的能力。你可以在Manage Jenkins - Nodes - Built-In Node里把 executor 數(shù)量改成 0強制所有任務走 agent。第二Jenkinsfile 一定要入庫而且是跟代碼放在同一個倉庫里。不要覺得在 Web 界面上寫流水線方便等你需要回看某個歷史版本用的什么構(gòu)建邏輯時代碼倉庫里的 Jenkinsfile 能告訴你一切。配合多分支流水線插件分支一變就能自動創(chuàng)建對應的 Jenkins 任務這套用起來才算真正現(xiàn)代化。第三把發(fā)布做成可控操作。不要把生產(chǎn)環(huán)境部署暴露給所有人也不要把每次構(gòu)建都自動發(fā)版設成默認。參數(shù)化構(gòu)建里加choice、用input確認、或者接到審批插件這些手段都能防止誤操作。我見過不止一次因為流水線里寫死了always deploy to prod一個普通的 feature 分支合并直接推到了生產(chǎn)環(huán)境那場面相當刺激。第四共享庫是好東西但要克制。Pipeline 共享庫可以把登錄倉庫、構(gòu)建鏡像、SSH 發(fā)布這些通用邏輯抽成函數(shù)避免每個項目都復制粘貼一大段腳本。但如果你一次把太多邏輯塞進共享庫流水線會變得非常不透明調(diào)試起來極其痛苦。我的建議是先把通用步驟抽出來降低重復代碼具體項目的特殊邏輯保留在 Jenkinsfile 里平衡可讀性和復用性。第五如果團隊規(guī)模還小不要急著上 Kubernetes 動態(tài) agent。K8s 插件確實能讓構(gòu)建節(jié)點按需彈性伸縮但引入的復雜性也很大需要維護 PodTemplate、鏡像倉庫憑據(jù)、網(wǎng)絡配置還要排查資源配額問題。固定 agent 標簽調(diào)度這套方案在幾十個項目的規(guī)模下完全夠用。等確實出現(xiàn)高峰期 agent 不夠、低峰期 agent 閑置的情況再考慮用 Kubernetes 插件也不遲。關(guān)于配置即代碼我建議你逐步往Configuration as CodeJCasC方向走。把系統(tǒng)配置、全局安全、Agent 參數(shù)這些內(nèi)容寫進 YAML配合 Git 管理這樣集群重搭、遷移、恢復都有跡可循而不用靠幾個人腦子里的記憶。結(jié)合定時備份你的 Jenkins 集群會處在一種即使整機掛了也能很快重建的狀態(tài)。我在實際運維中發(fā)現(xiàn)越是簡單的架構(gòu)越容易養(yǎng)出穩(wěn)定的流水線。很多團隊遇到瓶頸第一反應是加機器加插件但真正的好做法是先把干凈的環(huán)境、清晰的標簽、可追溯的流水線建起來。這套 Jenkins 集群部署和代碼發(fā)布方案我至今還在用它支撐的項目越來越多踩坑頻率反而下降了。希望這份實戰(zhàn)文檔也能幫你從排隊排到懷疑人生的泥潭里走出來。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲男人的天堂AV| 精品97久久综合| 男人的天堂VA在线| 色激情五月天| 18禁止看精品中文字幕| 免费人成在线观看网站品爱网| 青青草密桃在线播放| 久久无码一区二区二三区性色| 精品久久久久黄少妇| 免费av在线播放二区| 中文字幕伊人| 色五月av| 色九区| 野狼福利社区| 亚洲熟女乱熟乱熟妇综合网二区| 精品久久視頻在线| 你想操日本小逼吗| 中文字幕国产在线天堂| 久9久9久9久9久9久9| 无码又爽又硬又激情免费视频| 精品欧美乱码久| 女人一区| 天天综合有色网| 中文字幕一区二区日韩网| 久久久久久久精| 亚洲高清在线se| 日韩乱插| 在线观看岛国有码| 操我无码| 岛国片在线播放| 欧中美三级一区二区三区| 91 手机在线播放 绯色| 国产日韩在线播放| 日日操免费视频| 一级做受视频免费是看美女| 欧美日韩人妻精品系列一区二区三区| 少妇三p| 97视频新免费| 91精品少妇搡搡搡| 校园春色亚洲无码| 欧美图片色综合| 亚洲宅男天堂| julia在线观看久久| 天天射影院| 色爱三区| 日本熟妇熟色97一本在线观看| 久久毛卡| 9999久久久久| 综合久久99亚洲人妻中文在线| 英伦大奶子熟妇吊带| 久久天天摸| 日本精品性生活久久久| oumeisetupian| 九九英色视频| julia ann久久| 南澳成人一级片在线播放| 欧美日韩制服| 精品无码久久久久久久杏吧| 欧美的性爱网站免费| 日韩精品免费高清视频在线| ji熟女.com| 欧美五十路熟| www.狠狠干.coom | www.久久超碰| 粉嫩AV一区二区夜夜| 素人无码中文字幕| 成人天天爽| 色亚洲欧美| 99这里只有精品| 亚洲毛片基地专区| 国产人妻天天干精品| 久久国内| 久久久999日本大片| 中文字幕日产av人| 一区二区三区四区在线不卡| 91少妇人妻| 欧美在线啊啊| 国产AV久久野战精品| 婷婷综合| 91社操逼| 少妇被玩视频二三区| 曰韩精品九九无码| 久久精品人妻一区二区| 一区二区高清视频| 日韩成人精品| 国产女上位好爽在线| 人人搡人人肉久久精品| 国产免费内射视频| 日日碰狠狠添天天爽超| 97超久碰| 91香蕉国产尤物视频| 91狠狠综| 亚州精人品大香蕉| 青青草伊人久久| 清纯唯美激情| 欧美一级黄片免费播放| 中国黑人三级片网站上区| 老司机香蕉久久久久| 人人玩人人添人人澡免费| 久碰视频| 欧美 熟女 日韩| 91综合色噜噜| 国产无套粉嫩白浆在| 爱啪精品一区| 久久毛卡| 久久大精品乱码视频人妻熟女| 99re在线| 精品久久久久瑟瑟| 放黄片放3级黄片没穿衣服| 天天躁日日躁AAAXX| 91男女啊啊啊| 夜夜操天| 91麻豆天美传媒在线| 国产精品无码论坛| 欧美日韩中国x| 天天夜躁日日躁狠狠2002| 人妻 丝袜美腿 中文字幕| 久久久亚洲欧美综合| 第一高清av中文字幕| 亚洲操逼网| 丝袜视频一区二区在线播放国产中文| 久久色网| 婷婷情色五月天| 久热这里只有精品9| 最新国产精品久久精品| 台湾佬大香蕉| 99999无码| 欧美色图20p| 超碰97爽| 2020中文在线一区二区三区| 蜜臀久久精品久久久久视频| 国产又黄又粗的视频| 绯色AV粉色AV蜜臀AV| 翔田千里爆乳巨臀无码| 亚洲资源网| 国产亚洲精品美女久久久m| 天美av在线观看| 久久精品久久久久久久| 97视频网站在线观看| 成 人 A V免费视频在线观看| 天堂蜜桃无码视频一区二区| A片大香蕉在线| 伊人色综合超碰| 国产精品蜜臀久久久久无码AV| 加勒比AV网| AV免费在线播放一区| 超碰97人人乐| aaa一级黄片| 午夜经典| 欧美韩国你懂得在线 | 精品人妻视频一区二区在线播放| 园内精品自拍视频在线播放| 91亚洲网站| 美女露胸露屁股| 97欧美综合网| 丰满搜索结果 -第18页- 久久高清无码| 天天色,天天干,天天干| 少妇内射www在线观看视频| 久久免费精品视频免一| 亚洲牲交| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 蜜臀久久一区二区| 一起草日韩| 欧美亚洲图片| 91亚洲网站| caopeng97人妻| 婷婷伊人| 国产真实野战在线视频| 欧美成人免费在线观看| 欧美在线电影| 97神马久久| AV99热18这里只有精品| 亚洲欧洲视频小说在线观看| 亚洲精品人妻吞精av| 看看日B真人视频| 大香蕉天天看妹子| 激情五月天丁香| 欧美性爱无码一区二区三区| 日本国产二线女色| 99re99视频在线免费观看| 99久热| 国产男人又猛又粗又爽| 无码操逼网| 亚洲中文字幕熟女| 久久大| 亚洲天堂另类| 精品少妇一区二区| 成人天天看站长推荐| 色五月综合网| 在线日韩视频| 91久久久久久久| 国产精品点击进入在线影院| 性爱视频免费网址| 中文AV制服乱伦| 欧美日韩久久精品爱爱| 91在线限制级| 男人把坤坤插入女人的下体| 好淫网一二三视区| 性爱综合网| 日韩999| 亚洲国产一级精品毛一级精品看免费视频| 插入逼91| 欧美日韩大香蕉| 人妻精品一区二区| 四虎在线视频| 亚洲国产97在线精品一区| 亚洲经典啪啪| 99日韩| 综合网色| 久久综合18p| 人人人人人人少妇| 欧美日日夜夜| 美腿丝袜偷拍亚洲欧美| 在线视频五十市| 国产福利夜| 欧美一区二区传媒| 欧美成人一区二区| 国产精品日日摸天天碰| 在线视频亚洲无码| 天天色天天干天天爱| 丰满岳乱妇一区二区三区| 秋霞一级A片黄色视频| 欧美成熟性爱精品| 日韩欧美中文日韩欧美色| 欧美成人AⅤ大片在线观看| 免费αⅴ在线观看| 五月丁香激情综合| 天天淫人人妻日日色| 综合久欧洲| 日韩视频小说在线观看| 国产suv精品一区二六| 中文精品少妇天堂| 91亚洲综合| 亚欧免费| av国产无码| 91色女| 极品后入免费视频| 欧美97av| 三级片大波波| 亚洲欧美天| 日本综合色图| 在线观看综合精品亚洲| 色999人与兽| 日日夜夜国产综合| 天天天干977| 97超碰磁| 五月激情天| 久久九九一区二区三区成人| 国产区在线| 欧美aa一级片| 夂久色| 中文字幕神马久久| 无码人妻1727| 欧美亚洲日本激情在线| 啊啊啊啊啊啊好湿好爽视频| 亚洲欧美日韩偷拍色图| 久久久久人妻| 91老熟女91老女人| 无码丰满熟妇一区二区浪潮AV| 色婷久久| 97精品在线| 国产AAAAAABBBBB| 日本亚洲熟女视频| 性性欧美| 亚洲一区在线观看欧洲| 一牛影视久久久一区二区三区| 91女优在线观看| 97国产精品| 激情丁香婷婷| 欧美色图亚洲色,麻豆| 亚洲影院无码在线| 亚洲欧洲美腿丝袜| 午夜性刺激视频免费观看| 丁香五月综合| 青青久久久| 久久五十路熟女人妻| 黑丝内射一区二区三区| 日本在线伊人啪啪| 久久婷婷色| 美女网站黄页| 午夜精品探花| 天天干1区2区在线| 岛国毛片手机在线观看| 日本蜜桃| 黄色片,com| 91美乳| 老司机福利青青草| 亚洲天堂人人妻| 日本人妻最新在线中| 五月婷在线| 国产丁香精品露脸视频 | 999久久久精品国产| 欧美激情精品久久久| 强奸乱伦麻豆| 91激情国产| 在免费jIzzjIzz在线视频| 蜜桃精品视频一区| 日韩亚洲精品一区二区| 天天综合网~91综合网| 中文乱码字幕观看视频| 亚洲色婷婷| 酒色综合网| 久久99热这里只频精品6学生| 国语精品对白| 啊a一区在线| 精品三级在线专区| 东北女人高潮视频| 首页亚洲国产高跟丝袜诱惑视频 | 国产一级高跟丝袜| 破处bbq| 国产福利第一视频| 欧美78P| 东北黄色电影| 91成人久久| 亚洲素人综合| 天天操女人| 操www| 欧美日韩制服| 97色欧州| 男人的天堂一区三区| 久久9精品| 欧美熟妇精品黑人巨大一二三区| 日本东京热加勒比久久| 欧美日韩久久精品爱爱| 欧美一二在线| 99色在线| 天天草夜夜草高潮片| 日韩干B| 欧美熟妇视频| 亚洲色图欧美视频| 91啦人妻| 欧美日韩亚洲天堂| 91路www| 性色一线| 欧美v亚洲v日韩v最新在线二区| 老鸭窝成人免费毛片视频| 九月AV| av天堂手机版追回| 亚洲 欧美 精品专区 极品| 成人一区二区三区四区| 天天日天天爽| 午夜无码精品免费看性色| 日韩99999| 日日骚精品视频| 欧美在线官网| aaa一级黄片| 国产91会所女技师在线观看| 狠狠色综合网| 欧美人妻久久精品二区三区| 午夜小电影在线插入淫高潮| 蜜汁欧美| 职场同事知名国产国产精品久久欧美日韩| 东京太热久久久| 国产区性爱在线视频秋霞豆| 强奸乱伦AV一天堂网| 亚洲成人在线乱码色午夜| 超碰天天操| 亚洲。日韩。欧美| 志村玲子视频一区二区| 国产色呦呦| 99久国产精品午夜性色福利| 思思久热在线精品66| 欧美96交| 午夜精品久久久久久久99| 欧美少妇第一页| 亚洲欧美激情另类色图| 五月婷婷六月激情| 色五月激情综合网| 5月婷婷6月六月丁香| 亚洲欧美自拍偷拍| 国产综合在线视频网站| 人人性爱视频免费| 天天上日日上日韩精品| 97精品免费视频网站| 视频在线97| 日本黄色天堂| 伊人嫩草| 青青五月天| 欧美熟妇精品黑人巨大91| 欧美天天影院| 蜜汁欧美| 亚洲AV无码乱码| 亚洲人天堂| 亚州一区二区| 美女被啪到深处抽搐视频| 欧州91高潮| 翔田千里AV无码秘 三区| 91美女视频在线观看| 97日韩欧美| 久久久久久久九九九九九九| 麻豆AV96熟妇人妻| 久久视频,这里只有精品 | 欧美伊人久久综合网| 国产无码精品成人| 日日日日做夜夜夜夜无码| 免费人成在线观看网站品爱网| 亚洲男人久久综合天堂| 日韩av不卡在线看| 最新日产中文在线麻豆| 国产亚洲精品自在线亚洲情侣| 日本韩欧美在线播放a| 超碰碰碰碰| 亚洲欧洲偷拍一区| 国产美女口爆吞精| 中出91视频| 亚洲男人天堂AV| 国产午夜精品理论片一二三区区| 久久久久久久伊人精品| 99久久9| 厕所偷拍在线| 色综合99999| 99超碰网| 香蕉黄色一级视频| 欧亚免费视频| 97久久精品国产| 老女人91| 偷拍亚洲| 亚洲色图欧美视频| 亚洲青青青视频在线| 97免费视频网| 欧美欧美少妇| 中文字幕91页| 99国内精品| 国产精品九九| 成人精品无码| 国产伦精品一区二区三区在线观| 真实高潮91| 国产精品乱码久久久久久| 网友自拍第1页| 国产乱人妻精品入口| 国产97色在线 | 亚洲| 亚洲中文字幕在线视频一区二区| 日亚韩精品视频二区三| 精品十三区| 欧美性爱一区二区三区| 国产51色综合久久免费| 熟女日韩| 欧美日韩狠狠爱| wwwxxx日本爽| 国产欧美一区二区| 91精品国| 日本欧美一区二区三区免费| 美国久久一二三四| 免费观看成人www精品视频| 手机看片1025| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 狼人综合婷婷激情四射| 骚货操死你| 日韩一级特黄av毛片| 欧美色偷拍 | 亚洲无码一二三区| 黑人精品久久97| 99re9| 色五月综合| 亚洲另类色综合网站| 免费看国产曰批40分钟怎么下载| 国产av青草| 日韩射精| 久久婷婷国产一区二区色| 欧美亚洲天天| 人妻中文在线| 国产99999| 成人在线日韩| 欧美性爱超碰97| 一区二区三区精品久久| 美女网站黄页| 久久婷婷色| 精品人妻一区二区三区蜜桃视频| 一个人免费HD91视频| 97视频新免费| 中文字幕成人| 美女黄站| 欧美专利1区2区3区4区5区免费| 亚洲天堂男人的天堂| 日本三级久| 91天天看| 亚洲大色堂| 亚洲国产精品有声| 性色高清..……| 日本99视频| 久久久96| 蜜桃视频一区二区三区| 被体育老师抱着c到高潮| 国产91专区| 婷婷色色五月天| 国产一级内射高清视频 | 国产亚洲福利第一页丝袜| 亚洲黄日韩无码专区| 变态乱伦伪娘灌肠一区二区| 欧美91久久久久| 91激情国产| 99激情视频| 国产精品爆乳懂色蜜乳| 五月开心久久AV官网| 成人黑料社久久| 久久男人的天堂| 精品一区二区三区四区女 | 欧美一二级| 91熟女熟妇视频网站| 久久久久久99AV无码免费网站| 试看福利| 婷婷久久五月天| 老司机福利青青草| 亚洲女人毛茸茸91| 99热超碰| 日韩精品中文字幕二区| 久久草草亚洲蜜桃臀| 老司机午夜精品福利视频一区二区| 午夜一区| 免费啪啪av| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 桑老女人九区| 97资源欧美| 一区二区娱乐网站| 午夜福利av电影在线| 视频在线97| 97色97好| 长长久久88视频| 精品国产人成在线| 久久久久亚洲Av无码专区老牛影视| 人人搡人人肉久久精品| 久久婷婷国产一区二区色| 国产精品亚洲天堂网址| 精品九九九| 男人的天堂三级| 国产精品熟女九九九| 天天综合精品| 综合久久欧美| 干日本人少妇午夜寂寞影院| 狠狠爱综合网| 日韩精品人妻一区二区| AV色五月天| 久久偷拍人| 国产又粗又又黄又猛| 熟女色综合久久| 熟女乱伦A| 在线观看不卡一区二区三区| 91亚洲色图| henhen91| 91n处女在线观看| 国产人人干| 欧美97视频| 无码久久亚洲高清,| 亚洲风情在线观看| 日韩欧美女求操每天更新| 十八禁电影伊人网| 婷婷久草| 亚洲s色图| 日产成人久久| 久久久久久少妇| 天天激色| 91九九九吃| 日韩大香蕉精品在线视频| 欧美A√综合网| av天天在线| laoshunv91| 国产精品高潮久久AV| 97香蕉人人乳| 欧美成人综合| 91精品免费| 久久精品91| 熟女久久| 亚洲欧美黄| 欧美激情久操网| 五月丁香黄色网| 久久国产逼| 美国精品国产精品| 免费伦费视频在线观看| 黄色av一区二区在线| 色婷久久| 亚州操操穴网| 91高跟美女在线播放| 97操在线| 欧美少妇高潮| 久草精品国产99| 2020中文在线一区二区三区| 99久久精品无码一区二区| A片三级无码| 五月丁香六月激情综合| 91色五月俺来也| 久久大陆| 91亚洲影视| 国产高清午夜成人在线观看| 日本免费一级AAA大片器| 国产强上视频在线观看| 可以看的av| 91九色丨国产丨爆乳| 熟女网站最新| 精精品人妻一区二区三区| 中国一级αV| 欧美日韩性爱无码| 欧美亚洲玖玖玖| 亚洲AV不卡在线观看尤物| 夜夜做夜夜爽精品视频| 视频不卡中文字幕| 伊人五月天激情| 99国产女人| 成人免费看吃奶视频网站| 亚洲色图欧美视频| 操b网站亚洲无码| 精品在线78| 手机看片日韩人妻| 色情成人五月天| 日日噜噜夜夜久久亚洲一区二区| 97免费视频在线| 国产女同视频在线播放| 欧美亚洲玖玖玖| 久久机热| 亚洲精品尤物yw在线影院| 色色激情五月天| 啊啊啊啊啊啊啊啊要喷了| 91精品老女人| 国产精品视频精品一二| 超碰在线97国产| 亚洲综合欧美| www99热| 欲女人妻性色av| 亚洲日韩人妻中文字幕一区| 亚洲色婷婷| 91老熟女91老女人| 欧美aa一级片| 91网亚洲| 国产精品人妻无码久久久互動交流| 人妻99p| 天堂综合| 国产精品欧美日韩久久| 久久久久久久国产| 精品人妻免费观看| 日韩在线视频1234| 欧美日韩另类激情图片| 久热9| 9.1小视频| 国产成人免费观看在线视频| 日本999精品| 一个人免费视频观看在线WWW| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 3p国产色噜噜一区| 天美一区在线| 蜜桃视频成a人v在线| 欧美97日韩| 俺去啦俺来也久久综合| 夜夜狼人妻| 啊啊啊在线观看| 嗯嗯嗯嗯啊啊啊好紧好大| 超碰九区| 91青视频| 国产精品福利资源在线尤物| 丝袜内射| 为用户提供免费看黄网址在线观看| 一区黄二区黄| 国产福利视频精品视频| 884t在线| 亚洲1区2区三区高清中文字幕| 最新亚洲风情电影| 天综合网欧美| 摸奶性爱视频网站在线免费播放| 入口操逼网站| 精品久久大胆人体| 天天色天天干天天射| 99xav| 国产av波波国产精品| 免费久久9999| 中国国产精品一区视频| 久偷拍欧美日韩三区| 中国zzijzzijzzwww精品| 亚洲日韩久久精品一区| 色哟哟511老熟女| 97日韩欧美亚洲| 伊人亚洲国产一成人久久精品,久久| 欧美97色| 狠狠热这里都是精品| 午夜视频久久久久一区| 亚洲欧洲无码一区夜| 久操视频资源站公开| 婷婷人妻激情| 丰满少妇一区二区三区专区| 日韩欧美大力操| 懂色av中文字幕一区二区三区天美| 国产尹人在线视频免费| 女性91网站| 国精综合一二三区影视| av天堂手机版追回| 欧美色图色综合| 欧美A√综合网| 操逼日韩无码 | 精品欧美日韩在线观看| 婷婷精品视频| 成人自拍三级在线观看| 亚洲人妻久久久| 江都AV在线| 亚洲无码AV九九九| 男人天堂网站| 日本天天干天天日一区| 性爱动态120秒| 乱伦av麻豆| 日本精品五区| 狠狠操狠狠燥| 日本女厕偷拍| 中文字幕 码精品视频网站| 日欧操屄| 天天综合欧美| 超碰天天去日穴| 中文字幕版| 婷婷丁香五月综合| 97人人操人人摸人人爱| 免费人成毛片乱码| 精品免费成人久久| 亚洲精品一卡二卡三卡福利视频网站| 九月婷婷综合| av婷婷色婷婷色六月| 夜夜操美女| 中文久久久| 亚洲天天做日日做天天谢日日| 欧美亚洲清纯| 国产熟女二区| 九九九久千久久激情蜜桃在线看 | 成人亚欧免费视频| 成人免费视瓶| 91肉丝| 天堂综合网| 日日骚av| 国产AV天美传媒一区二区三区| 亚洲永久AV无码精品秋霞| 日本免费一区二| 女优视频第10页| 69精品人人人人| 人、人、摸,人、人、草| 多毛小伙内射老太婆| 国产亚洲日韩欧| 精品无码久久久久久久久果冻糖心| 青青草大香蕉视频| 青青草依人大香蕉| 精品视频一区二区| 人妻精品一区一区三区蜜桃91| 日本中文字幕一区| 999 久久久| 亚洲熟女一区| 日本最新1区2区3区| 超碰视97中文| 色九九九九九九| 精品二区三四区五电影 | 国产成人bd在线观看| 日本成人A片免费看| 日小BB小视频| 国产精品一级片在线看| 欧美日本一区二区a人| 黄片aaaaa一区| 天天日天天干天天整| 国产一区二区欧美日本| 手机在线观看不卡无码av| 免费综合亚洲中文| 狠狠操狠狠插| 久久一区无码| 无码视频一区二区| 九九九九九九免费视频| 欧美日韩不卡传媒| 97超碰欧美| 天天干天天燥| 亚洲精品无码少妇久久| 久久精品国产精品亚洲艾通辽熟妇 | 国产探花精品在线| 色官网在线| 看日韩美女二区三区免费操逼视频 | 欧美色人| 黄色大片免费在线| 日韩av在线播放不卡| 久久婷婷五月| 色老汉色| 色婷婷一区二区三区久久午夜成人不| 强乱老妇中文字幕| 老司机福利青青草| 国产女人极品高潮毛片| 色综合婷婷| 麻豆久久久久久久久丝袜 | 色欲三区| 欧美99热| 亚洲 欧美 另类 日韩 人妻一区| 日韩欧美中文字亚洲慕| 亚洲欧美色图| 亚洲综合中文字幕有码| 97中文天堂| 天堂亚洲精品久久老牛| 97天天操| 国产亲戚伦亲在线| 欧美日韩国产中文精品字幕自在自线,| 蜜臀AV成人精品蜜臀| 超碰导航97| 天天插夜夜操| 91视频国品一二三区| 亚洲综合99999| 熟妇色99| 国产浮力影院第1页| 好湿好紧好爽 视频| 久久噜噜噜精品国产亚洲综合| 亚洲欧美第一页| 熟女色综合久久| 超碰爽人妻熟女Av| 97欧美色| 操操逼视频| 天堂蜜桃无码视频一区二区| 综合性视频99| 人妻一二三区| caopeng97| 欧美日韩色| 91小视频| 秋霞一区二区三区四区五区六区七区| 亚洲色宗合| 偷窥自拍亚洲天堂网爆| 欧美91网站| 成人五级久久| 青青草在线成人视频| 香蕉精品二区二区| 777奇米影视777四色| 国产成人主播| 91精品无码久久久久久久| 999久久久精品国产| 欧美色吧综合| 网页导航五月天免费一二三区| 亚洲av热热色| 成人午夜高潮av猛片| 日韩欧美亚洲国产日韩| 超碰美国| 韩国久久97| 91中文字幕制服丝袜免费视频| aⅴ日韩成人电影av在线免费看av大全| 久久伊人青青草| 91久久九九精品国产综合| 好爽视频在线观看视频| 高清无码网址| 99热这里只有精品18| 激情五月婷婷| 97精品一区二区三区免费| 大香蕉伊人久久| 久久丝袜| 韩国一区二区精品亚洲| 女性91网站| 尤物av网站| 美国黄片aaa| 九九自拍伦理| 午夜无码精品免费看性色| 久久伦理视频久久大香蕉视频| 日本日逼高清| 日韩丨制服丨中文|在线| 久久这里只精品99re66图| 国产精品白丝AV| 五月丁香色婷婷| 人妻丝袜美腿中文字幕| 午夜成人福利影视| 久操凹凸视频| 午夜久久久| 婷婷五月天社区| A 天堂| 午夜福利在线合集| 国产精品午夜高潮呻吟久久av| 激情婷婷黑人91| 啊啊啊操一区| 久久亚州精品成人Av无| 久久美国毛片| 超碰人人在线| 夜草网站| 婷婷久草| 国产玖玖| 欧美日日操| 天堂亚洲精品| 4141514逼喷水三级片| 最新岛国大片| 97资源站国产精品| 日韩丝袜人妻AV| 欧美性爱第一区| 免费视频观看60秒| 五月婷婷hd| 国产激情片在线观看| 99999精品| 欧美性综合| 天堂岛av| 深夜国产一区二区三区在线看| 青青草AV色| 色爱综合网欧美| 国产乱伦性爱AV| 久久超碰国产一区二区三区| 超碰97亚洲区| 久草精品热视| 韩国一级做A片免费的| 女沟厕偷窥piss小便| 久久人妻一区二区三区高清| 日韩人体偷拍| 久久久国产成人一区二区三区在线| 国产精品白丝| 婷婷精品久久av影视| 亚洲天堂自拍| 精品超碰中文在线| 黄色小视频日本txt| 中文久久| 男人天堂2019| 青青操视频在线| 天天综和| 东京热激情视频一二三区| 综合欧美日韩在线观看| 91久久免费视频互動交流| 嗯嗯不要 视频| 伊人久久大香线蕉无码| 精品视频一区二区| 美女91网址| 欧美熟女丝袜| 欧美 传媒 麻豆 日韩 偷拍| 青青草中文-久久青草精品一区二区三| 操逼逼中文字幕| 级做a爱无码性色永久免费| www欧美91| 色偷偷2020免费视频播放| 欧美 熟女 日韩| 亚洲一区二区三区麻豆传媒| 人人人人人人少妇| 色婷婷五月综合激情中文字幕| 成人97人人超碰人人| A 天堂| 亚洲 暴爽 AV人人爽日日碰| 啊啊啊啊免费视频| 久久久九| 91热色| 熟女露脸激情自拍视频| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 26uuu性| 三级日本一区二区三区| 欧美夜夜| 亚洲美女AV无码| 免费国产视频| 久久69| 五月亭亭六月丁香| 激情小说在线视频| 国产精品96| 精品九九九九九| 国产精品久久久 | 国产精品内射婷婷一级二| 爱爱动态60秒| 夜草网站| 人妻献身系列第54部| 免费自拍三级综合| 韩国一级婬片A片无码天美| 国产精品蜜臀久久久久无码AV| 亚洲欧洲无码bt精品合集| 国产精品嫩草影院午夜两性| 最新av中文字幕高清| 中文色综合| 在线观看亚洲专区| 最新日韩黄片| 调教熟妇 久久久久久| 欧美综合骚| 中文字幕日韩精品一区二区三区| 日韩激情视频| 国产精彩女在线观看视频| 国产精品夜夜夜| 久久尹人大香焦视| 中文AV制服乱伦| 中国少妇XXXX做受| 国产精品视频白浆免费| 超碰狠狠操| 免费看污网站| 天堂网 主播 亚洲| 91N综合网| 百度百度日本操逼| 国产精品美女在线一区| 性爱av在线免费观看| 女人的久久久| 性生活无遮挡纯毛片在线看| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 91精品在线播放| 91亚洲综合| 欧美性爱第一区| 9久久精品| 日本伦理一区二区| 国产精彩女在线观看视频| 97超碰欧美精品| 影音先锋新男人| 97人人模人人爽人人| 午夜福利久久久噜久噜久久综合 | 抽插无码高清一区| 97超碰69| 搡老女人老91妇女熟女| 99999精品| 艹比视频国产精品| 精品视频123区小说区| 麻豆精品三区视频| 亚洲色人| 欧美人人AAA| 欧亚第一综合网| 国产精品伦理| 99久久久无码精品国产人| 亚洲人妻av| 曰韩少妇无码| 欧美欧美啪啪视频| 性色av婷婷久久一区二区点复制| 嗯~啊~快点 死我视频| 91模特在线观看| 夜夜操青青草| 精品.99999| 在线天堂资源亚洲| 亚洲欧洲精品视频发布| 日韩女优中文字幕| www男人天堂| 久久成人国产| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| 欧美精品系列| 一级黄色性爱A级片| 有码人妻系列| 91色花堂| 香蕉久久国产AV一区二区| 乱久久久| 亚洲精品国产日韩无码AV永久免| 久久人妻视频网| 91久热| 国产1769在线| 超碰午夜| 看大黄色大片原件| 国产13区| 色吧 综合| 鲁鲁色综合网| 超碰人妻久久| 激情小说五月天| 操久久久久| 啊视频在线| 99色在线| 亚洲av淫乱| 北野未奈加勒比av| 久久夜黄色无码A级大片| 躁躁日曰躁2020| AV一起草在线| 欧美在线大香蕉| 欧美日韩黄片精品在线| 国产婷婷一区| av网站国产主播在线| 丝袜夫妻自拍| 亚洲欧美色图片| 91neishe| 天堂无码| 女同性恋一区二区三区精品视频| 日韩欧美亚洲自拍偷拍| 久久久久久久久久久人妻| 国产视频人人网| 亚洲熟妇丝袜在线观看| 91网九色蝌蚪操熟女| wwe 天天干.com| 秋霞成人一级在线观看| 蘋果手機免費看成人Av| 国产毛片久久久久久久| 色妇91| www.色操逼| 日本大香蕉综合网红本杳社区| 婷婷五月天丁香| 国产精品久久久久久久久久久久| 免费看美国人人爽,人人操| 老司机午夜精品视频| 最新亚洲风情电影| 性影在线视频| 东北操逼| 任你草| 美女天天干| 青青青艹在线视频| 中文字幕在线观看二区三区| 日韩91网| 国内精品不卡无毒99999| 国产三级在线现体验区| 日日干夜夜骑| 久久小视频| 日韩簧片免费看| 啊啊啊啊好大好硬啊啊啊啊啊 | 夜夜免费视频| 亚洲综合激情五月久久| 亚洲国产美女久久久久| 60秒免费小视频| 人人扣人人操| 欧美Ⅴ性爱| 91劲爆| 欧插网站| 日本性爱不卡视频| 中文久久久| 午夜综合在线| 日韩一级二级| 人人操人人插人www| 啊啊啊啊免费视频| 国精综合一二三区影视| 日韩精品一区二区三区色欲| 日本阿v天堂在线观看| 久久伦理视频久久大香蕉视频| 久久久com| 亚洲图片日本AⅤ欧美在线| 东北女人性交| 亚洲少妇色图自慰直播| 五月丁香色婷婷| 亚洲一曲日韩精品| 欧美日韩在线小说 | hd成人一区二区在线| 日本一级特级毛片视频| 亚洲综合 欧美| 夜夜高潮夜夜爽高清视频一| 国产精品视频白浆免费| 亚洲婷婷综合网| 四虎在线视频| 热热色色综合| 色性荡荡荡荡视频| 国产AV高清AV无码| 免费无码国产精品v片在线观看| 精品1区2区3区| 久久精品99久久久久久| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 日日日日做夜夜夜夜无码| 天天久久| 亚洲欧美内射| 久久草视频污视频| 九九玖玖精品| 99这里只有精品| 一区二区娱乐网站| 大香蕉久| 眼镜人妻101.com| 精品无码久久久久久久久果冻糖心 | 精品黄色电影| 国产农村妇女毛片精品久久| 91影视亚洲| 亚洲限制级| 校园春色欧美色图| 日韩99神马视频播放片在线播放| 亚洲夜夜欢无码一区二区| 熟女色综合久久| 久久成人午夜精品影院| 肏逼福利网站| 一区二区中文| 婷婷五月天激情四射| 男人的天堂99| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 色月天AV导航| 欧美视频在线第3页| 五月丁香色婷婷| 五月丁香狠狠爱| 综合网色| 亚洲精品色| 免费观看欧美日韩操逼视频| 午夜男人一级A片7777| 一起草精品人妻| 激情专区综合| 色情五月丁香| 99九九精品| 欧美激情综合| 国产精品一区二区三区在线密挑| 黑丝少妇| 殴美性色a级欧美| www.四虎在线| AV老汉| 天天看高清麻豆| 亚洲高清在线se| 亚洲AV永久无码精品成人调教| 玖玖综合视频| 男人天堂新| 97在线看| 操操操五月天婷婷丁香影院| 激情天天视频| 成人a大片在线观看| 人人操人人大香蕉| 俺去也婷婷| 夜夜高潮夜夜爽| 蜜桃久久久久久久久久久久|