国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

前端工程化:保姆級(jí)教學(xué) Jenkins 部署前端項(xiàng)目

共 26466字,需瀏覽 53分鐘

 ·

2022-06-18 20:40

DevOps

提到 Jenkins,想到的第一個(gè)概念就是 CI/CD 在這之前應(yīng)該再了解一個(gè)概念。

DevOps Development 和 Operations 的組合,是一種方法論,并不特指某種技術(shù)或者工具。DevOps 是一種重視 Dev 開(kāi)發(fā)人員和 Ops 運(yùn)維人員之間溝通、協(xié)作的流程。通過(guò)自動(dòng)化的軟件交付,使軟件的構(gòu)建,測(cè)試,發(fā)布更加的快捷、穩(wěn)定、可靠。

CI

CI 的英文名稱是Continuous Integration,中文翻譯為:持續(xù)集成。

試想軟件在開(kāi)發(fā)過(guò)程中,需要不斷的提交,合并進(jìn)行單元測(cè)試和發(fā)布測(cè)試版本等等,這一過(guò)程是痛苦的。持續(xù)集成CI是在源代碼變更后自動(dòng)檢測(cè)、拉取、構(gòu)建的過(guò)程。

ci.png

CD

CD 對(duì)應(yīng)兩個(gè)概念 持續(xù)交付Continuous Delivery 持續(xù)部署Continuous Deployment

持續(xù)交付

提交交付顧名思義是要拿出點(diǎn)東西的。在 CI 的自動(dòng)化流程階段后,運(yùn)維團(tuán)隊(duì)可以快速、輕松地將應(yīng)用部署到生產(chǎn)環(huán)境中或發(fā)布給最終使用的用戶。

從前端的角度考慮,在某些情況下肯定是不能直接通過(guò)自動(dòng)化的方式將最終的 build 結(jié)果直接扔到生產(chǎn)機(jī)的。持續(xù)交互就是可持續(xù)性交付供生產(chǎn)使用的的最終 build。最后通過(guò)運(yùn)維或者后端小伙伴進(jìn)行部署。

cd1.png

持續(xù)部署

作為持續(xù)交付的延伸,持續(xù)部署可以自動(dòng)將應(yīng)用發(fā)布到生產(chǎn)環(huán)境。

cd2.png

Jenkins 安裝

示例服務(wù)器為 阿里云 CentOS 服務(wù)器。安全組中增加 8080 端口 Jenkins 默認(rèn)占用

Jenkins 安裝大體分兩種方式,一種使用 Docker 另一種則是直接安裝,示例選擇后者。不管使用哪種方式安裝,最終使用層面都是一樣的。 Linux 安裝[1], Docker 安裝[2]

點(diǎn)擊查看Linux安裝過(guò)程

# 下載 Jenkins 資源
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
# 獲取并導(dǎo)入信任 的包制作者的秘鑰
sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
# 升級(jí) yum 源中的所有包
sudo yum upgrade
# Jenkins 依賴于 java 所以需要安裝 JDK
sudo yum install java-11-openjdk
# 安裝 Jenkins
sudo yum install jenkins
復(fù)制代碼

如果最終 Jenkins 沒(méi)有找到包而導(dǎo)致沒(méi)有安裝成功,檢查第一步和第二部執(zhí)行結(jié)果并重新執(zhí)行。

可以使用 systemctl 命令管理 Jenkins 服務(wù) systemctl[3]

# 啟動(dòng) Jenkins 服務(wù)
systemctl start jenkins
# 重啟 Jenkins 服務(wù)
systemctl restart jenkins
# 停止 Jenkins 服務(wù)
systemctl stop jenkins
# 查看 Jenkins 服務(wù)狀態(tài)
systemctl status jenkins
復(fù)制代碼

啟動(dòng)服務(wù)后訪問(wèn)服務(wù)器地址 + 8080 端口,Jenkins 默認(rèn)為 8080 端口。

Jenkins 使用及 Freestyle 任務(wù)構(gòu)建

jenkins1.jpg

首次進(jìn)入使用 cat /var/lib/jenkins/secrets/initialAdminPassword 查看密碼。

隨后進(jìn)入插件安裝頁(yè)面,暫時(shí)安裝系統(tǒng)推薦插件即可。

然后創(chuàng)建用戶

jenkins2.jpg

構(gòu)建目標(biāo):拉取 github 代碼

點(diǎn)擊 新建 Item 創(chuàng)建一個(gè) Freestyle Project

jenkins3.jpg

在 源碼管理 處選擇 git ,輸入倉(cāng)庫(kù)地址,點(diǎn)擊添加。

jenkins4.jpg

輸入 github 賬號(hào)和密碼,這里的密碼有時(shí)候可能會(huì)出現(xiàn)問(wèn)題,可以使用 token github 如何生成 token ?[4]

配置只是一方面,同時(shí)服務(wù)器也要具備 git 環(huán)境。 yum install git

jenkins5.jpg

構(gòu)建目標(biāo):部署到本機(jī)

部署前端項(xiàng)目肯定是離不開(kāi) nginx 的。 yum install nginx。

安裝完成后同樣可以使用 systemctl 命令管理 nginx 服務(wù)。

nginx 具體配置這里就不說(shuō)了。本示例項(xiàng)目中,靜態(tài)文件托管目錄為 /usr/share/nginx/html/dist。

接著來(lái)到 Jenkins 這里。想要部署前端項(xiàng)目還需要依賴一個(gè) Node 環(huán)境,需要在 Manage Jenkins -> Manage Plugins 在可選插件中搜索 nodejs 選擇對(duì)應(yīng)插件進(jìn)行安裝,安裝完成后需要重啟才會(huì)生效。

jenkins6.jpg

然后到 系統(tǒng)管理 -> 全局工具配置 中配置 Node (吐槽:沒(méi)有安裝任何插件時(shí)系統(tǒng)管理以及其子頁(yè)面全是英文,安裝完插件后又變成了中文。這國(guó)際化不知道是系統(tǒng)原因還是它的原因 ??)。

