日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满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ù)交付流程的開(kāi)發(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)景給出操作指南可幫助讀者快速掌握管道編寫(xiě)與發(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. 從找不到代理開(kāi)始為什么配置 Azure Pipelines 的第一步就讓人想退坑某次幫同事調(diào)一個(gè) Node.js 項(xiàng)目的持續(xù)集成YAML 文件寫(xiě)了三行自認(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è)組織到寫(xiě)第一條 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è)人開(kāi)發(fā)者直接上 Services省掉自己維護(hù)服務(wù)器的成本。Server 版本要額外買(mǎi)許可證五個(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)那一步。打開(kāi) 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)目有公共和專用兩種可見(jiàn)性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ù)開(kāi)始第一個(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í)不是從零寫(xiě) 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ù)專門(mén)負(fù)責(zé)在托管代理上安裝指定版本的 Node.js。versionSpec就是版本號(hào)可以寫(xiě)成20.x這樣的通配符。自己寫(xiě)的話得手動(dòng)調(diào)apt-get或nvm用任務(wù)更可靠。模板能覆蓋常見(jiàn)語(yǔ)言但一些特殊場(chǎng)景要自己加任務(wù)比如 Android 構(gòu)建要裝 JDK 和 Android SDKiOS 構(gòu)建必須用 macOS 代理。模板只是開(kāi)始真正生產(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è)組合是最常見(jiàn)的部署閘門(mén)寫(xiě)法。condition是一個(gè)很關(guān)鍵的表達(dá)式字段。常見(jiàn)的取值有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ù)常見(jiàn)的有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ì)拉但寫(xiě)出來(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ù)寫(xiě)死配置是管道維護(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 這類敏感信息必須用這種方式不能明文寫(xiě)在 YAML 里。引用變量組的寫(xiě)法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 }}是模板展開(kāi)時(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是模板繼承管道本身不再寫(xiě)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 開(kāi)頭的分支。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不再寫(xiě)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ì)在配置腳本里寫(xiě)好apt-get install的依賴清單新代理從空白系統(tǒng)開(kāi)始跑一遍腳本就能達(dá)到可用狀態(tài)。5. 避坑與排查五條最常見(jiàn)的翻車記錄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ò)。另一種常見(jiàn)原因是冒號(hào)后面忘了加空格。解決先把 YAML 丟到本地編輯器里開(kāi) YAML 語(yǔ)法檢查配合 Azure DevOps 頁(yè)面上的編輯校驗(yàn)提醒一邊改一邊看。我的習(xí)慣是本地用 VS Code 寫(xiě)實(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)象月中管道就開(kāi)始排隊(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。原因最常見(jiàn)的是公司網(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)限。常見(jià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)象照著文檔寫(xiě) 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 里寫(xiě)的 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)軒偷侥闵僮邘状螐澛?。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
午夜福利视频在线一区| 色婷婷成人综合| 欧美日韩亚洲天堂网| 丰满人妻一区二区三区免费| 天天躁日日躁AAAXX| 亚av顶级裸体一区二区三区四区五区| 北约熟女超碰| 天堂综合| 免费看久久久性性| 欧洲亚洲人妻无码高清久久三区四区| 99综合免费视频| 使劲用力艹少妇视频一区二区| 97精品久久| 国产毛片精品一区二区色欲黄A片| 超碰1997| 中文字幕日本久久| 大香蕉综合网| 国产suv精品一区二区四| 1024精品在线| 亚洲有薄码区日本系列中文字幕| 久久久久九九九九| 又摸又舔在线观看网站| 亚洲色色探花| 亚洲不卡一| 日本人妻A片成人免费看片| 锕锕好爽 死我在线观看| 天天搞在线综合网| 99热销国产这里有精品| 视频在线观看一二三区| 美女一区二区国产精品| 一区二区三区一亚洲中文字幕、综合区灬| 麻豆天美电影一区二区| 另类TS人妖一区二区三区 | 综合av社区| 国产精品久久久久绯色| 国产精品亚洲无码| 欧美淫乱视频| 91青视频| 国产精品免费日韩| 999久久久国产精品| 色噜噜综合在线| 婷婷在线播放| 天天干天天操天天操夜夜操天天操| 国产a级精品| 国产一区二区精品久久99| 色偷偷超碰亚洲| www.婷婷| 亚洲精品白浆高清久久久久久| 久久一本大香蕉| 99日韩| 97超碰欧美| 大香蕉伊人在线成人AV在线观看| 成人网站 免费观看| 欧美色图99| 夫妻四区五区六区| 美女自卫慰黄网站免费| 国产精品一二三在线看| 久久青青草在线视频| 在线97在线| 亚洲 欧美日韩 另类| 久久9久| 偷拍片久久| 96AV精品| 久操热线| 人人看人人爰人人操 | 99综合自拍| 亚洲欧美国产日本一区二区三区| 欧美日韩另类在线播放| 日本媚薬中文字幕在线| 久久精品一区二区三区蜜桃臀| 天天日天天插| 欧美精品1区2区3区| 性饥渴少妇av无码毛片| 亚洲巨爆乳一区二区三区四季网| 蜜臀网址在线| 日韩色女精品| 久久日本熟女精品一区| 国产偷仑| 欧美色偷拍| 强奸xx国产| 好看的91视频| 国产夫妻一区二区| 欧美日韩99精品麻豆传媒| 欧美激情中文字幕另类小说| 国产日产精品久久快鸭的功能介绍| 欧美日韩精品青青| 熟女高潮合集-永久久久-成人AV| 一区二区精品更新提醒| 999久久久久久久精| 玖玖爱免费观看视频| 翔田千里无码一区| 人妻天天爽天天爽三区| 人人弄人人摸| 午夜舔阴达高潮视频免费看| 男人亚洲天堂| 国产精品久久久久久久久久久久久久吹 | 九九九九九九九精品视频| 国产精品美女在线一区| 八戒无码国产午夜福利| 凹凸久久人人| 日本性爱少妇| 欧美成人性爱视频大全| 国人欧美精品一区二区| 国产亚洲精品第一最新| 欧美综合站| 成人av免费观看| 丁香五月婷婷啪啪| 99久热| 911粉嫩人妻| 手机看片1025| 丁香五月AV| 丁香五月社区| 久久人人妻| 清柠毛片| 亚洲视频二区| 啊啊啊啊好爽好舒服一区二区易域| 久久久无码精品人妻二区| 一卡二卡在线播放| 亚洲综合电影| 国产91啪| 久久性爱免费送| 日本在线视频导航| 婷婷月色| 中文字幕久久精视频久久大全| 超碰天天久久79| 日韩精品人妻中文字幕久久久| 色999偷自拍拍| 曰本精品久久久| 日韩精品9999| 久久久少妇诱惑精品视频| 在线观看啊啊啊啊啊| 国产精品9999| 亚洲精品尤物yw在线影院| 香蕉久久AⅤ...| 粉嫩av在线一区二区| 首页中文字幕中文字幕免费| 91日韩在线| 久久久精品日本一道| 亚洲国产精品久久久久婷婷青年| 日韩电影天堂视频一区二区| 97爱综合| 日韩性爱播放| 亚洲无限观看| 狠狠爱夜夜| av爱爱爱| 欧美日韩性感| 91天美免费| 91视频伊人| 强奸乱伦动态污图免费| 亚洲欧美精品91| wwe 天天干.com| 大干人妻| 日本操逼二区| 日韩美女久久一区二区三区| 激情婷婷丁香| 91色色网站| 亚洲精品aa久久伊人| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 91久久免费视频互動交流| 日本国产高清色www视频在线| 久久97| 日本一天色道久久久精品视频| 精品无码产区一区二| 国产强奸乱伦第1页| 狠狠色狠狠色狠狠五月| 美女露胸露屁股| 91碰碰| 操屄日韩| 欧美天天拍| 大白逼三四级| 欧美老妇曰批的视频| 五月花婷婷| 1204人成网站色www| 国产AAAAAABBBBB| 激情五月综合网| 人妻少妇精品久久久| 色图四区| 亚洲综合五月天婷婷丁香| 国产精品丝袜久久亚洲不卡| 亚洲福利影院一区久久| 超碰日本97美女人妻人人玩人人爱 | 精品人妻夜夜草| 欧美亚洲日本激情在线| 久久久久久久久久精| 亚洲欧美色图| wwwss在线观看| 亚州男人的天堂| 国产精品女aA片爽爽视频| 手机看片1025| 久久精品综合| 7777欧美成是人在线观看| 亚洲av热热色| 亚洲成?V人片在线观看福利| 亚洲男人的天堂网| 亚洲天堂AV在线播放| 国产久久一区二区三区野外在线| a'v在线资源| 欧美综合骚| 综合色好色| 天天操天天插| 97精品久久| 伊人久久88国产女| 亚洲图片欧美| 欧美天堂日韩三级国产传媒| 国产高清视频无码在线| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 91色狼| 亚洲成人av色网| 国产精品日日摸天天碰| www.婷婷| 青娱乐休闲视频在线观看| 亚洲日韩一区电影| 小说区 图片区色 综合区| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 亚洲欧美自拍偷拍| 蜜臀99久久国产| 亚洲色久| 91综合熟女| 大香樵伊人网| 天天影视色香欲综合网小说| 亚洲AV在线资源| 能在线播放的国产三级| 久久综合精品一区二区三区| 91视频精品| 综合亚洲情色| 国产精品无码久久久久2028| 亚洲做性| 久久久熟妇熟女国产| 欧美αv.com| 久久国语| 校园春色综合| 插穴性爱视频在线观看| 老鸭窝成人| 91女在线观看| 国产成人自拍视频在线| 极品销魂美女一区二区 | 国产三级在线现体验区| 夜夜免费视频| 久久久艹艹艹| 国产精品一级毛片不卡视| 久久精品日韩专区免费观看| 91大胆欧美| 91九色蝌蚪在线观看| 九七超碰人人乐| 亚熟在线| 丁香六月婷| 一区二区三区免费视频入口| 亚洲亚洲亚洲天堂天堂| 91逼逼女人91| 综合一区中亚洲国产成人综合精品 | 国产精品一区二区后入| 久久午夜伦| 久久久久久亚洲中文| 人妻熟妇一区二区三区| 麻豆天美制片厂网站视频| 欧美v亚洲v日韩v最新在线二区 | 中文有码9| 中文字幕十五区| 人妻中文在线| 久久九九视频九九视频| 一级乱伦网站| 91久久国产精品| 色大香蕉97N| 蜜臀av在线播放一区二区三区| 欧美一区二区三区互相| 国产深夜福利| 一本色道人妻久久| 九九九偷拍| 大香蕉欧美国产日韩高潮| 日本大片日本一区二区免费高清| 久久精视频美日韩在线视频| 情趣丝袜无码操逼视频| www.狠狠干.coom| 免費黃色視頻觀看一| 无码人妻精品酒店| 后入式999| 欧美 牲| 九九热精品免费视频| 国模精品娜娜一二三区| 金莲网址| 日韩国产欧美伦理在线| 1000部熟女视频在线观看| 精品一区二区三区18| 久久亚洲天堂| 东北操逼| 在线情色电影 91大 | 在线观看一级α片刺激高潮视频| 男女无套 免费网站| 欧美 亚洲 在线| 九九热av| 精精品人妻一区二区三区| 91模特在线观看| 中文熟女五十乱码在线| 啊啊啊啊啊啊啊在线| 妇人噜噜| 亚洲欧美日韩中文久久自慰| 青青草中出视频| 福利五区| 欧美激情亚洲| 欧美亚洲系列| 桃花色综合影院| 日韩免费高清大片在线| 久久久一区二区三区三州| 国产精品不卡高清在线观看| 成人免费毛片| 久久成人国产| 天天插天天操| 91丝袜美女| 91色图片| 中文字幕av一区二区三区人妻少妇 | 久久超碰久| 日韩97超碰中文字幕| 亚洲精品 大香蕉| 精品免费一区二区三区在线亚洲人成| 操b网站亚洲无码| 东京热熟女亚洲视频网站| 国产女人9999| 97人人夜| 91香蕉国产尤物视频| 亚洲一区操| 97干97色| 亚洲无码精品AV久久久| 澳门黄片一香蕉视频| 黄片直播三级黄片两女一男| 午夜福利在线视频1000| 国产日韩手机视频在线| 欧美狠狠操| 国产精品com| 精品妇女一区二区三区| 女人被添高潮免费视频| 激情综合av| 久久久久久久一级黄色打同平台| 欧美国产日韩清纯唯美| 校园春色家庭伦理欧美激情| 人妻激情视频| 综合久欧洲| 天天看人人操屄犊摸阴| 美女淫穴| 日本孕妇孕交| 亚洲熟妇AV日韩熟妇在线| 热的中文 热的有码 热的国产| 丁香五月av| 猛交交| 久久久久9久久久久| 一区二区三区不卡视频| 福利天天都操| 日本道久久综合色色| 97免费视频在线| 97资源亚洲| 美女黄页网站| 啊啊啊啊免费视频| 欧美人妻少妇| 亚洲色系另类精品国产| 欧美成人午夜免费福利785| 国产亚洲精品自在线亚洲情侣| 立川理惠无码一区二区| 99热精品在线| 搡老熟女国产1000部| 99激情视频| 欧美色天堂网在线视频| 久久一区二区高清免费| 婷婷四五区| 91bbb| 夜夜中出国产| 强被迫伦姧在线观看无码网站| julia在线观看久久| 天天影视色香欲综合网小说| 宅男午夜在线视频| 久久久久久国产成人| 国产精品视频| 亚洲无码久久久久久久| 极品少妇久久久久| 久久久久久久一级黄色打同平台| av影片在线观看不卡| 99久久久久| 97超碰色五月| 91路www| 久久在肏| 天天干美少妇一区| 少妇一级婬片免费放一级a性色.| baisiav| 日韩熟女三十乱伦| 97频视在线| 日韩一级片在线看| 粉嫩av在线| 亚洲诱惑| 亚洲中文字幕97久久精品少妇| 亚洲欧美首页| 九九九草| 麻豆国产原创AV色哟哟| 看一级特黄a大一片| 亚洲欧美综合网| 偷拍亚洲高清图片| 激情五月丁香五月| 一线黄色免费性爱片| 96超碰网| 蜜乳av一区二区三区四区不卡| 亚洲成人碰碰| 天天色综合天天操| 看大黄色大片原件| 99国产精品| 九9热伊人| 人人手机欧洲亚洲国产人妻| 性爱av在线免费观看| 久久国产在线一区二区| 天天欧美| 国产夫妻性生活视频| 少妇69中文| 深爱激情五月天| 国产浮力影院第1页| 中文字幕精品免费一区二区| 国产一区在线看| 午夜福利一区二区三区四区五区色婷婷| 97视频观看| 婷婷五月激情综合| 人人色人人操在线| 国产亚州高清国产拍精| 亚洲va有码在线天堂| 亚洲国产综合视频| 超碰免费97| 91 丝袜在线播放| 91爱网| 欧美综合色,www| 久久久久久人体| 伊人国产AV| 超碰天天去日穴| 日韩欧美~中文字| 国产九九九九九九| 一区二区三区在线日韩影院观看| 欧美激色| 久久伊人东京热| 久久有码视频| 啊啊啊操死我| 日韩性爱免费观看视频| 欧美性生活免费网| 九九探花视频在线观看| 国产精品久久伊人| 天天日少妇逼AV| 国产最新AV| 快点操死我| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| 久偷拍| 蜜桃狠狠色伊人亚洲综合 | 婷婷久草一区二区三区| 久极品在线观看| 亚洲情色在线| 97神马久久| 97免费在线视频| 国产Av超碰| 亚洲日韩国产欧美综合v| 五月丁香| 无码久| 蜜臀久久久99久久久久 | 亚洲欧美国产中文视频| 人人爱人人操人人性| 99热超碰在线| 亚洲精品国产av天美传媒| 91天堂丝袜美腿| 亚洲欧美国产va在线播放频| 免费作爱一级视频| 日韩一区二区熟女| 大香蕉手机在线| 亚洲一卡二卡在线免费| 久99视频| 欧美性爱一区二区三区四区 | 综合久| 日夜干射色啊| 亚洲精品久久久久毛片A片拉屎| 亞洲久久直播| 亚洲影院小综合| 熟女熟妇一区二区三四区| 俄罗斯一区二区视频在线观看| 国产精品久久久三级无码| 91成人在线| 亚洲在线欧美| 日韩一级片| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 国模吧 一区二区三区| 97欧美精品综合| 婷婷爽人人婷婷爽视频| 搡老熟女老女人老熟妇免费视频| 国产乱码精品久久久久久| 日韩肏逼视频| 麻豆视频test| 精品人妻一区二区三区在| 丁香六月天| 综合熟妇一区二区三区| 国产精品久久久久久片| 欧美综合网1| av天堂精品久久| 国产精品熟女九九九| 色色色日本| 九九九久千久久激情蜜桃在线看 | 中日韩免费看男女操逼大全| 欧美性爱精品一区二区| 日韩电影免费网站麻豆视频| 精品区国产区一区二区三区| 97欧美色综合| 91超级碰碰碰| 97色碰| 国产白领连续中出在线观看| 欧美一级黄色免费专区| 男生女生啊啊啊啊| 亚洲AV秘 精品久久老牛影视| 久久99精品九九久久久婷婷| 囯产操逼片| 伊人国产AV| 精品一区二区三区蜜桃臀赵总 | 91亚洲综合| yazhousetuoumei| 国产对白刺激视频| 日韩欧美久久婷婷网站| 亚洲欧洲小说图片视频| 日韩精品国产一区二区| 超碰社区97| 亚码激情| 国产无吗在线播放| 色妇91| 插欧洲美女欧美精品| 欧美亚洲手机在线| 91人妻视频在线| 激情抓乳插进去啪啪啪日韩 | 亚洲 小说 欧美 激情 另类| 97超碰免费人人性爱| 69精品久久久久中文字幕| 久久久涩| 青青操在线亚洲视频观看欧美在线| ′ !γ}丶。。久久精品欧美一区二区三区| 久操国产在线| 超碰人妻中文在线| 天堂8在线新版官网| 天天噜| 色偷综合| 97玖玖人妻| 黑人嘿嘿嘿超爽免费视频| 96精品久久| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 日韩欧美中文字幕搭讪巨乳美人妻视频| 久久久草成人网站久久久草成人久久久草久久久 | 国产玖玖| 午夜福利视频在线一区| 国产女大学生AV| 欧美伦乱| 色网在线| 色哟哟-国产专区| 国产精品老师| 伊人黄色片| 婷婷爽人人婷婷爽视频| 美女骚尻视频| 欧美激情色婷婷花野真衣一区二区| 91大学精品激情戏| wwwcaobibi| 在线观看亚洲成人精品| 日韩熟女精一区二区三区不卡| 精品无码久久久久| 久久一二三四不卡| JULIA人妻风俗店中出电影| 亚洲欧美精品福利在线| 岛国AB视频| 少妇一级婬片免费放一级a性色.| 劲爆欧美人妖三区91| 亚洲淫色网中文| 丁香色色网| 国产色精品午夜大片| 人人摸.人人色| 成年人网站在线免费观看| 色婷婷国产精品一区在线观看| 天天日夜干| 天天α片| 啊啊啊啊操死我了| 超碰碰激情97+久| 欧美成人国产精品| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 九九久久99| 97精品97| 91青青在线视频| 国产欧美日产一区二区三区 - 国产欧美日| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 思思热在线视频免费| 亚洲欧美人妻| 丰满美女一级毛片在线播放| 中文字幕日韩人妻视频| 日韩欧美tv一区二区在线观看| 久久人人舔人人爽舔人人av片| www.伪伪| 亚洲中文字幕网| 久久久久久性爱片| 国产精品久久久九九九| 中文字幕av片| 久久人妻| 伊人影院综合是一个与深夜成人在线| 亚洲熟女中文字幕在线| 蜜桃成人1区2区3区| 亚洲综合影视| 亚洲成a人片在线观看中文!!!| 国产精品久久久久无码Av网曝门| 亚洲91在线播放影院| 去干网最新版| 热天堂一区二区| 大肉棒导航| 南澳成人一级片在线播放| 欧美精品三区| 久久久精品视频免费观看| 欧美综合骚| 91老熟女91老女人| 老熟女乱伦片| 色婷婷丁香五月| 超碰人妻中文在线| 操国产高清| 无码抄逼网| 乱伦系列一区二区| 麻豆久久久久久久久丝袜| 嫩草 我啊~嗯~在线| 高跟丝袜AV专区国产| 亚洲男人的天堂网| 97视频免费播放| 大香蕉免费乱伦视频| 免费一级视频特黄色大片| 粉嫩久久久久| 人人看人人插| 国产有码一区| 在线亚洲欧美| 日韩国语字幕| 欧美乱欲| 日本不卡在线二区三区| 亚洲综合第一页| 台湾佬激情综合| 午夜精品久久久久久久99热影院| 97国产超碰| 欧美v日韩欧亚洲电影天堂色诱,国产传媒| 日韩丝袜二区| 国产乱人伦AVA麻豆软件.| 中文字幕一区电影在线观看| 日韩 欧美 视频 在线 一区| 免费亚洲黄色视频在线观看| 欧美大的香蕉有线电视视频| 东京热毛片177b2viP| 婷婷五月天色色| 国产日韩精品一区二区三区| 亚洲图片 91| 久久激情五月| 91青视频| 国产精品福利视频| 亚洲免费看片| 麻豆黄站| 久久久久亚洲Aⅴ无码| 亚洲黑丝在线| 国外91| 青青草大香蕉视频| 欧美色图20p| 91人妻尻屄视频| 97欧美色资源| 97综合久久| 强奸乱伦麻豆| 欧美国产成人在线| 婷婷色综合欧美日韩| 婷婷色五月激情| 久久偷拍人| 超碰人人操97碰| 欧美三级中文字幕hd| 婷婷色色五月天福利| 伊人久久婷婷| 九九九草| 亚洲啪AⅤ永久无码| 91在线免费观看处女| 丰满人妻一区二区三区四区| 制服乱伦| 天堂精品一区| 国产区91柔拿会所技师| 男人的天堂在线| 老司机深夜18禁污污网站| 国内黄色精品| 日韩性爱长视频免费| 香蕉在线一区二区三区| 亚洲高清色综合| 九九热九九| Blackedraw视频一区二区| 东京热熟女亚洲视频网站| 91在线秘 男同| 青青草精品| 国产福利电影| 91亚州欧美| 性爱视频免费网址| 有码人妻系列| 极品白嫩美少妇在地板上位骑射淫水泛滥| 99re这里只有精品中心播放| 色噜噜国产精品视频一区二区| 成人网址在线观看| 亚洲高清欧美总合| www.色五月| 男人的天堂2019| 亚洲有薄码区日本系列中文字幕| 97伊人| 超碰人人乐97| 超碰97久久| 美骚妇av高清在线| 欧美亚洲一级在线观看| 欧美少妇性乱| 婷婷中文网| 亚洲 欧美 日韩另类 麻豆| 亚洲人妻AV| 国产精品欧美在线观看| 日本欧美成人片AAAA| 电家庭影院午夜69久久夜色精品国产69乱| 老女人爆菊| 亚洲AV无码乱码| 丝袜av一区二区三区| 亚洲国产一级黄色视频| 久久日本熟女精品一区| 日韩成人精品视频自拍| 我要色综合网站| 韩国久久97| 美女熟妇色| 夜夜操中文字幕| 在线看免费无码AV天堂的| 夜色综合| 日韩国产十八禁| 亚洲精品人妻吞精av| 国产日本顶级一区二区三区| 蜜桃久久综合视频| 久久久亚洲高清不打码| 激情视频图片| 欧美少妇一区二区三区| 三级色综合| 爱丝福利| 色av中文字| 亚洲密乳AV| 91 综合网| 激情图片亚洲色图| 久久香蕉国产线看观看猫咪av| 亚洲色交| 亚洲欧洲色情高清| 色播五月婷婷| 免费看黄片现成| www.人人摸在线视频| 久久久久久亚洲精品中文字幕人妻| 一区二区三区成人| 夜夜嗷嗷一区二区| 啊啊啊想要| 美女AV一区二区| 婷婷综合视频| 嗯~啊~快点 死我视频| 三级三久久线久久99久目本WW| 久久久精品国产亚洲伊人| 国产熟女精品区| 射综合网| 大香蕉啪啪啪| 操逼日韩无码| 老司机午夜福利视频一区二区| 凹凸视频在线观看伊人| 囯产精品久久久久久久久久二区三区| 欧美韩国你懂得在线| 嗯啊不要在线| 嫩草一区二区在线观看| 91精品国产91久久福利| 青青操日韩| 青青草精玖玖69精品| 欧美色图天堂在线| 成人性爱美曰韩| .精品人妻一区二区三| 在线看污网站| 啊啊啊啊在线播放| 成人女人国产| 婷婷六月天| 人妻精品一区二区在线| 综合影院永久入口国产| 超碰在线一区二区| 欧美日韩系列| 99re在线视频国产| 日韩在线人妻网站| 日本青青草在线| 九九人人操| 午夜偷拍久久熟女| 老熟女乱子伦中文字幕一区二区| 久久专区| 国产久久久久久| 一区二区无码视频| 亚洲欧美视| 国产地址二三| 精品999日本| 亚洲色图20p| 日韩啪啪啪啪啪| 色丁香五月婷婷| 亚洲一区二区性爱电影| 欧美日韩香蕉| 久久男人精品| 精品视频免费在线一区| 天天综合网网欲色| 欧美性性性| 久久成人东京热人妻| 色五月AV在线| 亚洲国产亚洲天堂| 99蜜月精品久久| 色拍偷亚洲| 9ⅰ久久久天天| 青青三级视频| 加勒比久久av| 果冻传媒A片一二三区| 久久成年精品| 中 文字幕一区二区三四 五 区日 日 骚| 丁香五月天婷婷姐| 丝袜喷水在线| 成人无码专区精品视频| 中文字幕片| 久偷拍| 日韩一级二级三级免费看完整版国语版| 一本正道久久熟女| 日日夜夜草草草| 久久久久久中文版| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | www久久99| 无码99| 日韩AV片| 男人下部插入女人下部| 91在线免费观看处女| 六月丁操逼| 久久久久ab| 97伦乱| 国产美女91| 欧美亚洲激情一二三| 欧美女同在线| 精品无av| 视频国产成人精品日本亚洲18| 日本人妻最新在线中| 日韩三A大片在线观看| 97资源视频| 日本一区二区做爱的视频| 亚洲中文字母在线播放| 五月综合色| 少妇国产不卡| 国产精品午夜福利视频| 密臀国产在线| 男人的天堂日韩| 97超碰欧美精品| 日本一级真人黄色性爱视频| 天天色天天干天天爱| 97国产高清视频在线观看| 久久婷婷五月天| 欧美|91色综合| 色九九九综合| 91精品国产91久久久久久久久久久久| 人妻铁牛TV| 内射老妇BBWX0C0CK| 亚洲精品中文字幕一区在线视频| 婷婷综合五月| 97视频在| 热G综合热G中文| 天天上日日上日韩精品| 亚洲导航深夜福利| 在线综合色| 91原创在线观看| 国产精品电影推荐| 试看60秒 爽| 欧美一级黄片视频在线| 九九色色| 91天射| 欧美天天综合网| 亚洲自拍天堂| 国产精品一区二区三区在线密挑| 久久久av爱| 97美日韩视频| 日韩中文字幕视频| 思思热在线视频精品| 91麻豆天美传媒HD| 超碰久超碰久| 日韩欧美成人综合在线| 美女尤物福利视频| 九七毛片九九毛片| 人人模人人看| 国产 丝袜 欧美中文 另类| 97香蕉人人乳| 天天干夜夜鈤| 中文字幕成人理论在线| 黄色av一区二区在线| 久久综合久色欧美综合狠狠| 国产丝袜一区二区三区| 国产精品久久久久久久久久久久久久吹| 亚州综合色| 啪啪视频亚洲第一| 农村妇女一级二级三级视频| 青青草久久在线| 精品一级毛片在线观看| 97人人干人人操| 69人妻精品丰满熟女区| 久久夜夜| 午夜免费福利视频一区| 欧美传媒一区| 中文字幕第9页萱萱影音先锋| julia高潮后不停追击中出| 熟妇高潮精品一区二区三区下载| 大象AV在线| 婷婷激情五月| 国产日产欧产美韩系列麻豆免费| 91久久免费视频互動交流| 国产按摩一区二区三区| 国产精品国产| 亚洲成人性| 日韩精品人妻中文字幕有码午| 奶水 人妻 哺乳 在线| 91精品人妻电影| 成人十八禁日韩欧美一二三| 亚洲精品久久久久毛片A片拉屎| 91操人| 岛国不卡超碰护士AV在线播放| 亚洲成人性爱网站在线播放| 97在线免费看| 欧美91在线| 成人精品在线观看| 天天躁日日躁狠狠狠躁| 色久桃花影院在线观看| 久草精品一区| 欧美综合自拍| 欧亚在线视频| 97天天综合网| 亚洲春色一区二区三区| 18精品一区| 亚洲丝袜少妇在线| 色欧美天天| 91性网| 青青网三级视频| 情色大香蕉| 国产 丝袜 欧美中文 另类| www.acm成人黄色毛片| 亚洲少妇综合在线播放| 色情婷婷久久五月天| 日韩在线一区二区| 精品一二三区女同| 国产久久av| 中文字幕精品专区搜索结果91| 人人人人插| 亚洲亚洲亚洲天堂天堂| 人人天天干干| 啊啊啊啊免费视频| 亚洲第一综合| 日本色色色网站免费看不卡| 97舔舔| 99久久精品欧美国产| 美女淫穴| 午夜福利在线合集| 蜜桃视频一区二区三区| 久操凹凸视频| 国产少妇内射| 五月天激情国产综合婷婷婷| 啊啊啊啊好爽好舒服一区二区易域| 大奶啊啊好爽 | 日本黄色裸日本黄色裸体| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 欧美图片偷拍| 翔田千里A片一区二区| 91网亚洲| 色哟哟 日韩精品| 五月大香蕉| 99久久婷婷| 久热伊人| 99爱爱| 超碰97中文| 熟女欧美日韩综合婷婷| 国产日韩在线播放av| 亚洲,欧美,综合网| 夜夜爽33333| 欧美一区二区三区四区综合| 自拍亚洲综合| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 人妻 欧美亚洲| 激情综合亚洲| 亚洲国产成人7777| 91精品人妻啪啪间| 欧美拳交在线播放| 欧美日韩啪啪电影| 91蜜桃传媒精品久久久一区二区| 六月婷婷综合| 亚洲 日本 国产 综合| 91青青在线视频| 九九九网页| 日韩人妻播放| 男人天堂网站| 久久久久96| 久久99国产综合精品女同| japan日本高清乱xxxx| 欧美操逼录像国产黄色国产| 亚洲高清视频在线观看| 免费强奸av| 国产午夜福利专区综合| 国产日韩中文字幕欧美| 一牛影视久久久一区二区三区| 精品日韩人妻精品一二三区| 天堂亚洲精品| 欧美乱妇狂野欧美在线视频| 日韩黄色电影网站| 福利视频香蕉免费一区二区在线| 激情五月天校园春色网| 亚洲熟妇丝袜在线观看| 1769一区二区| 精品无码一区二区三区| 国产欧美另类久久久精品课程| 日韩AV中文字幕电影| 日韩成人人妻网站| 99精品成人免费看| 97在线视频观看| 精品中文一区二区| 日日夜夜精品视频| 一本色道久久综合熟妇| 又大又白奶子| 在线中文字幕| 97视频免费在线观看| 国产又黄又爽又刺激久久久久久| 亚欧高清在线| 欧美天天综合| 992大香蕉| 男人的天堂在线| 97欧美精品综合| 97色碰| 日韩激情中文字幕有码| 欧美精品精品一区二区| 亚洲不雅视频1区二区| 男人天堂无码| 中文字幕十五区| 夜夜高潮夜夜爽高清视频一| 噜噜噜无码AV一级一级久久影院| 丰满人妻一区二区三区四区| 久久超碰97| 精品久久艹| 91亚洲欧美色图| 欧美一级色| 夜嗨影院| 啪啪视频亚洲第一| 一级做受视频免费是看美女| 97手机日韩| 超碰97.com| 影音先锋乱| 日韩视频啪啪| 大香蕉久| 一区二区三区四区免费视频| 影音先锋每日最新资源在线观看| 大色综合| 偷拍视频青青草在线视频| 国内一级精品| 久久精品区| 久久中文字幕人妻熟av女蜜柚| 91熟女.com| 91麻豆一二三区| 伊人aaa| 九九九精品一区二区无码| 美女高潮视频91| 欧美 亚洲 制服 精品| 激情五月天网站| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 青青操在线亚洲视频观看欧美在线| 欧美熟妇乱码在线一区| 久99久视频精选| 狼人综合婷婷激情四射 | 91GD.COM| 91狠狠综合久久| 屌色在线97视频| 很很干很很操| 青青草在线成人视频| 九色97| 激情色播| 婷婷综合久久| 欧美日韩m| 亚洲AV无码天美传媒一区| 欧美专利1区2区3区4区5区免费| 大香蕉十区| 欧州激情视频在线一区二区| 少妇同性| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚 | 91久热| 蜜桃中文字日产乱幕4区| 成人性爱电影网| 伊人网综合在线视频| 天堂无码精品国产久| 国产精品 久久久精品一牛| 啪啪视频免费在线观看| 美女黄页网站| 日韩丝袜高跟制服在线观看| 久久一二三四五六七八九区区| 色哟哟av网址| 中国熟妇| 久操精品| 久久欲| 大二网站亚洲| 无码黑人精品一区二区三区三| 校园春色第一页| 亚洲最大无码中文字幕网站| 六十路日本| 啊啊啊啊啊啊啊国| 亚91亚洲网| 久热99999| 亚洲97在线| 日本操逼视频不卡直接放| 日本 色 导航| 99国产精品视频尤物| 久久九九综合| 热久久精品| 国产美女口爆吞精| 久久久亚洲精品中文字幕人妻| 亚州综合| 四季AV综合网址| 亚洲熟女少妇免费视频| 精品少妇高潮久久| 91色综合| 国产精品爽爽va在线观看98| www.超碰| 日本精品性生活久久久| 99蜜月精品久久| 超碰人妻久久| 无码精品一区二区三区潘金莲| 国产精品无码av在线| 96精品在线| 啊啊啊啊啊好舒服视频| 天天久久| 国产高清免费不卡av| 人妻日日干| 亚洲情色一区综合| 5252色欧美在线男人的天堂| 啊啊啊想要| 乱伦系列一区二区| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 久久久免费懂色| 亚洲综合999| 久久香蕉国产线看观看猫咪av| 人人扣人人操| 天天摸夜夜摸| 青青青草原| 人妻丰满熟妇一区二区三| 91九色精品熟女内射| 日本97久久久精品| 亚洲se91| 国产成人无码久久精品| 免费农村成人少妇人妻Aa一区二区视频 | 日曰骚久久精品| 中文字幕AV乱伦| 久久思思热| 天美传媒av在线| 亚洲伊人成综合成人网| 免费a在线播放v| 人妻大相焦在线| 狼人狠干| 网页导航五月天免费一二三区| 激情丁香五月| 欧美制服另类丝袜| 久草精品一区| 秋霞 色色| 色欲久久综合| 中文字幕女同在线| 操一操摸一摸| 国产成人精品日本视频| 国产精品网站免费| 青青在线视频日韩欧美| 99精品在线观看| 久久久免费懂色| 国产极品精品美女视频| 精品国产一区二区三区av在线资源| 欧美综合 站| 亚洲精品一二区| 日本精品一区三区| 欧美瑟综合| 蜜乳AV色欲AVAV无码| 蜜臀亚洲中文| 日韩一级欧美一级国产一级台湾|