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

ARTICLE DETAIL

資訊詳情

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

Azure Pipelines配置全攻略:從YAML到自托管代理的CI/CD避坑實(shí)踐

Azure Pipelines配置全攻略:從YAML到自托管代理的CI/CD避坑實(shí)踐 簡(jiǎn)介這是一份面向 Azure DevOps 用戶的 Azure Pipelines 官方文檔操作手冊(cè)適合需要搭建持續(xù)集成與持續(xù)交付流程的開發(fā)、運(yùn)維及 DevOps 工程師閱讀。內(nèi)容系統(tǒng)覆蓋核心概念與落地操作從代理、條件、表達(dá)式、環(huán)境、作業(yè)、階段、任務(wù)、模板到觸發(fā)器均有說(shuō)明并針對(duì) GitHub、Azure Repos、Bitbucket 等倉(cāng)庫(kù)集成、多環(huán)境部署、容器構(gòu)建、測(cè)試執(zhí)行及代理池管理等場(chǎng)景給出操作指南可幫助讀者快速掌握管道編寫與發(fā)布配置。資源為 1 個(gè) PDF 文件整體大小 106.6MB頁(yè)面內(nèi)容為 Azure Pipelines 文檔的中文版節(jié)選既適合新手從零了解 CI/CD 理念也對(duì)已使用者查閱具體任務(wù)參數(shù)與排錯(cuò)思路有參考價(jià)值。目前已有 412 人學(xué)習(xí)瀏覽。通過(guò)閱讀這份手冊(cè)讀者可獲得一份結(jié)構(gòu)完整的 Azure Pipelines 速查資料便于在項(xiàng)目中落地自動(dòng)化構(gòu)建、測(cè)試與部署流程減少摸索時(shí)間。1. 從找不到代理開始為什么配置 Azure Pipelines 的第一步就讓人想退坑某次幫同事調(diào)一個(gè) Node.js 項(xiàng)目的持續(xù)集成YAML 文件寫了三行自認(rèn)為沒(méi)什么可錯(cuò)的結(jié)果 pipeline 一跑就報(bào)錯(cuò)No agent found in pool。折騰了兩個(gè)小時(shí)最后發(fā)現(xiàn)是自托管代理壓根沒(méi)裝代理池名字還對(duì)不上。這個(gè)報(bào)錯(cuò)幾乎每個(gè)剛接觸 Azure Pipelines 的人都會(huì)遇到——它不會(huì)告訴你該裝什么、該配什么只會(huì)給你一個(gè)毫無(wú)頭緒的錯(cuò)誤信息。Azure Pipelines 是 Azure DevOps 的核心 CI/CD 服務(wù)支持從 GitHub、Azure Repos、Bitbucket 拉代碼在 Windows、Linux、macOS 上并行構(gòu)建把 .NET、Java、Python、Node.js、Go 這類主流生態(tài)全部覆蓋。但它的配置鏈路很長(zhǎng)組織、項(xiàng)目、代理、服務(wù)連接、YAML 語(yǔ)法任何一環(huán)斷了都跑不通。這篇筆記就是按我實(shí)際裝過(guò)的順序從版本選型、注冊(cè)組織到寫第一條 YAML、配自托管代理再到排錯(cuò)清單一步步給你走完一遍。2. 準(zhǔn)備環(huán)境版本選型、免費(fèi)額度與注冊(cè)組織2.1 版本選型Azure DevOps Services、Server 2022 和 TFS 怎么選裝 Azure Pipelines 之前先要分清你用的是哪一套環(huán)境因?yàn)樽?cè)方式、功能范圍和踩坑點(diǎn)都不一樣。Azure DevOps Services 是微軟的云服務(wù)版本直接瀏覽器訪問(wèn)https://dev.azure.com/{你的組織名}就能用。它更新最快YAML 管道、環(huán)境、審批這些新特性都在這個(gè)版本上最先落地。私有項(xiàng)目每個(gè)月有 1800 分鐘30 小時(shí)的免費(fèi)管道運(yùn)行時(shí)長(zhǎng)公共項(xiàng)目可以直接免費(fèi)跑管道這個(gè)額度對(duì)個(gè)人學(xué)習(xí)和小團(tuán)隊(duì)試用完全夠。Azure DevOps Server 是自托管版本對(duì)應(yīng) 2019、2022 兩個(gè)大版本。它適合代碼必須留在內(nèi)網(wǎng)、不允許出域的場(chǎng)景。注意 Server 版本里某些 YAML 功能是缺失的比如環(huán)境的部署作業(yè)deployment job在 Server 2022 上支持但部分容器作業(yè)能力不如云版本。TFS2018 屬于老古董了除非你被老項(xiàng)目綁死否則不建議新裝因?yàn)楹芏辔臋n里的新特性它都沒(méi)有。判斷方法很簡(jiǎn)單你的代碼在 GitHub 或別人的云端倉(cāng)庫(kù)上選 Services代碼只能留在公司內(nèi)網(wǎng)選 Server。我一般建議個(gè)人開發(fā)者直接上 Services省掉自己維護(hù)服務(wù)器的成本。Server 版本要額外買許可證五個(gè)活躍用戶以內(nèi)用 Express 版是免費(fèi)的但安裝復(fù)雜度高不少。2.2 注冊(cè)與創(chuàng)建組織免費(fèi)啟動(dòng)流程無(wú)論用 Microsoft 賬戶還是 GitHub 賬戶都能注冊(cè) Azure DevOps。用 GitHub 賬戶注冊(cè)有個(gè)前提如果 GitHub 郵箱關(guān)聯(lián)的是支持 Azure AD 的組織就必須改用 Azure AD 賬戶登錄否則會(huì)卡在授權(quán)那一步。打開 Azure DevOps 官網(wǎng)選擇「免費(fèi)啟動(dòng)」會(huì)進(jìn)入組織創(chuàng)建頁(yè)。需要填三項(xiàng)組織名稱、主機(jī)位置、驗(yàn)證字符。組織名稱就是將來(lái)訪問(wèn) URL 的一部分比如填devops-learning最終地址就是https://dev.azure.com/devops-learning。主機(jī)位置一般選離你最近的數(shù)據(jù)中心國(guó)內(nèi)用戶通常選東南亞或東亞區(qū)域網(wǎng)絡(luò)延遲更友好。提示組織名創(chuàng)建后可以改顯示名稱但 URL 的標(biāo)識(shí)部分基本定了。起名別太隨意后面所有 SSH 克隆地址、服務(wù)連接、pipeline 配置都會(huì)帶上這個(gè)標(biāo)識(shí)。創(chuàng)建完成后系統(tǒng)會(huì)提示創(chuàng)建一個(gè)項(xiàng)目。項(xiàng)目有公共和專用兩種可見性CI/CD 學(xué)習(xí)階段選專用就好。項(xiàng)目名最好和倉(cāng)庫(kù)名對(duì)應(yīng)后面在 pipeline 里引用時(shí)會(huì)省事。接著用 Azure CLI 驗(yàn)證一下環(huán)境是否就緒az login az devops configure --defaults organizationhttps://dev.azure.com/devops-learning projectmy-first-project az devops user show --org https://dev.azure.com/devops-learning第一行是登錄 Azure 賬戶第二行設(shè)置默認(rèn)組織和項(xiàng)目讓后續(xù)命令不用每次都帶--org參數(shù)。第三行如果返回了用戶信息說(shuō)明命令行工具已經(jīng)能訪問(wèn)你的 DevOps 組織了這一步可以作為環(huán)境是否配通的快速自檢。2.3 代碼倉(cāng)庫(kù)準(zhǔn)備GitHub 還是 Azure ReposAzure Pipelines 支持的代碼源不少GitHub、Azure Repos Git、Bitbucket Cloud、TFVC、Subversion。絕大多數(shù)新項(xiàng)目用的是 GitHub 或 Azure Repos。選 GitHub 的話pipeline 可以從 GitHub 倉(cāng)庫(kù)拉代碼但需要在 Azure DevOps 里創(chuàng)建一個(gè) GitHub 服務(wù)連接。選 Azure Repos 省掉服務(wù)連接這一步因?yàn)橥谝粋€(gè)組織里天然打通。從實(shí)際操作體驗(yàn)來(lái)說(shuō)我建議第一個(gè) pipeline 用 Azure Repos 練手。原因有兩點(diǎn)一是少配一層 GitHub 授權(quán)二是 Azure Repos 的 PR 分支策略和 pipeline 觸發(fā)器的聯(lián)動(dòng)更直接。GitHub 集成可以等把 YAML 語(yǔ)法跑熟之后再加那時(shí)候就算遇到授權(quán)問(wèn)題也知道是哪里斷了。倉(cāng)庫(kù)里至少要先放一個(gè)代碼文件。不需要多復(fù)雜一個(gè) README 或者一個(gè)簡(jiǎn)單的main.py都行。因?yàn)楹竺鎰?chuàng)建 pipeline 時(shí)要能拉到一次代碼空倉(cāng)庫(kù)會(huì)導(dǎo)致管道創(chuàng)建失敗。3. 創(chuàng)建第一個(gè)管道從 YAML 到第一次綠勾3.1 兩種管道形態(tài)YAML 與經(jīng)典編輯器Azure Pipelines 提供兩種定義方式Y(jié)AML 管道和經(jīng)典管道。YAML 管道的核心是一個(gè)azure-pipelines.yml文件放在代碼倉(cāng)庫(kù)根目錄。管道定義跟著代碼走改了文件就是改了管道配置PR 里能看到管道變更的 diff這個(gè)特性在排查問(wèn)題時(shí)非常有用。當(dāng)前官方推薦的方式所有新功能基本都優(yōu)先支持 YAML。經(jīng)典管道是在網(wǎng)頁(yè)界面上用拖拽表單的方式配置構(gòu)建和發(fā)布配置存在 Azure DevOps 服務(wù)端不跟代碼走。它也有存在價(jià)值發(fā)布管道Release Pipeline里的 Gates 功能部署前自動(dòng)收集外部運(yùn)行狀況信號(hào)只在經(jīng)典發(fā)布管道里可用YAML 里沒(méi)有。另外任務(wù)組Task Group這個(gè)封裝復(fù)用能力也是經(jīng)典編輯器專屬YAML 里對(duì)應(yīng)的是模板Template。如果是新項(xiàng)目直接學(xué) YAML。但要知道經(jīng)典編輯器還活著老項(xiàng)目里大量存在遇到歷史管道維護(hù)時(shí)至少得能讀懂。3.2 最小可用的 azure-pipelines.yml逐字段拆解從空倉(cāng)庫(kù)開始第一個(gè)目標(biāo)不是復(fù)雜部署而是讓管道跑出一個(gè)綠勾。以下是我實(shí)際用過(guò)的最小 YAMLtrigger: - main pool: vmImage: ubuntu-latest steps: - script: echo Hello, Azure Pipelines! displayName: Print greeting - script: | python -c print(Python is ready) displayName: Check Python第一段trigger定義什么時(shí)候觸發(fā)管道m(xù)ain表示推送到 main 分支就跑。第二段pool指定代理池這里用的是微軟托管的 Ubuntu 鏡像不需要自己維護(hù)機(jī)器。第三段steps是任務(wù)列表每個(gè)script就是一條命令displayName是這個(gè)步驟在運(yùn)行日志里顯示的名字。把默認(rèn)分支改成main然后推到遠(yuǎn)端。推完之后去 Azure DevOps 頁(yè)面的 Pipelines 菜單里應(yīng)該能看到這次運(yùn)行已經(jīng)自動(dòng)啟動(dòng)。點(diǎn)擊進(jìn)入運(yùn)行詳情看到兩個(gè)步驟都變成綠色的對(duì)勾第一個(gè)管道就算跑通了。這里有個(gè)細(xì)節(jié)要注意YAML 的縮進(jìn)語(yǔ)法比較嚴(yán)格steps下的每一項(xiàng)都要保持相同的縮進(jìn)層級(jí)。我在實(shí)際使用中因?yàn)閐isplayName縮進(jìn)多了一格導(dǎo)致解析失敗報(bào)錯(cuò)信息非常抽象根本看不出來(lái)是縮進(jìn)問(wèn)題。如果遇到 YAML 解析錯(cuò)誤優(yōu)先檢查縮進(jìn)和冒號(hào)后面有沒(méi)有空格。3.3 從模板克隆與自定義頁(yè)面上的「創(chuàng)建管道」向?qū)鋵?shí)不是從零寫 YAML而是基于倉(cāng)庫(kù)類型和語(yǔ)言生成一個(gè)模板再讓你在編輯器里改。選擇 GitHub 或 Azure Repos 倉(cāng)庫(kù)后向?qū)?huì)掃描代碼推薦對(duì)應(yīng)模板。Node.js 項(xiàng)目會(huì)生成安裝 npm 依賴、跑測(cè)試、發(fā)布工件的模板。Python 項(xiàng)目會(huì)生成pip install和pytest的模板。從模板起步的好處是官方模板已經(jīng)幫你處理了緩存、依賴安裝、條件執(zhí)行這些細(xì)節(jié)。比如 Node.js 模板里會(huì)有- task: NodeTool0 inputs: versionSpec: 20.x displayName: Install Node.js這個(gè)NodeTool0任務(wù)專門負(fù)責(zé)在托管代理上安裝指定版本的 Node.js。versionSpec就是版本號(hào)可以寫成20.x這樣的通配符。自己寫的話得手動(dòng)調(diào)apt-get或nvm用任務(wù)更可靠。模板能覆蓋常見語(yǔ)言但一些特殊場(chǎng)景要自己加任務(wù)比如 Android 構(gòu)建要裝 JDK 和 Android SDKiOS 構(gòu)建必須用 macOS 代理。模板只是開始真正生產(chǎn)級(jí)的管道基本都要手改。3.4 推送觸發(fā)把第一個(gè)管道跑起來(lái)創(chuàng)建完 YAML 管道后管道會(huì)等代碼推送觸發(fā)。驗(yàn)證觸發(fā)邏輯是否正常只需要改任意一個(gè)文件提交然后在 Pipelines 頁(yè)面看運(yùn)行列表里有沒(méi)有新增一條記錄。如果要同時(shí)驗(yàn)證 GitHub 和 Azure Repos 兩種倉(cāng)庫(kù)源GitHub 那邊需要在項(xiàng)目設(shè)置里創(chuàng)建 GitHub 服務(wù)連接。創(chuàng)建過(guò)程會(huì)引導(dǎo)跳轉(zhuǎn)到 GitHub 授權(quán)頁(yè)面授權(quán)時(shí)需要選擇倉(cāng)庫(kù)訪問(wèn)范圍選「僅限選定倉(cāng)庫(kù)」更安全避免把整個(gè) GitHub 賬號(hào)暴露給 Azure DevOps。注意服務(wù)連接的名稱會(huì)在 YAML 里被引用。我習(xí)慣命名為github-read-only這種帶用途的名字比默認(rèn)的GitHub connection 1直觀得多。我一般會(huì)故意把一個(gè)錯(cuò)誤加進(jìn) YAML比如讓腳本退出碼非零確認(rèn)管道確實(shí)會(huì)失敗并展示紅色狀態(tài)然后再修回來(lái)。這一步能同時(shí)驗(yàn)證日志系統(tǒng)、失敗通知和修復(fù)流程是花五分鐘換來(lái)后面省半小時(shí)的做法。4. 把管道做厚階段、作業(yè)、任務(wù)、模板與自托管代理4.1 階段與作業(yè)從單步構(gòu)建到多環(huán)境部署單個(gè)管道要支持多環(huán)境部署靠的是階段stage和作業(yè)job兩層編排。階段是管道里最大的邏輯分組通常對(duì)應(yīng)環(huán)境build、test、deploy-dev、deploy-prod。默認(rèn)情況下階段按順序執(zhí)行但可以用dependsOn控制依賴關(guān)系。作業(yè)是階段內(nèi)的執(zhí)行單元一個(gè)階段可以跑多個(gè)作業(yè)這些作業(yè)可以并行。stages: - stage: build displayName: Build Stage jobs: - job: compile pool: vmImage: ubuntu-latest steps: - script: echo Compiling... displayName: Compile code - stage: deploy_dev displayName: Deploy to Dev dependsOn: build condition: succeeded() jobs: - job: deploy pool: vmImage: ubuntu-latest steps: - script: echo Deploying to dev... displayName: Deploy devdependsOn: build表示這個(gè)階段必須等 build 階段跑完condition: succeeded()表示只有前面階段全部成功后才會(huì)執(zhí)行。這兩個(gè)組合是最常見的部署閘門寫法。condition是一個(gè)很關(guān)鍵的表達(dá)式字段。常見的取值有succeeded()、failed()、always()還有基于變量的判斷如eq(variables[build.reason], PullRequest)后者可以區(qū)分推送觸發(fā)的運(yùn)行和 PR 觸發(fā)的運(yùn)行。多作業(yè)并行是托管代理最實(shí)用的能力。默認(rèn)情況下 Azure DevOps 會(huì)給每個(gè)作業(yè)分配一個(gè)代理實(shí)例免費(fèi)額度是按分鐘計(jì)的并行作業(yè)越多消耗越快。自托管代理不會(huì)消耗 Microsoft 托管額度這也是很多團(tuán)隊(duì)搭自托管代理的原因。4.2 任務(wù)與腳本跑命令、裝依賴、發(fā)工件任務(wù)是管道的最小執(zhí)行單元。Azure Pipelines 內(nèi)置了幾百個(gè)任務(wù)常見的有NodeTool0裝 Node、UsePythonVersion0選 Python 版本、DotNetCoreCLI2處理 .NET 命令、CopyFiles2復(fù)制文件和PublishBuildArtifacts1發(fā)布工件。通用任務(wù)無(wú)法覆蓋的場(chǎng)景用script直接跑命令行、PowerShell 或 Shell。比如拉依賴和跑測(cè)試steps: - checkout: self - script: | python -m venv .venv source .venv/bin/activate pip install -r requirements.txt displayName: Install Python dependencies - script: | source .venv/bin/activate pytest tests/ --junitxmltest-results.xml displayName: Run tests with pytest - task: PublishTestResults2 inputs: testResultsFormat: JUnit testResultsFiles: test-results.xml displayName: Publish test results多行命令用|拼接每行一條命令。checkout: self顯式拉取當(dāng)前倉(cāng)庫(kù)代碼默認(rèn)行為也會(huì)拉但寫出來(lái)更明確。PublishTestResults2把測(cè)試結(jié)果文件發(fā)布到管道運(yùn)行記錄里這樣頁(yè)面上能看到測(cè)試通過(guò)率、失敗用例列表比只看命令行輸出直觀得多。發(fā)布工件是 CI 和 CD 的銜接點(diǎn)CI 階段產(chǎn)出的文件通過(guò)PublishBuildArtifacts1保存CD 階段再用下載任務(wù)取回來(lái)。工件有保留期設(shè)置默認(rèn) 30 天生產(chǎn)環(huán)境上會(huì)設(shè)為 90 天或更長(zhǎng)方便回溯歷史版本。4.3 變量、變量組與運(yùn)行時(shí)參數(shù)寫死配置是管道維護(hù)的災(zāi)難源頭。Azure Pipelines 的三層變量機(jī)制能避免這個(gè)問(wèn)題。第一層是管道內(nèi)變量直接在 YAML 里定義variables: buildConfiguration: Release imageName: myapp:${{ parameters.tag }}第二層是變量組Variable Group存在 Azure DevOps 庫(kù)Library里可以跨管道共享。適合存不常變的配置比如服務(wù)器地址、告警 Webhook URL。同一個(gè)變量組可以被多個(gè)管道引用改一處就全部生效。第三層是密鑰變量存在變量組里并標(biāo)記為密鑰運(yùn)行時(shí)在日志里自動(dòng)打碼。數(shù)據(jù)庫(kù)密碼、API Key 這類敏感信息必須用這種方式不能明文寫在 YAML 里。引用變量組的寫法variables: - group: production-config - task: AzureCLI2 inputs: azureSubscription: prod-service-connection scriptType: bash scriptLocation: inlineScript inlineScript: | echo Deploying to $(serverUrl)$(serverUrl)會(huì)在運(yùn)行時(shí)從production-config變量組里取值。注意 YAML 里變量引用的兩種語(yǔ)法$(varName)是運(yùn)行時(shí)替換模板里的${{ varName }}是模板展開時(shí)替換。前者在任務(wù)執(zhí)行時(shí)解析后者在管道編譯階段就定下來(lái)了用錯(cuò)場(chǎng)景會(huì)導(dǎo)致取值不對(duì)。運(yùn)行時(shí)參數(shù)Runtime Parameters是更靈活的輸入方式parameters: - name: environment displayName: Deployment Target type: string default: dev values: - dev - staging - prod stages: - stage: deploy_${{ parameters.environment }} displayName: Deploy to ${{ parameters.environment }} jobs: - job: deploy_job steps: - script: echo Deploying to ${{ parameters.environment }}運(yùn)行時(shí)參數(shù)可以在手動(dòng)運(yùn)行管道時(shí)從頁(yè)面上選擇也可以被 API 調(diào)用時(shí)傳入。values限制了可選范圍避免手滑部署到錯(cuò)誤環(huán)境。我一般會(huì)給所有多環(huán)境部署管道都加這個(gè)參數(shù)省得每次改 YAML。4.4 模板與觸發(fā)器告別復(fù)制粘貼兩個(gè)以上的管道出現(xiàn)相同的任務(wù)序列時(shí)就應(yīng)該抽成模板。模板文件通常放倉(cāng)庫(kù)的pipelines/templates目錄下后綴還是.yml?;A(chǔ)模板示例# pipelines/templates/build-node.yml parameters: - name: nodeVersion default: 20.x steps: - task: NodeTool0 inputs: versionSpec: ${{ parameters.nodeVersion }} displayName: Install Node ${{ parameters.nodeVersion }} - script: | npm ci npm run test displayName: Install and test引用模板的管道trigger: - main pool: vmImage: ubuntu-latest extends: template: pipelines/templates/build-node.yml parameters: nodeVersion: 22.xextends是模板繼承管道本身不再寫steps全部由模板決定。另一種是steps里局部引用模板steps: - template: templates/build-node.yml parameters: nodeVersion: 20.x兩種方式的選擇標(biāo)準(zhǔn)管道結(jié)構(gòu)和模板完全一致用extends只有部分步驟復(fù)用用- template。模板可以嵌套但要控制層級(jí)三層以上排查問(wèn)題就很痛苦了。觸發(fā)器除了分支觸發(fā)還有計(jì)劃觸發(fā)和路徑觸發(fā)trigger: branches: include: - main - release/* paths: exclude: - docs/* schedules: - cron: 0 2 * * * displayName: Daily 2 AM build branches: include: - mainbranches.include是包含模式release/*會(huì)匹配所有 release 開頭的分支。paths.exclude排除docs/*目錄文檔變更不觸發(fā)構(gòu)建。schedules是定時(shí)觸發(fā)注意計(jì)劃觸發(fā)的時(shí)區(qū)默認(rèn)是 UTC國(guó)內(nèi)團(tuán)隊(duì)用的話要減 8 小時(shí)換算。PR 觸發(fā)器在 GitHub 場(chǎng)景里很重要pr: - main這個(gè)配置讓 PR 創(chuàng)建和更新時(shí)自動(dòng)跑管道驗(yàn)證防止壞代碼合并進(jìn)主干。4.5 自托管代理從下載、配置到加入代理池微軟托管代理省心但有兩個(gè)硬傷自定義軟件裝不了免費(fèi)分鐘數(shù)有限。跑大型編譯任務(wù)或者需要內(nèi)網(wǎng)資源時(shí)自托管代理幾乎是必須的。自托管代理的安裝流程在不同操作系統(tǒng)上一致以 Linux 為例mkdir myagent cd myagent curl -o agent.tar.gz -L https://vstsagentpackage.azureedge.net/agent/3.x/vsts-agent-linux-x64-3.x.tar.gz tar zxvf agent.tar.gz ./config.sh --url https://dev.azure.com/devops-learning --agentpool default --token XXXXX --unattended --acceptteeeula ./run.sh第一步創(chuàng)建目錄并下載代理包。第二步解壓。第三步是配置代理--url指向組織地址--agentpool指定代理池名稱--token用的是個(gè)人訪問(wèn)令牌PAT需要在 Azure DevOps 用戶設(shè)置里生成至少要有 Agent Pools 的讀和管理權(quán)限。--unattended表示非交互模式--acceptteeeula接受許可協(xié)議。最后./run.sh啟動(dòng)代理。代理啟動(dòng)后回到 Azure DevOps 頁(yè)面在 Project Settings - Agent Pools - Default 里應(yīng)該能看到這臺(tái)代理顯示為在線狀態(tài)。此時(shí) YAML 里把pool改成pool: name: default不再寫vmImage管道就會(huì)跑到這臺(tái)自托管代理上。提示自托管代理的run.sh在終端退出后就停了。生產(chǎn)環(huán)境要用systemd或者注冊(cè)成 Windows 服務(wù)讓代理常駐后臺(tái)。我一般用 systemd service 管理同時(shí)加上Restartalways代理進(jìn)程掛了能自動(dòng)拉起來(lái)。公司網(wǎng)絡(luò)有代理的需要在.env文件里加VSTS_HTTP_PROXY環(huán)境變量指向代理地址否則代理連不上 Azure DevOps。自托管代理的代價(jià)是你要為環(huán)境負(fù)責(zé)。托管代理上自帶幾百個(gè)預(yù)裝軟件自托管代理默認(rèn)只有基礎(chǔ)環(huán)境缺什么裝什么。我一般會(huì)在配置腳本里寫好apt-get install的依賴清單新代理從空白系統(tǒng)開始跑一遍腳本就能達(dá)到可用狀態(tài)。5. 避坑與排查五條最常見的翻車記錄5.1 YAML 解析失敗報(bào)錯(cuò)卻看不出來(lái)原因現(xiàn)象管道啟動(dòng)后立刻失敗錯(cuò)誤信息是YAML schematic validation failed或者Expecting a mapping不告訴具體哪一行有問(wèn)題。原因絕大多數(shù)情況是縮進(jìn)錯(cuò)誤。YAML 對(duì)縮進(jìn)極其敏感steps下的每一項(xiàng)必須保持層級(jí)一致script: |多行內(nèi)容里的命令如果比父級(jí)多縮進(jìn)或少縮進(jìn)解析器會(huì)直接報(bào)錯(cuò)。另一種常見原因是冒號(hào)后面忘了加空格。解決先把 YAML 丟到本地編輯器里開 YAML 語(yǔ)法檢查配合 Azure DevOps 頁(yè)面上的編輯校驗(yàn)提醒一邊改一邊看。我的習(xí)慣是本地用 VS Code 寫實(shí)時(shí)標(biāo)錯(cuò)比到網(wǎng)頁(yè)上試錯(cuò)快得多。另外 YAML 里不要用 Tab 鍵縮進(jìn)統(tǒng)一兩個(gè)空格這基本是行業(yè)共識(shí)了。5.2 私有項(xiàng)目每月 1800 分鐘額度不夠用現(xiàn)象月中管道就開始排隊(duì)運(yùn)行記錄里顯示No hosted parallelism has been purchased or granted。原因私有項(xiàng)目默認(rèn)每月只送 1800 分鐘30 小時(shí)多個(gè)并行作業(yè)或者長(zhǎng)構(gòu)建任務(wù)很快就會(huì)把額度吃完。公共項(xiàng)目可以免費(fèi)無(wú)限時(shí)跑管道但如果代碼是私有的這個(gè)方案不可行。解決短期做法是把不必要的 PR 觸發(fā)器關(guān)掉減少自動(dòng)運(yùn)行次數(shù)。長(zhǎng)期做法是搭自托管代理因?yàn)樽酝泄艽聿徽纪泄茴~度。我遇到一個(gè)跑 Android 構(gòu)建的團(tuán)隊(duì)每次構(gòu)建要 25 分鐘一個(gè)月 60 多次構(gòu)建托管額度完全不夠換了自托管代理后成本直降為零。5.3 自托管代理連不上一直顯示離線現(xiàn)象Agent Pools 里代理狀態(tài)是 offlinerun.sh啟動(dòng)時(shí)卡在Connecting to server。原因最常見的是公司網(wǎng)絡(luò)出口有防火墻限制代理需要訪問(wèn)https://dev.azure.com以外的多個(gè)域名比如*.vlabs.servicebus.windows.net、*.visualstudio.com這些域名被攔了代理就永遠(yuǎn)處于連接中狀態(tài)。另一個(gè)原因是代理版本太老和 Azure DevOps Server 版本不兼容。解決先確認(rèn)網(wǎng)絡(luò)策略可以在代理機(jī)上執(zhí)行curl -I https://dev.azure.com驗(yàn)證能不能通。代理程序的日志在_diag目錄下排查時(shí)先看這個(gè)文件。網(wǎng)絡(luò)沒(méi)問(wèn)題的話升級(jí)代理到最新版再重新config一次。5.4 Azure 資源管理器服務(wù)連接失敗現(xiàn)象AzureCLI2或AzureResourceManagerTemplateDeployment3任務(wù)報(bào)錯(cuò)提示Failed to get Azure Resource Manager service connection或者直接 401。原因服務(wù)連接Service Connection的認(rèn)證憑證過(guò)期了或者創(chuàng)建服務(wù)連接時(shí)只剩選了資源組級(jí)別的權(quán)限。常見的是把服務(wù)連接創(chuàng)建成了「服務(wù)主體認(rèn)證」模式但服務(wù)主體密鑰過(guò)期沒(méi)有及時(shí)輪轉(zhuǎn)。解決檢查項(xiàng)目設(shè)置里的 Service Connections選中對(duì)應(yīng)的連接點(diǎn)「Edit」走一遍重新授權(quán)流程。如果是 Azure AD 服務(wù)主體模式去 Azure AD 重新生成客戶端密鑰再回 DevOps 更新連接信息。排查時(shí)先確認(rèn)連接權(quán)限范圍給資源組權(quán)限的就別去嘗試列訂閱級(jí)別的資源否則會(huì)看到權(quán)限不足的假報(bào)錯(cuò)。5.5 經(jīng)典發(fā)布管道和 YAML 管道功能不對(duì)稱現(xiàn)象照著文檔寫 YAML 部署發(fā)現(xiàn)在 YAML 里沒(méi)有 Gates 功能。看老項(xiàng)目里有任務(wù)組的封裝自己在 YAML 里找不到對(duì)應(yīng)概念。原因Azure Pipelines 的兩套體系功能并集才是完整能力YAML 管道的某些能力比如環(huán)境部署作業(yè)是經(jīng)典發(fā)布管道沒(méi)有的反之經(jīng)典的 Gates 和任務(wù)組也是 YAML 沒(méi)有的。解決新管道優(yōu)先 YAML但碰到老項(xiàng)目或者特定需求比如必須用發(fā)布 Gates就別硬在 YAML 里折騰組件。正確做法是 YAML 管道負(fù)責(zé)構(gòu)建和測(cè)試經(jīng)典發(fā)布管道負(fù)責(zé)需要 Gates 的部署環(huán)節(jié)兩者通過(guò)工件銜接。架構(gòu)上多一層但每個(gè)環(huán)節(jié)用最合適的方式比強(qiáng)行統(tǒng)一省心。6. 裝完怎么驗(yàn)證一條流水線從提交到上線的完整檢查管道配置完最后的驗(yàn)證不只是看頁(yè)面上的綠色對(duì)勾。我從實(shí)踐中沉淀了一套檢查清單照著走一遍能確認(rèn)整條鏈路是真的通了而不是表面綠了。第一項(xiàng)檢查提交觸發(fā)。改動(dòng)代碼推到 main 分支去 Pipelines 頁(yè)面的運(yùn)行列表里看有沒(méi)有新增記錄。如果沒(méi)觸發(fā)先看 trigger 配置里的分支名對(duì)不對(duì)再看倉(cāng)庫(kù)的默認(rèn)分支是不是 main。很多從 GitHub 導(dǎo)入的倉(cāng)庫(kù)默認(rèn)分支是 masterYAML 里寫的 main 自然不會(huì)觸發(fā)。第二項(xiàng)檢查代理狀態(tài)。跑到自托管代理上的管道在運(yùn)行詳情里看 Agent 名稱是不是你的那臺(tái)機(jī)器。如果顯示的是 Microsoft-hosted agent說(shuō)明 YAML 里pool還是默認(rèn)的azure-pipelines沒(méi)切到自托管池。第三項(xiàng)檢查測(cè)試報(bào)告。管道步驟里加了PublishTestResults2的去運(yùn)行頁(yè)面的 Tests 標(biāo)簽看統(tǒng)計(jì)總共多少用例、多少失敗、失敗的具體函數(shù)名。這里能看出測(cè)試數(shù)據(jù)有沒(méi)有成功采集比終端日志里的輸出更結(jié)構(gòu)化。第四項(xiàng)檢查工件。進(jìn)入運(yùn)行詳情找 Artifacts 區(qū)域確認(rèn)構(gòu)建產(chǎn)物發(fā)布了多少 MB、文件列表對(duì)不對(duì)。再點(diǎn)下載解壓后抽查一個(gè)文件內(nèi)容是不是最新代碼編譯出來(lái)的。這個(gè)驗(yàn)證能提前發(fā)現(xiàn)工件沒(méi)更新這種坑人的問(wèn)題。第五項(xiàng)檢查部署結(jié)果。如果是多環(huán)境管道走到最后確認(rèn)deploy_prod階段的日志里有明確的成功輸出。我會(huì)在部署腳本最后加一條驗(yàn)證請(qǐng)求比如curl -I打到部署后的服務(wù)地址確認(rèn) HTTP 狀態(tài)碼是 200 才返回成功否則讓管道報(bào)失敗。最后的技巧是在管道末尾加一個(gè)自檢任務(wù)把構(gòu)建時(shí)間、提交 SHA、部署目標(biāo)環(huán)境打出來(lái)然后跑一次完整的 PR 驗(yàn)證。我的習(xí)慣是改完azure-pipelines.yml先在本地把 YAML 縮進(jìn)校驗(yàn)一遍再往一個(gè) topic 分支推一次觸發(fā)完整流程確認(rèn)每個(gè)階段都過(guò)了一遍才敢把變更移到 main 上。這套儀式感看似笨但已經(jīng)幫我擋過(guò)多次回歸事故了——最危險(xiǎn)的不是管道失敗而是管道綠了但產(chǎn)品是壞的。希望這些經(jīng)驗(yàn)?zāi)軒偷侥闵僮邘状螐澛贰1疚倪€有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
33044男人的天堂深夜备| 67914亚洲精品| 影音先锋中文字幕日本好一区二区| 国产怡红院| 97天堂| 99久久婷婷国产综合精品草原| 精品视频一区二区| 欧美日韩亚洲高清不卡一区二区三区| 天天综合91| 亚洲青青青视频在线| 国产日本顶级一区二区三区| 刺激性视频黄页| 在线观看成人性爱免费小视频| 久久久久久91香蕉国产| 另类在线| 911av网站免费观看| 97在线视频观看免费| 操操操操网黑人| 日本不卡高清视频| 天堂网亚洲区手机版| 亚洲男人天堂2016| 久久五月丁香| 屁屁影院一区二区三区国产| 鸥美中出| 人妻人妻天天碰| 视频分类 国内精品| 国内一级精品| 亚洲图片偷拍欧美| 1204av韩国| 69人妻人人揉人人躁人人精品| 91干熟女| 无码操逼视频一下| 九九热超碰97亚洲最新香蕉 | 一区二区三区麻豆| 91中出视频| 欧美天天综合站| 国产精品成人无码av| 日日骚中文字幕| 亚洲 se图 欧美电影| 探花一区在线| 91人妻素女| 超碰97护士| 超碰国产情侣自拍网| 99热66| 国产第25页在线观看| 波多野结衣一级视频| 国产精品久久久亚洲第一牛牛_在线观看 | 综合久久久久久久综合网| 男人的午夜天堂| 久久高潮妇女视频| 奇米四色网| 欧美日韩妖精91com| 欧美成人9797| 婷婷中文字幕| 久久97资源 网| 欧美中文字幕男人天堂久久精品 | 国产人妻久久精品一区二区三区| 91第一页| 97在线视频免费观看| 91亚洲影视| 少妇高潮九九九九| 久久精品国产精品一区| 啊啊啊啊网站| 日韩字幕一区| 久久久免费一级黄片| 强奸乱伦大香蕉网| 91啪啪| 啊啊啊操一区| 99在线观看无大码| 亚洲影视高清第一页| 国产97免费视频| 风间由美日韩欧美久久| 97天天插| 欧洲站一级二级三级h| 麻豆传媒一区二区在线观看| 91精品国产91久久久久久久久久久久| 综合色欧美| 强奸乱伦AV一天堂网| 欧美日韩在线小说 | 中国东北熟女老太婆内谢| 亚洲精品无码少妇久久| 青青草在线成人视频| 久久99999| 亚洲揄拍网| 欧美人妻另类在线| 四虎影视欧美| wwwxxx日本爽| www.夜夜| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 亚洲最大黄网| 97超碰精品图片| 国产三级资源在线观看| 久久毛卡| 午夜男人一级A片7777| 亚洲免费人妻在| 超踫中文字幕| 日韩中文9| 亚洲精品黑丝| 国产乱伦亚洲色图高清无码| 久久啊哟| 东京热综合久久一区二区| 最新亚洲黄色免费电影 | 亚洲图片另类| 日本三级日本三级99| 五十路熟女工口 | 无码久| 日韩精品影视| 黄色电影在线播放综合网站| 国产极品美女高潮无套在线观看| 亚洲成人网站在线观看| 日韩国产九九精品一区二区三区毛片| CCYY草草影院地址入口| 亚洲综合小说另类图欧美视频激情小说色五月天 | 欧美成人国产精品| 干少妇视频| 十八禁成人网站在线观看| 99.色网| 人妻少妇久久| 婷婷亚洲五月***久久| 亚洲熟女偷拍在线观看| 久综合国内精品自在自线| 天天流夜夜操| 午夜操一操| 日韩视频啪啪| 色99视频| 欧美日日网| 久热大香蕉| 亚洲日韩久久精品一区| 无码人妻精品一区二区中文| 亚州乱码中文字幕综合久久久| 青青草天天亲夜夜操网| 玖玖久久久| 日本裸体久久色噜噜| 尤物视频偷拍免费| 欧美日韩不卡a片| 欧美偷偷网| 在线另类| 91香蕉视频在线观看免费| 久久宗合亚洲| 五月色网| 人人操,操人人| 9久9久9久9久视频网站| 330dv亚洲成年视频网| 成年人黄色小视频网站| 久久专区| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 亚洲国产97| 成人色女网| 97人人射| 色综合尤物| 小日子操bb在线看| 伊香蕉综合久久久久久久噜噜噜| 色综合久久夜色精品国产天堂| 91碰超| 91中出视频| 99999久久久久9国产精品| 深夜激情无码| 欧美精品99久久久| 噜噜瑟| 天天草天天日| 99精品久久久久久久婷婷蜜桃| 久久熟女久| 百度百度日本操逼| 亚洲极品| 级品肉射| 亚洲熟女乱色一区二区三区久久久| 亚洲综合另类| 另类在线| 新婚人妻扶着粗大强行坐下| 美中日韩无码| 色婷五月| 国产视频一区二区免费| 精品成人亚洲午夜电影| 97超碰磁| 黑人狂躁日本妞一区二区三区| 亚洲欧洲日韩天堂av| 欧美激情性久久久久久| 成人亚欧免费视频| 色色五月天激情| 91久久久久久久久18| 久久久久9999| 99啪啪| 欧美超碰9798| 1024久久高清视频| 日韩久久三区| 超碰99re| 久热网| 超碰97亚洲| 一级黄色视频网| 日韩亚洲中文有码视频| 69精品久久久久中文字幕| 婷婷色网| 色蜜AV| 天天搞在线综合网| 亚洲国产尤物yw在线观看| 精品欧美А∨无码黑人大荫蒂| 日韩欧美俄罗斯A片| 日日操免费视频| 秋霞成人一级在线观看| 天天添天天干电影| 干b网| 91丝袜视频在线观看| 在线视频免费播放一区| 久久精品国产精品亚洲艾通辽熟妇 | 吻戏激情性巴克| 高树玛利亚无码流出| 激情综合五月天| 大香蕉欧美国产日韩高潮| 91国产丝袜白虎| 都市久久精品激情亚洲| 狠狠操狠狠插| 免费男人的天堂| 天天色综亚洲91污| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 大学生口爆吞精| 亚洲成人免费电影| 狠狠色一区二区中文字幕| 国产精品农村妇女| 欧美色五月| 久艹免费| 亚洲色 国产 欧美 日韩| 中文字幕综合人妻| 久久久国产亚洲精品系列| 亚洲s在线观看| 亚洲91色| 五月天婷婷欧美三区| 精品国产乱码久久久A| 五月综合激情| 东北女人操逼| 婷婷美人网| 18禁美女裸体无遮挡啪啪| 日韩精品资源专区二区| 蜜臀99久久| 夜夜爽77777| 久久大香蕉97| a在线视频免费观看| 少妇高潮一区二区三区在线| 国产吞精a级片激情电影| 亚洲色图a| 日韩特一级久久| 国产精品区在线12p| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 天天天干977| 欧美精品三区| 九九九免费视频| 人妻少妇久久久| 91粉嫩萝控精品福利网站_精品影音先锋国 | 免费99精品国产自在在线| 久草在| 狠狠亚洲| www.狠狠| 一区二区免费电影久久| 少妇特黄一区二区三区| 欧亚乱色熟一区二区三四区| 日本日逼高清| 欧美色宗合| 另类av天堂| 伊色综合天堂色97| 熟女视频久久| 亚洲黄色网址视频| 国产日韩区| 神马麻豆福利院| 男人的天堂日韩| 国产人伦精品一区二区三区| 色五月首页| 日本日逼高清| 综合av社区| dy888午夜老子影视达达兔| 欧美97免费| 午夜福利在线合集| 蜜臀亚洲综合一二三四区| 在线啊啊啊啊| 美女尤物福利视频| a级理论午夜日本| 国产成人无码啪| 四虎国产精品永久在线囯在线| 成人久久久| 国产成人五月天丁香花| 日本大香蕉综合网红本杳社区| 综合天天网| 日日黄色三级网站| 免费超碰97久久| 成人热久久精品| 久热久操| 色 亚洲 91| 欧美亚洲丝袜美女电影| 人妻熟女一区二区三区在线| 偷拍 精品 另类 四区| 任你草| 2010男人的天堂| 抽插无码高清一区| 欧美 亚洲 偷拍自拍| 国产美女mm131爽爽爽爽| 成人性爱高清视频免费看| 人人做人人妻人人夜视频| 激情五月天社区| 男人的天堂啪啪| 色噜噜人妻丝袜AV资源| 日日夜夜模| 97国产精品在线观看| 久久久久久人体| 激情天天视频| 日本在线不卡一二区| 啊啊啊 在线观看| 中文乱码99| 日本三级韩国三级美三级91| 花花AV导航| 九月激情婷婷| 中文字幕精品丝袜| 91天天综合在线| 秋霞怕怕片| 日本护士高潮| 亚洲成人av色网| 久插不卡| 婷婷色香伊人| 爱媛媛久久国产福利| 五月婷婷综合网| 欧美91丝袜| 国产一区二区三区免费视频在性观看 | 超碰78| 99ri视频| 美女97超碰| 草草草视频| 在线色导航| 青青草在线视频人人想人人上| 日韩成人人妻网站| 静品嫩模一区二区| 嗯嗯嗯啊啊啊操的我好爽| 欧美色图电影| 伊人大香蕉在线| 无套后入双马尾| 久久精品店| 中文字幕精品三级久久久| 99久久精品无码一区二区毛片免费 | 最新9久久久9免费视频| 美国一区二区免费视频| 妺妺跟我一起洗澡没忍住| 亚州精人品大香蕉| 精品无人区麻豆乱码久久久| 美女黑人91神马| 青青青青青手机视频| 欧美爆乳精品一区二区| 婷婷色婷婷| 国产精品黄色三级av| 日本精品一区二区中文字幕| 日日夜夜天天| 伊人亚洲综合| 九久精品| 日本一区二区不卡精品| 嗯……啊…嗯嗯…啊…好舒服| 久久妇| 黄片www视频免费| 加勒比在线视频一区二区三区| 婷婷色色网| 久久人爽| 国产91会所女技师在线观看| 长长久久免费视频| 骚货操死你| 婷婷视频在线免费观看| 国产五码丝袜屁眼| 久久精品午夜国产亚洲AV无码| 热99这里只有精品| 久久视频,这里只有精品 | 国产美女裸体秘 永久无遮挡| 亚洲aV性爱| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照| 少妇综合| 超碰爽人妻熟女Av| 中文字幕一区二区视频在线观看| 日韩性爱播放| 中文字幕一区二区三区四五区| 午夜后入| 欧美有码激情视频一区二区三区| 欧美在线55555| 锕锕好爽 死我在线观看| 国产精品久久久久久久久久久久| 偷拍精品一区二区三区| 风韵犹存大大大大香蕉| 九久久九九久视频| 亚欧无码线免费观看视频| 欧洲一区二区三区四区在线观看| 免费的av网| 日本布卡一区二三区| 精品一区二区三区最新| 国产AV线| 国产91丝袜 在线播放| 大乔未久88一区| 九九热超碰97亚洲最新香蕉| 91人妻丝袜无码| 大香蕉十区| 99视频在线| 大香蕉国产中文自拍| 精品妇女一区二区三区| 色婷婷五月天| 日va操| 欧美精品日韩久久久九| 日韩av电影成人在线| 91美女网站| 啪啪啪综合网| 热99这里有精品综合久久 | 亚洲小说视频| 色九久| 麻豆精品一区二区三区四区免费观看| 精品在线78| 国产深喉| 五月亭亭六月丁香| 免费日韩黄片| 福利色色| 久久色激情一区二区三区| 久久伊人在线五区| 国产精品在线一区二区| 97超碰影音| 久久久久久综合久久伊人蜜月| 美女诱惑一区| 麻豆综合一区av| 图片区小说区| 综合网久久| 色路综合| 日韩性爱人人爱人人操| 一区二区三区精品黑丝白丝酒店对鸡| 江都AV在线| 亚洲成aⅴ人片不卡无码| 一区二区娱乐网站| 五十路熟女工口| 懂色Av一区二区三区| 国产隔壁老王影院在线| 日韩av一级黄片| 欧美黄色图片| 男人天堂网手机版婷婷| 人人做天天爱| 男人的天堂亚洲| 啊啊啊不要啊啊受不了了视频在线| 不卡在线观看视频| 人人看人人摸人人色| 日本99一区二区| 日韩一级性爱无码| 欧美美女自慰一区二区三区| 欧美se综合| 久久久久久精品免费看A级| yirendaxiangjiashipin| 亚洲色图日韩丝袜制服一区二区五月在线| 国产偷人伦激情在线观看| 婷婷中文字幕| 日韩性爱一级片| 老熟女91av| 久久香蕉国产线看观看亚洲女人 | 国产一级特黄大片处女| 91亚州欧美| 日本性爱欧美性爱| 啊啊啊啊啊啊啊在线| 国产美女mm131爽爽爽爽| 校园春色宗合网| 国产福利第一视频| 丝袜视频网国产90| 人妻激情另类| 日逼97| 天天操av懂色| 天天看天天日天天操| 欧美一区二区三区大综合| 免费一级a毛片久久久久久鸭绿欲| 国产乱弄免费在线视频。 | 午夜福利精品| 欧洲综合色图| 免费成人在线熟妇网| 97精品综合久久| 神马久久久久久| 欧美日本久久精品一区| 人妻啪| 中文字幕在线2| 97国产超湿| 亚洲av淫乱| 亚洲 欧美 色图| 大乔未久88一区| 综合久久中文字幕综合日韩精品| 婷婷av在线中文字幕| 亚洲极品| 老色69| 高清无码在线播放网站| 男同专区一区二区三区在线| 国产99999久久精品| 久7色| 亚洲精品天堂久久A∨51成人漫| 久久综合18p| 九九热精彩视频| 亚洲se电影| 日韩国产乱子伦App| 国产乱码久久久| 夜夜草我| 精品女同一区二区三区| 亚洲av热热色| 偷窥自拍亚洲色图| 自拍大香蕉乱插| 亚洲在线网站| 无码一区免费在线不卡| 100啪啪视频大全| 78精品| 国产风韵犹存熟妇三区| 偷拍片久久| 国产精品一区二区后入| 午夜精品久久999热蜜桃介男人用| 一区 欧美 日韩 麻豆| 色色国产| 久久久久久久久久久久黄色| 夜夜狠狠躁日日躁色视频| 素人播放一区| 三级片大波波| 日韩 欧美 校园一区| 亚洲情色1区| 国产精品久久发布| 久久久久久夜夜夜夜夜| 最新精品久久蜜桃| 伊人久久亚洲色欲综合网站 | 欧美日韩婷婷中文| 中文97国产| 第45页一区二区| 国产天天骚| 黄呦呦在线| 涩亚洲欧洲| 怡红院成人视频| 超清福利精品视频在线| 99re国产中文字幕| 神马精品视频| 精品妇操一区二区三区| 热热色中文无码| 蜜乳av一区二区| 九九色色| 亚洲和欧美裸体美女双飞视频| 国产97在线播放| 欧美精品二区视频在线| 亚洲精品视频在线播放| 欧美最婬乱婬爆婬性视频 | 婷婷国产精品一区二区| 日韩无码精品综合久久| 懂色AV一区二区三区| 成人色女网| 亚洲 日本 不卡| 欧美日韩*字幕一区| 亚洲欧美日韩精品久| 欧州激情视频在线一区二区| 精品v日韩欧美国产| 大香蕉AV丝袜| 亚洲黄色电影| 爱av免费| 91久久久视| 久久六六| 激情综合婷婷| 久久久久久裸体| 91人妻精华帖| 91逼逼女人91| 3PAV乱伦视频| 91久久精品国产| 人妻激情视频| 亚洲性爱无码乱伦av| 97碰碰日本乱偷人妻中文的| 日韩免费高清大片在线| 图色综合网| 丁香五六月啪啪| 婷婷情色五月天| 99re免费| 色综合美国| 国产91影院| 超碰97资源中文字幕| 黄页av| 97超级久久强资源| 成人羞羞视频国产| 中文字幕在线观看网页| 91九色蝌蚪在线观看| 亚洲天堂日本| 婷婷丁香在线| 国产区日韩区在线观看| 国产综合久久久鬼色| 成人激情无码在线视频| 亚洲亚洲亚洲天堂天堂 | 开心婷婷五月| 操逼无码操逼| 亚洲Av噜噜一区二区三区妖精| 老熟妇一区二区三区…| 欧美亚洲特P| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 欧洲小说色图视频另类| 熟女六十路| 伊人操| 天天综合站| 一区黄二区黄| 亚洲无码99| 澳门黄片一香蕉视频| 亚洲 欧美 色图| 色妇91| 看日韩操逼| 99久久久久久久久| www.99视频| 蜜乳AV一区| 亚洲成人av色网| 思思热国产在线视频| 欧美懂色综合网| 超碰一区二区| 国产熟妇一区二区| 99999精品视频| 99热精品在线| 色吧五月| 加勒比久久综合网高清| 亚洲视频中文一区| 日韩不卡一二三四| 啊啊啊快操我视频| 美骚妇av高清在线| 五月丁香拍拍激情综合三级| 嫩草 我啊~嗯~在线| 久艹99| 后X久久| 欧美拳交在线播放| 麻豆久久久一区二区| 亚洲综合五月天| 五月丁香六月激情| 丝袜夫妻自拍| 熟女色图在线| 内射中出日韩在线观看视频| 中文字幕55555| juliaann丝袜大战黑鬼| 蜜桃传媒一区二区亚洲| 韩国轻伦国内自拍一区| 青青草原综合久久大伊人精品| 啊a一区在线| 天美av在线观看| 99啪| 日本日日色视频| 九草在线大香蕉| 久操av在线| 女人18精品一区二区三区| 婷婷探花久久精品一区| 中文字幕二区| 欧美劲爆第一页| 欧美大香蕉久| a在线观看| 超碰国产情侣自拍网| 亚洲综合校园春色| 97手机日韩| 富女玩鸭子一级毛片| 五月天久久综合网| 黄色大香焦1级‘′‘| 三级三级三级日本99| 夜夜夜久久| 青操影院| 亚洲学生妹高清av| 亚洲国产欧美中文永久| 久久只有精品一区二区三区| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 免费人人搞97| 亚洲色天堂九9| 这里只有精品视频在线观看麻豆| 俺去俺来也在线www| 操操操操操操| 天天做天天爱| 九九热在线精品视频| 久久久久网站-538在线视频-欧美永久乱码 | 九九久久一区二区伦理| 日本熟妇熟色97一本在线观看| 婷婷五月天色网| 欧美激情性久久久久久| 亚洲色欲一区二区三区| 欧美色偷偷| 香蕉人人操tv| 成人精品欧洲亚洲| 日韩,欧美,中文在线| 97香蕉人人乳| 亚洲中文字幕在现观看| 亚 欧 美 综合| 欧美 色 亚洲| 蜜臀国产AV中文字幕| 翔田千里AV无码秘 三区| 男人的天堂亚洲| 97碰| 亚州久久9| 日本一区二区不卡精品| 91色堂| 免费A V在线播放| 青青草好吊| 五月婷婷激情| 最新av网站在线观看| 1204av韩国| 国产精品99精品视频网站| 麻豆区99999| 99久久婷婷丁香| com 首页 18岁 禁区 女优 免费 精选 同城 | 久久久中文版| 欧美人妻一区| 国产精品操| 久久视网78| 免費黃色視頻觀看一| 久9爱精品| 欧美综合骚| 日韩av在线精品观看| 99精品久久久久久| 97亚洲一区| 日韩av不卡在线看| 99re99在线视频| 欧美在线视频播放| www四虎| 口爆吞精在线观看| 成·人免费午夜在线观看| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 96久久精品一二三区色欲| 啊啊啊操死我| 蜜臀久久99精品久久久久久成人小说 | 天美av在线| 激情亚洲天堂| 精品91日日夜夜超清资源| 亚洲色图在线视频| 亚洲本色精品一区二区久久| 亚洲一本大道中文字幕无码在线| 国产人伦a片信息免费片| 欧 美 自 拍 偷 拍| 成人无码在线视频网站| 色色五月婷| 美日韩一卡二卡三卡免费人妻精品| 亚洲情色一区三区| 国产成人亚洲精品自产在线| 国内91熟女人妻丝袜天天精品视频在线| 日韩中文字幕熟妇人妻| 久99久视频| 大香蕉色欲AV| 青青草中文字幕| 99www.bibizy香蕉资源国产一区二区三区高清| 97AV爱| 激情五月综合网| 亚洲精品美女久久久久久久久| 999亚洲国产视频| 亚洲影院成人| 欧美激情综合色综合啪啪五月| 五月婷在线| 岛国成人av在线播放网址| 夜夜福利| 久热久| 青青欧美| 97在线公开视频| 婷婷伊人| 日韩在线女优天天干| 亚洲91极品| 午夜欧美神马久久久久| 午夜无码熟妇丰满人妻| 欧美精品欧美精品系列| 久久春色| 日韩操逼性鲍| 久久精品国产亚洲AV成人直播| 色婷网| 真实高潮91| 九九九精品色乱九九九| 久久黄黄黄| 成人免费性爱视视| 黑人精品成人一区二区三区 | 熟妇亚洲一区二区三区| 成人欧美日超碰| 久久久精精精| 制度丝袜99| 69精品人人人人| 丰满精品人妻少妇久久字幕| 亚洲 在线| 精品中文字幕一区二区| 人人爱操| 天天综合网1| 中文字幕乱亚洲美女精品一区| 乱伦熟妇一区二区| 五月久久HDAV| 亚洲 无码 有码 中文字幕| 欧美Ⅴ性爱| 丁香六月婷婷| 中文字幕一区二区三区人妻不卡 | 国产suv精品一区| 欧美αv.com| AV丝袜少妇| 秋霞色色影院| 日韩久久超碰色| 明星性猛交ⅹxxx乱大交| 久久女婷| 97欧美综合网| 99性视频| 麻豆一区二区三区在线看 | 激情av| 香蕉国产97| 国产精品久久久三级无码| 国产精彩女在线观看视频| 免费的黄片wwwwww| 校园春色中文字幕AV| 国产亚洲精品农村妇女 | 影音先锋新男人| 精品美女少妇一区二区三区| 免费的很黄很污的全部视频| 国产诱惑| 亚洲国产一区二区三区四区国产| 精品综合久久久久久97| 91人妻Pr| 超碰在线人人射| 熟女在线视频| 午夜操逼不卡| 久久6热精品99视频| 丁香五月天堂| 性久久久| 国产精品另类| 欧美专利1区2区3区4区5区免费| 蜜乳AV.COM| 美女91网| 亚洲成人妻日韩在线| 激情婷婷五月天| 加勒比综合| 狠狠干妹子| 男人的天堂VA在线| 亚洲色图亚洲无码强奸乱伦 | 国产高清成人免费视频| 午夜精品久久久久久久99热影院| 亚洲精品中文字幕一区在线视频| 亚洲综合影院| 日韩欧美久久婷婷网站| 欧美综合加勒比在线| 在线看片国产精品每日更新| 亚洲高清自拍| 亚洲黄色电影| 久久大陆| 黑人中出21连凳花野真衣| 五月丁香激情综合| 美女自卫慰黄网站免费| 男男H黄动漫啪啪无遮挡网站| 国产97在线 | 亚洲| 亚洲极品| 亚洲,欧美,综合网| 亚洲青青草| 精品中文日韩字幕视频| 裸模AV女优| 免费的av网| 天天干天天爽| 少妇一线天久久久久久| 精品国产久热在线观看| 激情久久久| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 乱伦3P视频| 在线中文字幕极品av| 亚洲国产一级精品毛一级精品看免费视频| 国产又黄又粗的视频| 亚洲AV秘无码一区..| 欧美亚洲国产91在线| 超碰97人妻| 日韩欧洲操屄视频| 欧美黑人精品在线播放| 亚洲精品毛片在线观看| 懂色av色欲av蜜臀av| 91精品国产高清久久久久久,亚洲成人| 浪人综合网| 天天日少妇逼AV| 台湾佬中文娱乐自偷自拍| 欧美 亚洲 大香| 亚洲双插| 国产精品高清2021在线| 亚洲成人性爱在线观看| 日韩高潮一区| 欧美日韩淫加| 91亚洲欧美综合高清在线| 蜜臀99久久精品| 日韩欧无码一区二区三区免费不卡| 日韩操逼性鲍| 婷婷激情五月| 欧美青青视频| 丁香九月婷婷| 亚洲超碰在线| 97色爱| 婷婷视频在线免费观看| 日本三级精品| 黄页av| 日韩情色AV| 人人做人人妻人人夜视频| 亚洲国产精品无码AV久久| 国产视频97| 欧美美女视频| 精品国产91av一区二区三区| 一级特黄aaa大片在线观看成人一级片在线观看| 97在线日韩中文字幕| 1024香蕉视频| 韩国午夜理伦三级好看| 91骚熟女| 亚洲深夜福利| 精品78| 色色色色日本| 男男H黄动漫啪啪无遮挡网站| 亚洲国产精品久久久久婷婷青年| 九九九久千久久激情蜜桃在线看 | 综合国产97| 物业黑人 AV一区| 久久男人精品| 黄资源| 欧美性爱18观看| 久久色一区| 国产在线观看一区二区三区| 大香网伊人久久综合| 熟女熟妇一区二区三四区| 亚洲欧洲国产综合av| 精品少妇人妻一区二区三区| 中文字幕性感少妇av| 热久久无毒不卡| 欧美精品999| 欧美黑人熟妇精品91| 蜜桃成人1区2区3区| 亚洲巨爆乳一区二区三区四季网| 极品白嫩福利在线| 日韩熟女操逼| 9久9久| 性交一区二区在线播放| 日本一区二区不卡精品| 91丝袜美女视频| 夜夜 中文视频rt| 久久久婷婷| 欧美不卡五十路| 欧美在线干| 久久9 9 9精品| 亚洲美女自拍偷拍视频| 久久国产在线一区二区| 成熟熟女国产精品一区二区| 99re9在线| 综合免费无码中文| 日本一区二区不卡| 热久久无毒不卡| 欧美一区二区传媒| 婷婷久久五月| 国产高清免费不卡av| 天天综合欧美| 亚洲综合一| 亚洲A色| 91人人爽人人爽| 亚洲免费人妻在| 日韩精品碰碰| 国产亚洲精品美女久久久| 久久久亚洲| 激情文学亚洲| 亚洲一区制服诱惑| 97色视频在线| 九九九九88| 98一区二区精品| 欧美在线播放aaaa| 乱伦av麻豆| 精品久久久久久无码| 麻豆美女丝袜人妻中文| 天久久久噜噜噜久久国产精品爽爽| 试看60秒| 久久大陆| 日韩综合第八区国产精品| 综合一区二区影视| 久久久久白虎| 大香蕉综合网| 中国农村熟妇毛片视频| 色欲三区| 白天啪啪晚上啪啪视频| 亚洲欧洲日韩国产自在线| 国产曰批免费观看久久久| 最新日产中文在线麻豆| 国产吞精a级片激情电影| 91精品大奶人妻| 欧美成va视频网站| 久久人妻视频网| 伊人97色天使| 强奸熟女一区二区三区| 国产97亚洲| 一级成人性爱| 婷婷五月天激情网| 国产精品白虎| 老司机免费视频在线91| www.久久超碰| 一区二区三区免费视频入口| 国产精品亚洲天堂网址| 婷婷中文网| 色女网日韩| 亚洲国产精品久久久久婷婷老年| 超碰97网站| 欧美亚洲尤物久久| 中文啪啪视频| 人妻夜爽夜夜爽| 日本人妻丰满熟妇久久久久久| 欧美成人A天堂片在线观看| 亚洲少妇色| 加勒比伊人综合| 丁香色狠狠色综合久久小说| 制服乱伦| 怡春苑东京热| 久久精品区| 久久人人爽人人爽人人片Ⅴ| 99综合自拍| 亚洲无 码A片在线观看麻豆| 亚洲最新av无码成人精品区| 国产精品久久久久绯色| aV中文麻| 色综合色欲色综合色综合色综合| 久热久| 男女做爰猛烈动高潮A片免费应用| 大香蕉九九| 国产日韩美女小穴视频网站不卡| 欧美gv在线观看| 日韩AV色图| 日韩噜噜69| 久久草大香蕉| 国产午夜无码片在线观看影视| 91久久免费视频互動交流| 久操网址| 99久久久| 中文字幕人妻色偷偷久久皮| 国产尤物在线三区| 精品日韩中文在线| 天天日天天色| 九九国产热| 神马午夜久久| 国产三级中文有码在线视频| 久热伊人99re| 男人的天堂三级| 男女激烈网站最新| 国产11页| 青青草一本道福利视频| 国产精品探花色| 这里有精品| 国桃视频产巨乳精品一区二区在线| 少妇天堂| 最新中文字幕在线亚洲| 蜜桃久久久久久久| 日骚逼视频| 黑人操一区二区| 精品人妻二区三区| 男人的天堂99| 日韩性爱再线视频| 人人综合| 亚洲不卡三级手机播放| 丁香久久| julia国产在线| 久久高清欧美国产| 麻豆 亚洲 97| 99久国产精品午夜性色福利| 97AV爱| 男人综合网| 日韩av乱伦| 干美女人妻| 天天搞在线综合网| 亚洲成人色情五月天丁香花| 欧州一区二区三区四区| 伊人天堂在线| 97超碰欧美中文字幕| 亚洲五月婷婷| 色九九久九九| 超碰久热| 亚洲精品国产拍免费91在线| 中国探花熟女| 欧美三四五区| 日韩久久激情精品| 校园春色美腿丝袜| 日本网色| 极品少妇久久久| 国产精品三级视频网站| 亚欧美综合| 欧美黄色大香蕉一区二区| 亚欧操逼片在线观看 | 操我啊啊啊啊啊| 中文字幕久久婷婷丁香五月天| 91女人的网站| 亚洲97成人在线观看| 婷婷色香| 一级二级三级黑人无码| 亚洲淫乱骚妇AV| 中文字幕日韩人妻视频| 黄色片G G G| 欧美日韩操逼嗦吊| 欧美欧美少妇| 精品无码久久久| CCYY草草影院地址入口| 伊人一区二区三区| 黄色区免费观看中文字幕| 欧美一品道| 色综合色综合网| 成年人黄色| 国产农村妇女精品1区二区| 日韩性爱毛片操骚逼| 激情四射婷婷六月天| 三级三久久线久久99久目本WW| 1024精品在线| 欧美成不卡网| 亚洲欧洲精品视频发布| 欧美综合综合| 人妻一区二区三区| 韩国成人精品久久久免费看| 久久精品国产97欧美精品亚洲| 精品妇女一区二区三区| 亚洲精品一区二区精品| 欧美综合狠| 亚洲最大91网| 岛国黄| 亚州性色| 久久久久久9999| 欧美日综合| 欧美一二三级精品在线| 美女骚尻视频| 久草综合京东| 可以在线观看AV的网站| 97天天日| 四虎在线免费视频| 欧美午夜精品久久久久久超碰| 香蕉热人人精品| 久久超碰com| 操死我了嗯嗯嗯| 丁香五月天激情综合| 高清国产精品无码| 午夜啊啊| 97国产天堂岛| 国产亚洲人妻综合日韩 久久| 久久欲| 欧美偷拍| 国产丸一视频| 亚洲一区二区三区麻豆传媒| 欧美黄色大香蕉一区二区| 国产一区二区成人av在线播放| 青青草在线视频播放器| 天天综合网入口~91| 1024香蕉视频| 久久精品国产亚洲AV无码电影 | 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 国产精品极品美女视频| 日韩免费a级毛片无码a∨| 亚洲另类色综合网站| 99re8免费高清在线| 欧美熟爽综合| 色九月| 91成人在线免费视频| 嫩草在线视频| 操国产高清| 十八禁黄色| 久久久久96| 狠狠色一区二区中文字幕| 怡红院怡春院| 色色国产| 色五月激情网| 国产九九九九九九九九| 做爱A级亚欧| 天天谢天天干| 手机看片91人妻| 91中文字幕| 久久啊啊| 熟妇色99| 偷偷人人精品女女久久| 热热色色综合| 亚洲男人的天堂网| 青女在线| 淫乱图区| 最新精品久久蜜桃 | 东京热,男人的天堂| 欧美精品亚洲精品日韩传电影| 性性久久| 性一级黄色录像片网站导航| 草B在线| 俺也射| 本道在线| 精品二区三四区五电影| 综合视频91| 夜夜骑操视频| 国产精品3| 99热国产| 东京热毛片调教| 亚洲综合有码| 91观看 国产白丝| 变态综合色| 国产深喉视频一区二区| 超碰在线一区二区|