jenkins7.jpg

隨后去修改剛才創(chuàng)建的任務(wù)。在 構(gòu)建環(huán)境 中會(huì)多出一個(gè)選項(xiàng) Provide Node & npm bin/ folder to PATH 勾選即可。然后在 構(gòu)建 中選擇 增加構(gòu)建步驟 -> 執(zhí)行 shell 輸入打包發(fā)布相關(guān)的命令。Jenkins 會(huì)逐行執(zhí)行。

npm install yarn -g
yarn install
yarn build
# 打包 build 后的文件
tar -zcvf dist.tar.gz dist/
# 刪除 build 后的文件
rm -rf dist/
# 移動(dòng) build 后的壓縮包到 nginx 托管目錄下。
sudo mv dist.tar.gz /usr/share/nginx/html
# 進(jìn)入托管目錄下
cd /usr/share/nginx/html
# 解壓
sudo tar -zxcf dist.tar.gz
# 刪除壓縮包
sudo rm -rf dist.tar.gz
復(fù)制代碼
  • 由于項(xiàng)目構(gòu)建時(shí)是在 Jenkins 的工作目錄下執(zhí)行腳本,會(huì)出現(xiàn)權(quán)限問(wèn)題。導(dǎo)致即使使用了 sudo 還會(huì)出現(xiàn)類似以下錯(cuò)誤。
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.
復(fù)制代碼

解決方案:在 /etc/sudoers 文件中增加 jenkins ALL=(ALL) NOPASSWD:ALL 表示在執(zhí)行 sudo 時(shí)不需要輸入密碼。

  • 如果不使用 sudo 則會(huì)出現(xiàn)以下錯(cuò)誤。
xxxxxxx: Permission denied
復(fù)制代碼

解決方案:修改 /lib/systemed/system/jenkins.service 文件。將 User=jenkins 修改為 User=root,表示給 Jenkins 賦權(quán)限。修改配置文件后記得重啟服務(wù)。

  • 構(gòu)建的過(guò)程中還可能出現(xiàn)以下錯(cuò)誤
ERROR: Error fetching remote repo 'origin'
復(fù)制代碼

解決方案:由于需要構(gòu)建的代碼在 github 上面,這種錯(cuò)誤表示拉取代碼失敗了,重試幾次就可以了。

工作目錄

上面提到一個(gè)很重要的概念就是 工作目錄 在上面的 shell 默認(rèn)就是在這里執(zhí)行的。工作目錄是由兩部分組成。

  • /var/lib/jenkins/workspace/ 類似于前綴吧。

  • web-deploy 這個(gè)其實(shí)是上面構(gòu)建任務(wù)的名字。

總結(jié):Jenkins 的執(zhí)行目錄是 /var/lib/jenkins/workspace/web-deploy。也就是說(shuō)輸入的每一條命令都是在這里面執(zhí)行的。(搞清楚定位能避免好多問(wèn)題,特別是前端的部署,就是打包,移動(dòng),解壓很容易搞錯(cuò)路徑。)

構(gòu)建目標(biāo):偵聽(tīng) git 提交到指定分支進(jìn)行構(gòu)建

  • 來(lái)到 Jenkins 中選擇 系統(tǒng)管理 -> 系統(tǒng)配置 找到 Jenkins URL 將其復(fù)制。

  • 隨后在尾部添加 github-webhook/ 尾部斜杠一定不要丟。整體結(jié)構(gòu)大致為 http://192.168.0.1:8080/github-webhook/

  • 登錄 github 需要集成的項(xiàng)目中添加 webhook。在 Payload URL 中將上述內(nèi)容填入。

jenkins8.jpg
  • 然后修改 Jenkins 任務(wù)配置 構(gòu)建觸發(fā)器中選擇 GitHub hook trigger for GITScm polling
jenkins9.jpg

由于在上面的源碼管理中已經(jīng)指定了main分支,此時(shí)如果這個(gè)分支的代碼有改動(dòng)就會(huì)觸發(fā)自動(dòng)構(gòu)建。

構(gòu)建目標(biāo):部署到目標(biāo)主機(jī)

在真實(shí)的開(kāi)發(fā)場(chǎng)景中,Jenkins 幾乎不會(huì)和前端資源放到一個(gè)服務(wù)器。大多數(shù)情況下 Jenkins 所處的服務(wù)器環(huán)境就是一個(gè)工具用的服務(wù)器,放置了一些公司中常用的工具。因此構(gòu)建到指定的服務(wù)器也至關(guān)重要。

1,系統(tǒng)管理 -> 插件管理 搜索 Publish Over SSH 進(jìn)行安裝。

jenkins10.jpg

2,然后在系統(tǒng)管理 -> 系統(tǒng)配置中找到 Publish over SSH 點(diǎn)擊新增,再點(diǎn)擊高級(jí),然后選中 Use password authentication, or use a different key

jenkins11.jpg

完成后可點(diǎn)擊右下角 Test Confirguration 進(jìn)行測(cè)試。

3,繼續(xù)修改構(gòu)建任務(wù)。先修改原有的構(gòu)建腳本。因?yàn)橐l(fā)布到遠(yuǎn)程,所以原有的發(fā)布命令要進(jìn)行去除。

npm install yarn -g
yarn install
yarn build
# 只打包,然后刪除文件夾。
tar -zcvf dist.tar.gz dist/
rm -rf dist/
復(fù)制代碼

4,選擇構(gòu)建后操作 -> Send build artifacts over SSH

jenkins12.jpg
  • Rransfer Set Source files:要上傳到目標(biāo)服務(wù)器的文件。它是一個(gè)相對(duì)路徑,相對(duì)于 Jenkins 的工作目錄 由于上面的 shell 執(zhí)行之后在工作目錄中只有一個(gè)壓縮包,so 直接寫(xiě)一個(gè)文件名即可。

  • Remove prefix:去前綴。假設(shè)此時(shí)打包文件在 /var/lib/jenkins/workspace/web-deploy/assets/dist.tar.gz,那么 Rransfer Set Source files 則應(yīng)該為 assets/dist.tar.gz,此時(shí) Remove prefix 配置為 assets/ 則可以去除這個(gè)前綴,否則會(huì)在目標(biāo)服務(wù)中創(chuàng)建 assets 。

  • Remote directory:遠(yuǎn)程的靜態(tài)資源托管目錄。由于配置服務(wù)器默認(rèn)為 /,所以 usr/share/nginx/html/ 不用以 / 開(kāi)頭。

  • Exec command:遠(yuǎn)程機(jī)執(zhí)行 shell,由于配置服務(wù)器默認(rèn)為 /, 所以 工作目錄也是以 / 開(kāi)始

執(zhí)行成功后查看執(zhí)行日志會(huì)有類似以下結(jié)果:

SSH: Connecting from host [iZuf6dwyzch3wm3imzxgqfZ]
SSH: Connecting with configuration [aliyun-dev] ...
SSH: EXEC: completed after 202 ms
SSH: Disconnecting configuration [aliyun-dev] ...
# 如果 Transferred 0 file 則需要查看配置的路徑是否正確。表示文件并沒(méi)有被移動(dòng)到遠(yuǎn)程主機(jī)中。
SSH: Transferred 1 file(s)
Finished: SUCCESS
復(fù)制代碼

構(gòu)建目標(biāo):釘釘機(jī)器人通知

1,系統(tǒng)管理 -> 插件管理 搜索 DingTalk 進(jìn)行安裝。文檔[5]

jenkins13.jpg

2,釘釘群創(chuàng)建機(jī)器人。釘釘群 -> 只能群助手 -> 添加機(jī)器人 -> 自定義

ding1.jpg

3,定義機(jī)器人名字和關(guān)鍵字,創(chuàng)建完成后先將 webhook 中的內(nèi)容復(fù)制。

ding2.jpg

4,Jenkins 中 系統(tǒng)管理 -> 系統(tǒng)配置 -> 釘釘 -> 新增 配置完成后可點(diǎn)擊右下角進(jìn)行測(cè)試。

jenkins14.jpg

5,修改構(gòu)建任務(wù)配置。

jenkins15.jpg
  • 通知人:atAll 勾選后 @ 不到準(zhǔn)確的人。??。輸入框內(nèi)可填寫(xiě)需要被 @ 人的手機(jī)號(hào),多個(gè)換行。

  • 自定義內(nèi)容:支持 markdown 寫(xiě)法,可以使用一些環(huán)境變量。192.168.0.1:8080/env-vars.html/

  • 實(shí)現(xiàn)默認(rèn) `@` 執(zhí)行人[6]

6,構(gòu)建成功

ding3.jpg

Pipline 構(gòu)建

上一章節(jié)中著重介紹了如何構(gòu)建 freestyle 的任務(wù),但是 Jenkins 遠(yuǎn)不止于此。在本章開(kāi)始之前強(qiáng)烈建議閱讀文檔[7],重點(diǎn)關(guān)注流水線相關(guān)內(nèi)容。

新建任務(wù) -> 選擇流水線 其他內(nèi)容可以都不用管,只關(guān)注流水線 有兩種選擇,演示就選擇第一種。

直接在 Jenkins 中書(shū)寫(xiě)配置。

pipline1.jpg

在項(xiàng)目的 Jenkinsfile 配置文件中寫(xiě)配置。

pipline2.jpg

在正式開(kāi)始之前應(yīng)該了解 Jenkins Pipline 的基礎(chǔ)概念。

pipeline {
    agent any // 在任何可用的代理上,執(zhí)行流水線或它的任何階段。
    stages {
        stage('Build') { // 定義 "Build" 階段。
            steps {
                // 執(zhí)行與 "Build" 階段相關(guān)的步驟。
            }
        }
        stage('Deploy') { // 定義 "Deploy" 階段。
            steps {
                // 執(zhí)行與 "Deploy" 階段相關(guān)的步驟。
            }
        }
    }
}
復(fù)制代碼
  • pipline:定義流水線整個(gè)結(jié)構(gòu),可以看做是根節(jié)點(diǎn)

  • agent:指示 Jenkins 為整個(gè)流水線分配一個(gè)執(zhí)行器,比如可以配置 Docker

  • stages:對(duì)整個(gè) CI 流的包裹,個(gè)人認(rèn)為沒(méi)多大用,還必須得有。

  • stage:可以理解為是對(duì)某一個(gè)環(huán)節(jié)的描述。注意:參數(shù)就是描述內(nèi)容,可以是任何內(nèi)容。不要想歪了只能傳遞 Build Deploy 這些。

  • steps:描述了 stage 中的步驟,可以存在多個(gè)。

了解到這里還是不夠的。流水線入門(mén)[8] 流水線語(yǔ)法參考[9]

Pipline 復(fù)刻 Freestyle

這里先直接把配置貼出來(lái)。后續(xù)結(jié)合內(nèi)容在進(jìn)行分析。

點(diǎn)擊查看完整配置

// 自定義 釘釘插件 的 錯(cuò)誤信息和成功信息
def successText = [
    """ ### 新的構(gòu)建信息,請(qǐng)注意查收""",
    """ ${env.JOB_BASE_NAME}任務(wù)構(gòu)建<font color=green>成功</font> ,點(diǎn)擊查看[構(gòu)建任務(wù) #${env.BUILD_NUMBER}](http://106.14.185.47:8080/job/${env.JOB_BASE_NAME}/${env.BUILD_NUMBER}/)"""
]
def failureText = [
    """ ### 新的構(gòu)建信息,請(qǐng)注意查收""",
    """ ${env.JOB_BASE_NAME}任務(wù)構(gòu)建<font color=red>失敗</font> ,點(diǎn)擊查看[構(gòu)建任務(wù) #${env.BUILD_NUMBER}](http://106.14.185.47:8080/job/${env.JOB_BASE_NAME}/${env.BUILD_NUMBER}/)"""
]
// 1,偵聽(tīng) github push 事件
properties([pipelineTriggers([githubPush()])])

pipeline {
    agent any
    // 環(huán)境變量定義。
    environment {
        GIT_REPO = 'http://github.com/vue-ts-vite-temp.git'
    }
    stages {
        // 2,拉取 github 代碼,通過(guò) GitSCM 偵聽(tīng) push 事件。
        stage('Pull code') {
            steps {
                checkout(
                    [
                        $class: 'GitSCM',
                        branches: [[name: '*/main']],
                        extensions: [],
                        userRemoteConfigs: [
                            [
                                credentialsId: '381325e4-0f9c-41ea-b5f6-02f8ea2a475a',
                                urlenv.GIT_REPO
                            ]
                        ],
                        changelogtrue,
                        polltrue,
                    ]
                )
            }
        }
        stage('Install and build') 
{
            steps {
                // 3,前面安裝過(guò)的 nodejs 插件使用
                nodejs('v14.19.0') {
                    sh 'npm install yarn -g'
                    sh 'yarn install'
                    sh 'yarn build'
                }
            }
        }
        stage('Pack') {
            steps {
                sh 'tar -zcvf dist.tar.gz dist/'
                sh 'rm -rf dist/'
            }
        }
        stage('Deploy') {
            steps {
                // 4,前面下載的 Publish Over SSH 插件的使用
                sshPublisher(
                    publishers: [
                        sshPublisherDesc(
                            configName: 'aliyun-dev',
                            transfers: [
                                sshTransfer(
                                    cleanRemote: false,
                                    excludes'',
                                    execCommand'''
                                        cd /usr/share/nginx/html/
                                        tar -zxvf dist.tar.gz
                                        rm -rf dist.tar.gz
                                    '
'',
                                    execTimeout120000,
                                    flattenfalse,
                                    makeEmptyDirsfalse,
                                    noDefaultExcludesfalse,
                                    patternSeparator'[, ]+',
                                    remoteDirectory'/usr/share/nginx/html/',
                                    remoteDirectorySDFfalse,
                                    removePrefix'',
                                    sourceFiles'dist.tar.gz'
                                )
                            ],
                            usePromotionTimestampfalse,
                            useWorkspaceInPromotionfalse,
                            verbosefalse
                        )
                    ]
                )
            }
        }
    }
    post {
        success {
            // 5,DingTalk 插件的使用。
            dingtalk (
                robot: '1314',
                type'ACTION_CARD',
                title'Jenkins構(gòu)建提醒',
                text: successText,
                btns: [
                    [
                        title: '控制臺(tái)',
                        actionUrl'http://106.14.185.11:8080/'
                    ],
                    [
                        title: '項(xiàng)目預(yù)覽',
                        actionUrl'http://github.com/'
                    ],
                ],
                at: []
            )
        }
        failure {
            dingtalk(
                robot: '1314',
                type'ACTION_CARD',
                title'Jenkins構(gòu)建提醒',
                text: failureText,
                btns: [
                    [
                        title: '控制臺(tái)',
                        actionUrl'http://106.14.185.11:8080/'
                    ],
                    [
                        title: '項(xiàng)目預(yù)覽',
                        actionUrl'http://github.com/'
                    ],
                ],
                at: []// 這里是手機(jī)號(hào)多個(gè)之間,隔開(kāi)
            )
        }
    }
}
復(fù)制代碼

這么多內(nèi)容手寫(xiě)無(wú)疑是很難受的,好在 Jenkins 提供了一些幫助工具。訪問(wèn)地址為:Jenkins地址 + /job + 當(dāng)前任務(wù) + /pipeline-syntax/,例如:http://localhost:8080/job/dev-deploy/pipeline-syntax/,或者進(jìn)入任務(wù)構(gòu)建頁(yè)面,點(diǎn)擊流水線語(yǔ)法進(jìn)入

pipline3.jpg

進(jìn)入該頁(yè)面后請(qǐng)熟讀并背誦以下三項(xiàng)。重點(diǎn)放到第一項(xiàng)。

pipline4.jpg

回頭看上面的腳本注釋都帶有序號(hào)。根據(jù)注釋序號(hào)開(kāi)始解釋。

1,在片段生成器中選擇 properties: Set job properties 生成代碼片段。由于只是使用了 git hook trigger 所以要對(duì)生成的片段稍作修改。

pipline5.jpg

2,如果不是為了偵聽(tīng) github push 選擇 git: Git 即可,但現(xiàn)在應(yīng)該選擇 checkout: Check out from version control,隨后填寫(xiě)信息生成代碼即可。

pipline6.jpg

3,選擇 nodejs: Provide Node & npm bin/folder to Path

pipline7.jpg

4,選擇 sshPublisher: Send build artifacts over SSH,像上面流水線一樣配置之后直接生成代碼即可。

pipline8.jpg

5,DingTalk 文檔

總結(jié): 通過(guò)插件生成的代碼,稍作組合就成為了完整的配置。但整體難度還是要略高于 Freestyle 任務(wù)。畢竟生成的代碼有部分也不是拿來(lái)即用的,并且 Pipline 基本語(yǔ)法一定要有所掌握。不然生成的代碼都不曉得放到哪里合適。

關(guān)于本文

來(lái)自:DoubleX

https://juejin.cn/post/7102360505313918983


The End

瀏覽 50
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評(píng)論
圖片
表情
推薦
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 超碰免费97| 伊人大综合| 安徽妇女BBBWBBBwm| 成人无码小电影| 色呦呦视频在线观看| 亚洲午夜无码| 少妇高潮av久久久久久| 欧美色图另类图片| 成人精品久久久| 欧美日韩高清一区| 久久九九综合| 99这里只有精品| 亚洲国产综合AV在线| 久久久久久久久国产精品| 日韩性爱视频| 成人性爱视频网| 亚洲h| 杨幂操逼视频| 久久99久久99久久99| 蜜桃视频在线观看18| 国产一区二区三区四区在线观看| 欧美性网站| а√在线中文网新版地址在线| 色香蕉影院| 殴美老妇BBBBBBBBB| av手机天堂网| 不卡无码在线观看| 黄色视频免费观看| 五月天成人网址| 强伦轩人妻一区二区三区最新版本更新内容 | 人人操人人干人人操| 一级特黄色片| 秋霞午夜成人无码精品| 啪啪免费网| 欧美激情网址| 日本在线免费视频| 黄频在线观看| 瑟瑟免费视频| 高清AV无码| 日欧视频| 中文在线字幕免费观看电视剧大全| 丰满少妇一级片| 俺去俺来也WWW色老板| 亚洲日韩中文字幕| 国产成人无码精品| 国产成人免费视频| 在线观看成人18| 婷婷五月天丁香| 乱伦AV片| 日韩无码免费| 一级爱爱爱| 激情图区| 好好的日视频| 一区二区三区四区久久| 国产av综合网| 麻豆AV96熟妇人妻| 亚洲三级av| 中文字幕有码在线| 精品久久免费视频| 久操视频在线观看| 亚洲40p| 91在线无码精品国产三年| 尤物网站在线观看| 欧美黄色网| 777三级| 五月天黄色电影| 亚洲性爱在线视频| 成人AV电影在线观看| 亚洲色图欧美另类| 狠操网| 中文字幕+乱码+中文字幕在线| 国产精品无码成人AV电影| 国产深夜福利| 日韩三级黄色| 亚洲精品欧美| 福利无码| 久久久久久国产免费A片| 欧美成人午夜福利| 日本一区二区三区视频在线观看 | 国产夫妻在线视频| 开心色播五月天| 婷婷五月在线观看| 亚洲免费AV在线| 欧美在线播放| www.日本黄色视频| 四色婷婷| 不卡的av| 182在线视频| 中文字幕乱伦性爱| 国产91在线亚洲| av天堂一区| 操嫩逼| 人人射人人爱| 欧美福利电影| 国产做受91一片二片老头| 国产熟妇码视频app| 国产一区二区00000视频| 无码精品久久| 无码人妻AⅤ一区二区三区| 91人妻无码| 天天爱综合| 亚洲素人无码| 国产高潮视频| 开心五月激情婷婷| 91人人妻人人做人人爽| 亚洲人人操| 黑人巨大精品欧美| 五月天激情片| 日日碰狠狠| 精品黄色片| 亚洲最新在线观看| 亚洲高清视频在线观看| 欧美老熟女18| 色操逼网| 国产欧美综合视频| 91免费视频观看| 欧美生活片18| 91一区二区在线观看| 河南少妇搡BBBB搡BBBB| 无码视频在线看| 国产成人久久精品麻豆二区| 色噜噜狠狠一区二区三区Av蜜芽| 岛国片资源| 骚逼久久| 天天爽天天做| 99久久视频| 午夜福利1000| 久久久久久麻豆| 水果派解说在线观看| AV网站免费在线观看| 亚洲天堂在线免费观看视频| 亚洲免费在线| 亚洲欧美日韩国产| 一二区免费视频| 二级黄色毛片| 高清无码学生妹| 在线免费观看黄色电影| 手机看片1024国产| 国产伦精品一级A片视频夜夜 | 亚洲AV无码成人精品一区| 天天日天天日天天日| 久久精品视频在线观看| 午夜精东影业传媒在线观看| 日本一级黄| 大香蕉在线视频75| 欧美黄色一级| 91探花视频精选在线播放| 精品成人视频| 亚洲国产视频一区| 精品国产午夜福利| 亚洲无码高清视频| 人人摸人人艹| 婷婷五月AV| 99日韩精品| 无码人妻丰满熟妇区17水蜜桃| 激情一一区二区三区| 美女做爱视频| 久久精品女人| 久色91| 日本中文字幕在线观看视频 | 91色色| av电影在线观看| 成人亚洲A片V一区二区三区蜜月| 日韩性生活网| 亚洲成免费| AV1区二区| 无码精品一区| 精品国产无码怀孕| 免费高潮视频| 国产精品大全| 翔田千里91| 中文无码影院| 日韩在线大香蕉| 欧美色图视频网站| 亚洲精品三级| 国产黄色精品| 人人综合| 狠狠色狠狠干| 91蜜桃在线观看| 少妇A片| 国产91无码精品秘入口| a日韩| 你懂的在线视频观看| 欧美午夜精品久久久| 成人超碰在线| 碰碰视频| 怡红院男人天堂| 久操人妻| 欧美香蕉视频| 人妻无码不卡| 欧美精品一卡二卡| 国产不卡一| 久久综合无码内射国产| 成人久久久久久| 日韩AV一区二区在线观看| 国精品无码人妻一区二区三区免费| 超碰久草| 伊人大香蕉综合| 久久99精品视频| 久草热在线| 九九热超碰| 色六月婷婷| 日韩A√| 无码123区| 无码一区二区久久| 欧美3p视频| 伊人久久香蕉网| 无码砖区| 在线观看18s| 特黄无码| 日韩成人免费在线| 青青草原免费在线视频| 97干在线| 色先锋资源站| 岛国电影av| 国产精品v欧美精品v日韩| jlzz18| 国产免费AV在线观看| 狠狠操免费| 在线a视频免费观看| 精品一区二区免费视频| 91亚洲国产成人精品一区二区三| 中文字幕88页| 久久久国产一区二区三区| 影音av在线| 91丨PORNY丨在线中文| 亚洲成人在线视频观看| 中文字幕9| 永久免费黄色视频网站| 欧美一级性爱在线观看| 九九re精品视频在线观看| 亚洲AV电影在线| 日韩精品无码人妻| 91久久无码一区人妻A片蜜桃| 国产成人主播| 污视频网站在线观看| 亚洲小穴| 淫色五月| 麻豆国产精品一区| 日逼大片| 国产精品成人片| 人妻少妇精品| 国产A片录制现场妹子都很多| 亚洲偷| 国产一级片网站| 另类老妇奶性生BBwBBw偷拍| 一级片黑人| 青青草国产在线视频| 九九re| 日本成人一区二区三区| 69欧美视频| 黄a无码| 中文字幕乱码中文字幕| 日韩一级在线播放| 成人A片一级| 国产三级视频| 亚洲无码激情在线| 日韩激情视频在线观看| www.99热视频| 熟妇一区二区| 麻豆午夜成人无码电影| 亚洲天堂视频在线| 久久国产精品波多野结衣AV| 懂色成人Av| 白峰美羽人妻AND-499| 秘蜜桃色一区二区三区在线观看| 日本爱爱免费播放视频| 91AV免费观看| 日韩精品一二三区| 中文字幕在线视频观看| a天堂8| 一级大黄色毛片| 影音先锋女人aV鲁色资源网站| 在线高清无码视频| 草草影院第一页| 一本高清无码| 中文字幕一区二区三区四区| 五月六月丁香激情视频| 91综合在线观看| 可以看的毛片| 色综合天天综合| 亚洲精品高清无码| 黑人AV七| 成年无码| 探花在线综合| 国产福利视频导航| 婷婷五月综合久久中文字幕| 免费aa片| 久久久久亚洲AV无码网影音先锋 | www国产亚洲精品久久网站| 国产在线欧美在线| 欧亚一区二区| 超碰免费91| 中文字幕日韩人妻在线| 日逼网址| 操B视频在线播放| 国产手机拍视频推荐2023| 影音先锋日韩精品| 秋霞午夜成人无码精品| 安徽妇搡BBBB搡BBB| 特一级黄片| 亚洲精品无码中文字幕| 玖玖在线视频| 日日夜夜超碰| 思思热思思操| 日韩五码| 狠狠狠久久久| 国产av中文| 一级A黄片| 五月婷婷丁香| 家庭乱伦影视| 亚洲精品久久久久avwww潮水 | 成人精品国产| 午夜福利高清在线观看| av老鸭窝| 青青国产在线| 中文字幕在线观看免费| 成人午夜小电影| 亚洲操逼电影| 精品99视频| 午夜成人三级| 久久婷综合| 日韩成人黄色电影| 懂色中国闺密偷情懂色AV| 揉BBB搡BBB搡BBB| 一级无码视频| 久久久三级片| 欧美粗大| 精品A区| 色人阁人妻中文字幕| 亚洲色图五月天| 亚州在线视频| 精品人妻一区二区三区四区 | 国产亚洲精品久久久久动| 大屌探花| 亚洲成人免费在线| www.91久久| 99久久人妻精品免费二区| 成人无码电影在线观看| 在线观看日韩| 最近中文字幕中文翻译歌词| 久久99久久99精品免视看婷婷 | 日韩国产AV| 在线观看一级片| 手机成人在线视频| 字幕一区二区久久人妻网站| 51妺嘿嘿在线电影免费观看| sesese999| 日本色影院| 999大香蕉| 久久草| 国产成人TV| 99er热精品视频| 激情五月婷婷网| 久久久久久性爱| 涩婷婷| 日韩精品成人专区无码| 在线国产激情视频| av资源免费观看| 亚洲免费观看| 久久波多野结衣一区二区| 二区不卡| 91青青草| 日批动态图| 精品人妻中文字幕| 性免费网站| 黄片网站视频| 亚洲AV无码成人精品区www | 日韩美女毛片| 麻豆影音先锋| 黄色一区在线| 少妇厨房愉情理伦BD在线观看| 人妻少妇视频| 婷婷国产成人精品视频| 成人在线视频网站| 特黄无码| 午夜熟睡乱子伦视频| 国产精品一区二区在线播放 | 91亚洲精品久久久久久久久久久久 | 国内自拍视频在线观看| 男女草比视频| 水果派AV| 国产免费AV在线观看| 性无码一区二区三区| 黄片观看| 亚洲成人三级片| 成人精品一区日本无码网站suv/| 国内自拍视频在线观看| 亚洲无码中文字幕在线| 精品福利在线| 国内精品久久久久久久久98| 国产麻豆视频| 草久免费视频| 精品一区二区三区蜜桃臀www| 韩国无码观看| 日韩99热| 欧美一二| 少妇成人网| 国产白丝在线观看| 18成人网站在线观看| 激情视频国产| 日本免费在线观看视频| 蜜臀一区二区三区| 久久成人在线| 91水蜜桃| aⅴ无码| 中文无码字幕视频| 欧美亚洲激情| 五月天激情av| 国产熟女视频| 大香蕉伊人精品| 国产成人女人在线观看| 天天色天天日天天干| 欧美三级欧美一级| 久久精品福利视频| 好男人av| 波多野结衣av在线观看窜天猴| 国产乱妇乱子伦视频免费观看让女人 | 伊人大香蕉网| 国产9熟妇视频网站| www插插| 无码人妻av黄色一区二区三区 | 在线三级av| 91传媒在线观看| 一区二区三区免费播放| 欧美日韩国产a| 国产午夜在线| 黄色视频日本免费| 女孩自慰在线观看| 久久亚洲av| 精品中文字幕在线播放| 黄色网页在线免费观看| 人人干AV| 91人妻人人澡人人澡人人精品 | 蜜芽AV在线| 精品无人区无码乱码毛片国产 | 日本一级婬片A片免费播放一| 色哟哟AV| 永久免费无码中文字幕| 三级片韩国AV| 欧美性爱-熊猫成人网| 风流老熟女一区二区三区| 男女日日批黄色三级| 精品综合网| 无码高潮视频| 在线观看三级网址| 北条麻妃无码观看| 黄色电影天堂| 伊人啪啪| 欧美黄色一级| 日韩精品成人在线| 亚洲三级电影在线观看| 亚洲乱码一区| 日本中文字幕无码| 精品欧美一区二区三区久久久| 91丨PORN首页| 激情淫荡少妇| 欧美性爱-熊猫成人网| 亚洲天堂在线看| 囯产伦精一区二区三区四区| 人人看人人爽| 日韩在线中文字幕视频| 日本一级黄色| 肏逼视频免费看| 亚洲欧美精品| 精品自拍偷拍| 人妻av无码| 亚洲网站在线免费观看| www.四虎成人网站| 日韩色吧| AV青青草| av天堂资源在线| 欧美成人网站视频| 天天拍夜夜操| 国产黄A| 亚洲男女免费视频| 91视频电影| 日韩成人无码全裸视频| 蜜桃Av噜噜一区二区| 高潮AV在线观看| 国产午夜精品一区二区三区嫩A| 德国肥妇熟妇BBwBBw| 东京热综合| 日本久久网站| 欧美中文字幕在线播放| 暖暖av| 亚洲网站免费在线观看| 一区二区三区四区五区六区高清无吗视频 | 色综合激情| 青草99| 天堂av中文字幕| 在线亚洲福利| 精品久久视频| 国产XXXXX| 天天色影院| 人妻啪啪视频| 深爱激情综合网| 午夜AV免费| 91在线观看| 影音先锋男人站| 日韩无码免费播放| 探花无码| 91无码人妻一区二区成人aⅴ| 苍井空视频| 5252a我爱haose01我愿| 亚洲无码一级电影| 黄色A级片| 色婷婷一区| 九九黄片| 中文无码播放| 国产精品久久久久久久久久久久久久久| 91人人妻人人爽| 射射AV| 无码精品一区二区三区在线播放| 丁香五香天堂网| 黄片高清| 一级a片在线观看| 九九热超碰| av青青草| 无码专区在线观看| 国产91视频在线观看| 中国丰满妇BBwBBwHD| 五月天久久久久久久| 大香蕉伊人操| 四川少妇搡bbbb搡bbbb| 色婷婷一区二区三区四区五区精品视| 人人草人人干| 手机av在线| 丰满欧美熟妇免费视频| A片视频免费看| 五月天久久婷婷| jizzjizz欧美| 国产精品无码专区AV免费播放| 在线免费观看无码视频| www.黄色大片| 囯产伦精一区二区三区四区| 激情av在线观看| 久久黄色网络| 欧美成人一区免费视频| 日本特级黄色毛片| 中文字幕永久在线| 欧美操逼视频| 日本免费黄色视频| 在线免费观看黄片| 99在线免费视频| 国产口爆| 亚洲天堂AB| 4444操| 正在播放李彩斐被洋老外| 中文字幕激情精品| 黄色操逼网站?| 黄色视频在线观看亚洲一区二区三区免费 | 在线观看者亚洲| 亚洲视频综合| 免费无码国产在线观看快色| 大香蕉69| 日韩精品区| 欧美日本国产| 懂色午夜福利一区二区三区| 成人午夜黄色| 国产操屄网| 做aAAAAA免费视频| 91在线无码视频| 日韩72页| 亚洲日本无码50p| 天堂8在线视频| 一区二区三区www污污污网站| 在线观看日韩视频| 国产精品久久久久久精| 国产第8页| 一区二区三区免费在线| 在线免费黄| 亚洲天堂视频在线| 国产高清精品软件丝瓜软件| 亚洲性爱一区| 91av视频| 亚洲乱码一区| 精品人人人人| 中文字幕乱伦视频| 乱伦AV片| 国产成人无码精品久在线观看 | 亚洲免费观看高清完整版在线观| 3d动漫精品H区XXXXX区| 欧美v日韩| 人妻互换一二三区免费| 人人妻人人爱| 伊人春色AV| 国产三级成人| 国产一道本| 91婷婷在线| 97国产精品久久| 日韩视频――中文字幕| 在线免费看a| 永久免费一区二区三区| 亚洲中文字幕av| 亚洲不卡免费视频| 无码69| 老太色HD色老太HD-百度| 黄色电影中文字幕| 伊人9999| 91性爱| 国产成人小视频在线观看| 亚洲午夜福利视频在线观看| 精品动漫一区二区三区| www.午夜| 97久久精品国产熟妇高清网| 99re在线| 天天干天天色天天射| 无码五月天| 国产成人无码精品久在线观看| 国产成人三级片| 99精品热| 国产三级成人| 欧美亚韩| 夜操| 久久伊| 美国操逼片| 国产精品伊人| 做爰视频毛片下载蜜桃视频| 婷久久| 免费在线a| 婷婷五月天丁香成人社区| 九色PORNY丨自拍蝌蚪| 91久久亚洲| 激情小说区| 欧美怕怕怕| 日韩一区二区三区免费视频| 91福利在线视频| 国产黄色网| 午夜福利av在线| 美日韩A片| 黄片视频观看| 免费乱伦视频| 乱子伦】国产精品| 福利视频网亚洲| 日韩无码人妻一区| 免费AV毛片| 91成人电影在线观看| 欧美精品无码一区二区| 欧美一级成人| 国产精品国产三级国产专业不| 人人色人人| 丰满人妻一区二区三区精品高清| 国产A级片| 中文字幕欧美在线| 超碰中文在线| 大香蕉9999| 国产色情网站| 浮力影院久久| 久操超碰| 欧一美一婬一伦一区二区三区黑人| 中文字幕高清| 日韩视频二区| 四虎精品一区二区| av福利电影在线| 性无码区| 色午夜| 久久激情国产| 国产高清中文字幕| 亚洲精品资源| 福利大香蕉| 人人看人人爱| 日韩一区二区三区四区| 五月婷婷视频在线观看| 亚洲精品久久久久久久久豆丁网| 麻豆天美蜜桃91| 猛男大粗猛爽h男人味| 各种妇女撒尿mm毛免费网站 | 这里有精品| 免费看国产黄色| 乖我硬了让老子cao你小视频| 91自摸| 国产亲子乱婬一级A片借种| 国产艹逼视频| 五月欧美激情| 99久久99久久精品免费看小说。| 91在线网站| 亚洲国产精品精JIZZ老师| 日韩久久免费视频| yy午夜福利| 大香蕉三级| 日韩日逼| www.日逼| 亚洲三级片在线播放| 亚洲香蕉视频网站| 日韩小视频在线观看| 中文字幕乱码亚洲无线码按摩| 免费黄色欧美| 99大香蕉| 精品国产区一区二| 日韩免费无码| 99天天视频| 亚洲国产成人综合| 女人久久久久| a4yy午夜福利| 色欲天天网| 日本狠狠操| 男女操逼视频网站免费观看| 97超碰资源总站| 黄色毛片网站| 免看一级a毛片一片成人不卡| 精品国产乱子伦一区二区三区最新章| 欧美黄色一级网站| 性爱视频网站| 成人网站一区二区| 91人妻人人澡人人爽人人| 99视频免费在线| 日本成人一区| AV第一页| 2018天天干天天操| 不卡无码av| a视频免费在线观看| 日韩精品成人在线视频| 国产精品夜夜爽7777777| 日韩成人AV在线播放| 国产精品无码7777777| 在线天堂v| 俺来也俺也啪WWW色| 白峰美羽人妻AND-499| 国产精品三级在线观看| 国产女人18| 欧美精品无码| 1204手机看片| 东方av在线观看| 高清无码视频免费在线观看| 青草免费视频| 中文一区在线| 精品| AV色色| 三级片网页| 91丨九色丨东北熟女| 免费一区视频| 中文字幕色| 亚洲视频欧美视频| 久久a久久| 人人搞人人摸| 一级内射片在线网站观看| 亚洲无码视频播放| 亚洲国产成人在线视频| 男女日日批黄色三级| 91成人国产| 亚洲激情欧美激情| 蜜桃av秘无码一区二区| 天天舔天天干| 日本少妇电影| 人人妻人人妻| 久久久91人妻无码精品蜜桃ID| 亚洲av免费在线观看| BBB搡BBB搡BBB搡BBB| 日韩AV无码免费| 美日韩中文字幕| 91精品青青草| 人人草人人摸| 午夜成人鲁丝片午夜精品| 香蕉视频a| 日本中文在线| 国产乱码一区二区三区的区别| 黄色成人视频网站| 国产视频你懂的| 亚洲有码中文字幕| 国产vA| 自拍偷拍中文字幕| 亚洲天堂婷婷| 欧美美女日逼视频| 成人黄片视频| 北条麻妃在线一区二区| 国产亚洲视频在线观看视频| 亚洲成人福利| 国产精品秘ThePorn| 久久久久久麻豆| 黄色一级免费| 中文字幕在线播放视频| 国产精品99久久免费黑人人妻 | 亚洲综合视频在线| 强开小嫩苞毛片一二三区| 麻豆AV96熟妇人妻| 日本一区二区三区在线播放| A片操逼| 无码人妻AⅤ一区二区三区A片一| 国产精品1区2区| 免费看黄色毛片| 欲撸视频| 爱射综合| 日韩无码成人片| www.操B| 大香蕉75| 国产二区三区| 天堂a√在线8| 欧美精品操逼| 久草中文在线| 日本亚洲黄色视频| 国产男人天堂| 中文无码网站| 影音先锋成人电影| 中文在线字幕免费观看电视剧大全| 中文字幕第72页| 精品日韩在线视频| 精品成人| 欧美亚洲在线| 天天日天天操天天摸天天干天日射天天插 | 久久成人福利| 成人午夜小电影| 亚洲五月婷婷| 国产成人在线免费视频| 在线激情网站| 天堂性爱AV| A片在线免费播放| 黄色A级片| 色婷婷色99国产综合精品| 国产又爽又黄免费网站在| 特级西西444www| 熊猫视频91| 日韩v| 亚洲精品一区二区三| 免费看黄色的视频| 无码三级av| 中文av网站| 色婷婷天天操天天干| 国产熟妇码视频| 国产亚洲日韩在线| 91中文字幕在线播放| 182AV| 免费看黄色电影| 亚洲国产高清在线观看视频| 欧美日韩免费看| 中文字幕+乱码+中文字幕在线| 国产精品高潮呻吟久久| 大香蕉伊人综合在线| 日韩无码黄色电影| 夜夜AV| 亚洲第一成人网站| 99视频内射三四| 免费无码毛片| 无码视频韩国| 校园春色亚洲无码| 边添小泬边狠狠躁视频| 亚洲日韩在线视频播放| 人人操夜夜| 久久99综合| 91欧美日韩综合| 亚洲专区在线播放| 久久精品一区二区三区不卡牛牛| 国产一区二区不卡亚洲涩情| 亚洲成人视频一区二区| 无码电影视频| 日本少妇高清视频| 欧美高清无码| 国产又黄又爽| 九九九亚洲| 成人电影一区| 国产17c精品视频一二三区| 中文字幕一区二区二三区四区 | 男女福利视频| 影音先锋黄色资源| 福利视频免费观看| 欧美一级AAA大片免费观看 | 国产精品无码一区二区三区免费| 日韩成人无码视频| 日本色色色| 日韩色网站| 黑人人妻黑人ThePorn| 亚洲黄片免费在线观看| 丁香婷婷六月天| 91AV视频在线| 欧美丁香五月| 日本人妻在线视频| 国产午夜成人免费看片无遮挡| 12——13女人毛片毛片| 亚洲黄色电影在线| 91人妻人人澡人人爽人人玩| 激情综合在线| gogogo日本免费观看高清电视剧的注意| 人人天天久久| 精品三级在线观看| 久草综合网| 国产成人精品免高潮在线观看| 人妻中文字幕av| 小黄片免费看| 天堂网中文字幕| 水蜜桃一区二区三区| 色色网的五月天| 精品国产一级| 青草久久网| 国产精品久久久久久久9999| 免费日比视频| 婷婷国产精品视频| 停停五月天| 亚洲天堂手机在线| 成人高清无码在线观看| 亚洲视频一区二区三区四区娇小视频在线观看视频 | 五月天福利导航| 国精产品秘一区二区-| 亚洲日色| 老司机永久免费91| 免费观看久久久| 日韩一区二区AV| 久草视频新| 亚洲高清无码一区二区| 亚洲男同tv| 在线视频污|