日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 編程 > PHP > 正文

基于Jenkins實現(xiàn)php項目的自動化測試 打包和自動部

2020-03-24 18:54:26
字體:
供稿:網(wǎng)友
  • 本篇博文宅鳥將在上篇: 基于Jenkins 搭建持續(xù)集成環(huán)境 的基礎(chǔ)上,繼續(xù)介紹Jenkins結(jié)合php項目實現(xiàn)自動化測試和自動部署。廢話不再多說,直接上干活。

    宅鳥所使用的server為Ubuntu

    要實現(xiàn)在jenkins中實現(xiàn)php的自動化測試,首先需要Jenkins服務(wù)器上安裝php測試框架,php的測試框架很多,在這里我們選擇 PHPUnit Framework.

    PHPUnit的安裝很簡單:

    sudo apt-get install phpunit

    如果出現(xiàn)如下錯誤:

    PHP Warning: require_once(PHP/CodeCoverage/Filter.php): failed to open stream: No such file or directory in /usr/bin/phpunit on line 39PHP Fatal error: require_once(): Failed opening required 'PHP/CodeCoverage/Filter.php' (include_path='.:/usr/share/php:/usr/share/pear') in /usr/bin/phpunit on line 39

    可以通過下面方法安裝:

    sudo pear channel-discover pear.phpunit.desudo pear channel-discover pear.symfony-project.comsudo pear channel-discover components.ez.nosudo pear channel-discover pear.symfony.comsudo pear update-channelssudo pear upgrade-allsudo pear install pear.symfony.com/Yamlsudo pear install --alldeps phpunit/PHPUnitsudo pear install --force --alldeps phpunit/PHPUnit

    安裝后執(zhí)行phpunit --version 返回版本信息。表示安裝成功。

    root@dop-kvm-2:# phpunit --versionPHPUnit 3.7.28 by Sebastian Bergmann.

    下面我們開始給Jenkins一些插件:

    Subversion/Git:用于集成項目版本控制軟件,根據(jù)需要選擇(在上篇博文已安裝使用)

    Phing/Ant:使用Phing或Apache Ant 對PHP項目做自動化構(gòu)建

    CheckStyle:使用PHP CodeSniffer進(jìn)行代碼風(fēng)格檢查的工具。用于檢查PHP代碼是否有違反一組預(yù)先設(shè)置好的編碼標(biāo)準(zhǔn)的一個PEAR包,內(nèi)置了ZEND,PEAR的編碼風(fēng)格規(guī)則

    Clover PHP:使用phpunit進(jìn)行單元測試的工具,可以被xdebug擴(kuò)展用來生成代碼覆蓋率報告,并且可以與phing集成來自動測試,還可以和Selenium整合來完成大型自動化集成測試

    DRY:使用PHPCPD(php copy paste detector)來發(fā)現(xiàn)項目中的重復(fù)代碼

    HTML Publisher:用來發(fā)布phpunit代碼覆蓋率報告

    JDepend:使用PHP Depend分析php中靜態(tài)代碼,用來檢查項目中的代碼規(guī)模和復(fù)雜程度

    Plot:使用phploc來統(tǒng)計php項目規(guī)模大小的工具,可以統(tǒng)計php的項目代碼行數(shù)

    PMD:使用phpmd(php mess dector),對基于pdepend的結(jié)果進(jìn)行分析,一旦項目超過了pdepend中各具體指標(biāo)的規(guī)定,將發(fā)出警告信息.

    Violations:按照代碼缺陷嚴(yán)重性集中顯示pwd靜態(tài)代碼分析的結(jié)果

    xUnit:使用JUnit的格式來輸出phpunit的日志文件

    注意這些插件是jenkins為php項目所提供的一些插件,但并不是必須的,所以宅鳥只把最值得大家關(guān)注的怎么自動化測試、打包和發(fā)布來給大家講解。

    先給出項目的目錄結(jié)構(gòu):

    root@dop-kvm-2:/home/jenkins/api# tree.├── aa.php├── build.xml├── create.php└── test    ├── DemoTest.php    └── FunctionTest.php1 directory, 5 files

    注意:

    aa.php、create.php是項目的程序文件

    test目錄下的DemoTest.php和FunxtionTest.php是項目的測試文件

    build.xml是jenkins持續(xù)集成測試打包部署的調(diào)用文件

    首先給出項目需要的build.xml文件:

    <?xml version="1.0" encoding="UTF-8"?><project name="api" default="build">        <target name="build" depends="make_runtime,phpcs-ci,phploc,pdepend,phpcb,phpunit,phpdox,phpcpd"/>        <property name="version-m"  html' target='_blank'>value="1.1" />        <property name="version"    value="1.1.0" />        <property name="stability"  value="stable" />        <property name="releasenotes" value="" />        <property name="tarfile"     value="${phing.project.name}.${buildnumber}.${buildid}.tar.gz" />        <property name="pkgfile"     value="${phing.project.name}.${version}.tgz" />        <property name="distfile"    value="dist/${tarfile}" />        <property name="tests.dir" value="test" />        <fileset id="api.tar.gz" dir=".">            <include name="test/**"/>            <include name="*.php"/>            <include name="*.xml"/>        </fileset>        <target name="make_runtime">                <mkdir dir="${project.basedir}/Runtime" />                <mkdir dir="${project.basedir}/build/logs" />                <mkdir dir="${project.basedir}/build/pdepend" />                <mkdir dir="${project.basedir}/build/code-browser" />        </target>        <target name="phpcs" description="Find coding standard violations using PHP_CodeSniffer">                <exec executable="phpcs">                        <arg value="--standard=${project.basedir}/build/phpcs.xml" />                        <arg value="--ignore=autoload.php" />                        <arg path="${project.basedir}/" />                </exec>        </target>        <target name="phpcs-ci" description="Find coding standard violations using PHP_CodeSniffer">                <exec executable="phpcs" output="${project.basedir}/build/build.log">                        <arg value="--report=checkstyle" />                        <arg value="--report-file=${project.basedir}/build/logs/checkstyle.xml" />                        <arg value="--standard=${project.basedir}/build/phpcs.xml" />                        <arg value="--ignore=" />                        <arg path="${project.basedir}/" />                </exec>        </target>        <target name="phploc" description="Measure project size using PHPLOC">                <exec executable="phploc">                        <arg value="--log-csv" />                        <arg value="${project.basedir}/build/logs/phploc.csv"/>                        <arg path="${project.basedir}/"/>                </exec>        </target>        <target name="pdepend" description="Calculate software metrics using PHP_Depend">                <exec executable="pdepend">                        <arg value="--jdepend-xml=${project.basedir}/build/logs/jdepend.xml"/>                        <arg value="--jdepend-chart=${project.basedir}/build/pdepend/dependencies.svg"/>                        <arg value="--overview-pyramid=${project.basedir}/build/pdepend/overview-pyramid.svg"/>                        <arg path="${project.basedir}/"/>                </exec>        </target>                                                                                                                                                                                                              <target name="phpmd" description="Perform project mess detection using PHPMD">                <exec executable="phpmd">                        <arg path="${project.basedir}/"/>                        <arg value="text"/>                        <arg value="${project.basedir}/build/phpmd.xml"/>                </exec>        </target>                                                                <target name="phpmd-ci" description="Perform project mess detection using PHPMD">                <exec executable="phpmd">                        <arg path="${project.basedir}/"/>                        <arg value="xml"/>                        <arg value="${project.basedir}/build/phpmd.xml"/>                        <arg value="--reportfile"/>                        <arg value="${project.basedir}/build/logs/pmd.xml"/>                </exec>        </target>                                                                                  <target name="phpcpd" description="Find duplicate code using PHPCPD">                <exec executable="phpcpd">                        <arg value="--log-pmd"/>                        <arg value="${project.basedir}/build/logs/pmd-cpd.xml"/>                        <arg path="${project.basedir}/"/>                </exec>        </target>        <target name="phpdox" description="Generate API documentation using phpDox">                <exec executable="phpdox"/>        </target>        <target name="phpunit" description="Run unit tests with PHPUnit">                <exec executable="phpunit" />        </target>        <target name="test" description="Run PHPUnit tests">            <phpunit haltonerror="true" haltonfailure="true" printsummary="true">            <batchtest>            <fileset dir="${tests.dir}">                <include name="**/*Test.php" />            </fileset>            </batchtest>            </phpunit>        </target>        <target name="phpcb" description="Aggregate tool output with PHP_CodeBrowser">                <exec executable="phpcb">                        <arg value="--log"/>                        <arg path="${project.basedir}/build/logs"/>                        <arg value="--source"/>                        <arg path="${project.basedir}/"/>                        <arg value="--output"/>                        <arg path="${project.basedir}/build/code-browser"/>                </exec>        </target>        <target name="check" description="Check variables" >            <fail unless="version" message="Version not defined!" />            <fail unless="buildnumber" message="buildnumber not defined!" />            <fail unless="buildid" message="buildid not defined!" />            <delete dir="dist" failonerror="false" />            <mkdir dir="dist" />        </target>                                                                                         <target name="tar" depends="check" description="Create tar file for release">            <echo msg="Creating distribution tar for ${phing.project.name} ${version}"/>            <delete file="${distfile}" failonerror="false"/>            <tar destfile="${distfile}" compression="gzip">                <fileset refid="api.tar.gz"/>            </tar>        </target></project>

    閱讀build.xml后,大家可以了解一下內(nèi)容:

    項目名稱、版本、打后的包名稱:

    <project name="api" default="build">        <target name="build" depends="make_runtime,phpcs-ci,phploc,pdepend,phpcb,phpunit,phpdox,phpcpd"/>        <property name="version-m"  value="1.1" />        <property name="version"    value="1.1.0" />        <property name="stability"  value="stable" />        <property name="releasenotes" value="" />        <property name="tarfile"     value="${phing.project.name}.${buildnumber}.${buildid}.tar.gz" />        <property name="pkgfile"     value="${phing.project.name}.${version}.tgz" />        <property name="distfile"    value="dist/${tarfile}" />        <property name="tests.dir" value="test" />

    打包時包括的文件和文件夾:這里還可以使用exclude排除文件和文件夾:

    <fileset id="api.tar.gz" dir=".">           <include name="test/**"/>           <include name="*.php"/>           <include name="*.xml"/>       </fileset>

    測試文件所在地址:

    <target name="phpunit" description="Run unit tests with PHPUnit">                <exec executable="phpunit" />        </target>        <target name="test" description="Run PHPUnit tests">            <phpunit haltonerror="true" haltonfailure="true" printsummary="true">            <batchtest>            <fileset dir="${tests.dir}">                <include name="**/*Test.php" />            </fileset>            </batchtest>            </phpunit>        </target>

    了解這些后,我們開始在jenkins中新建autoTestTarAndPublish項目,選擇:構(gòu)建一個自由風(fēng)格的軟件項目:

    并且指定好代碼庫:如圖所示

    172124575.jpg

    然后再 增加構(gòu)建步驟->Invoke Phing targets:

    增加兩個 target: test,tar 分別與build.xml中的test,tar名稱相對應(yīng)

    172650946.jpg

    給tar加上參數(shù):

    172622637.jpg

    然后在左邊主菜單: 系統(tǒng)管理->系統(tǒng)設(shè)置->Publish over SSH 下添加主機(jī):(這里宅鳥設(shè)置使用ssh免密碼登陸)需要設(shè)置成從jenkins到要發(fā)布的web服務(wù)器的無密碼登陸

    如圖設(shè)置:

    175130605.jpg

    這里添加設(shè)置的主機(jī)名是:134

    接下來我們就可以設(shè)置部署工作了:

    在添加構(gòu)建步驟下來表中選擇:Send files or execute commands over SSh,如果該選項未出現(xiàn)需要在插件管理中安裝插件:Publish Over SSH 然后重啟jenkins即可.

    174009766.jpg

    然后在出現(xiàn)的SSH Publishers中選擇要發(fā)布的主機(jī):

    并填寫打包文件地址,發(fā)布到遠(yuǎn)程server地址信息,并在Exec command文本框中填寫解壓等shell腳本:

    詳情見圖:

    175817788.jpg

    此項設(shè)置完畢后,就可以發(fā)布php項目到134服務(wù)器上了:

    最后文件發(fā)布包的存檔工作:

    增加構(gòu)建后操作步驟:

    180033526.jpg

    填寫dist/*.tar.gz

    180210215.jpg

    至此配置完畢后,點擊 保存 按鈕.我們就可以發(fā)布程序到指定服務(wù)器134上了.

    來看一下發(fā)布結(jié)果:

    回到項目左側(cè)點擊:立即構(gòu)建:可以看到構(gòu)建進(jìn)度條,結(jié)束后可以在控制臺看到輸出結(jié)果:

    180656573.jpg

    我們來到134上看:

    180805428.jpg

    至此發(fā)布完畢.

    此時我們查看一下test/DemoTest.php文件內(nèi)容:

    <?phpclass DemoTest extends PHPUnit_Framework_TestCase {  public function testPass() {      $this->assertTrue(true);    }  public function testFail() {      $this->assertFalse(false);    }}?>

    我們把 testFail()改成下面:

    <?phpclass DemoTest extends PHPUnit_Framework_TestCase {  public function testPass() {      $this->assertTrue(true);    }  public function testFail() {     $this->assertTrue(false);    }}?>

    $this->assertTrue(false);

    這個是錯誤的斷定:

    提交文件后再次構(gòu)建:

    我們可以看到本次構(gòu)建失敗,查看輸出結(jié)果如下:

    181704835.jpg

    當(dāng)把測試用例修改回正確后,執(zhí)行構(gòu)建,發(fā)布正確。

    <?phpclass DemoTest extends PHPUnit_Framework_TestCase {  public function testPass() {      $this->assertTrue(true);    }  public function testFail() {      $this->assertFalse(false);    }}?>

    182504533.jpg

    ok,到此介紹結(jié)束.

    總結(jié)一下:

    jenkins根據(jù)項目根目錄下的build.xml文件,并根據(jù)jenkins中targets的配置,首先自動執(zhí)行test,當(dāng)測試通過后,開始執(zhí)行tar,打包完成后,開始鏈接遠(yuǎn)程webserver把程序包上傳到遠(yuǎn)程webserver指定目錄下,然后再根據(jù)jenkins下的command 執(zhí)行解壓操作,然后就可以根據(jù)自己的業(yè)務(wù)通過shell腳本進(jìn)行自動處理自動發(fā)布的各項操作.

    如果在執(zhí)行test過程中,出現(xiàn)發(fā)現(xiàn)測試用例不通過,則就發(fā)出錯誤報告,終止本次構(gòu)建。

    下一篇博文,將介紹jenkins結(jié)合ansible、shell和mysql版本遷移實現(xiàn)多服務(wù)器批量發(fā)布.敬請關(guān)注

    干貨吐槽完畢,由于時間倉儲,有不足之處歡迎拍磚.

    PHP編程

    鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

  • 發(fā)表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發(fā)表
    区日韩二区欧美三区| 精人妻一区二区三区| 日韩精品大片| 一区二区在线观看不卡| 日韩色在线观看| 国产三级在线播放| 国产对白在线| 91欧美日韩| 日韩国产欧美在线视频| 日韩精品高清不卡| 蜜臀国产一区| 99国产成 人 综合 亚洲欧美| 中文字幕在线视频网| 国产三级在线| 成年人黄国产| 91日韩欧美| 在线观看一区日韩| 中文字幕日韩欧美在线视频| 亚洲欧美999| 精品国产乱码一区二区| 国产91久久久久蜜臀青青天草二 | 国产一卡2卡3卡四卡网站| 久久久久久欧美| 黄色片网站在线| 精品1区2区3区| av中文在线播放| 影音先锋中文字幕在线观看| 日韩精品在线视频观看| 91精品999| 蜜臀久久精品| 中文字幕亚洲区| 在线中文字幕网站| 国产乱一区二区| 伊人网站在线| 亚洲一区中文字幕在线观看| 久久麻豆视频| 国内精品露脸在线视频播放| 日韩精品资源二区在线| 精品亚洲永久免费| 国产婷婷色一区二区三区| 日韩字幕在线观看| 99这里有精品视频| 亚洲一区在线观看免费| 99综合视频| 午夜成人鲁丝片午夜精品| 欧美日韩亚洲不卡| 国产激情在线播放| 久久久久久91| 日本不卡免费高清视频| 国产真实乱子伦精品视频| 视频一区二区精品的福利| 免费国产成人看片在线| 国产成人综合精品| 日韩在线视频一区| 日韩在线视频在线观看| 中文字幕在线播出| 久本草在线中文字幕亚洲欧美| 偷窥国产亚洲免费视频| 99中文字幕一区| 国产一卡2卡3卡4卡网站免费| 日韩不卡一区二区| 亚洲视频日韩| 欧美日韩久久不卡| 国产91一区| 日韩欧美综合| 日韩精品一级| 中文字幕亚洲字幕| 欧美日韩精品三区| 国产欧美久久久| av一区在线观看| 国产在线www| 99pao成人国产永久免费视频| 欧美一级二级三级区| 日韩在线不卡一区| 国产视频97| 99日韩精品| 91精品国产综合久久久久久| 欧美在线视频第一页| 日韩精品手机在线| 国产 欧美 在线| 亚洲第一精品在线| 国产黄色片中文字幕| 黄色国产在线| 久久精品免费在线观看| 一区二区高清视频| 国产成免费视频| 久久夜色精品国产欧美乱极品| 尤物av一区二区| 日韩三级一区二区| 欧美二三四区| 久久精品国产91精品亚洲| 亚洲国产www| 亚洲免费精品视频| 欧美日韩国产片| 精品网站999| 亚洲热在线观看| 欧美在线亚洲一区| 91精品国产自产在线观看永久∴| 亚洲视频在线观看日本a| 中文亚洲免费| 中文字幕伊人| 中文字幕4区| 精品免费久久久| 一区二区三区中文字幕在线观看| 中文字幕日韩国产| 日韩欧美亚洲日产国| 国产欧美综合在线| 国产一二三精品| 日韩精品在线视频| 日韩欧美色综合| 久久在线91| 成人久久久久| 欧美不卡123| 日韩.com| 中文国产字幕在线观看| 国产三级精品在线观看| 国产成人精品999在线观看| 国产69精品久久久久孕妇国产69久久 | 欧美日韩免费高清| 欧美日韩高清不卡| 国产欧美日韩在线视频| 亚洲制服一区| 日韩不卡在线观看| 欧美日韩精品免费| av免费在线不卡| 欧美 中文字幕| 欧美一级手机免费观看片| 日韩中文字幕第一页| 中文字幕99| 一区二区不卡视频在线观看| 中文字幕 乱码 中文乱码91| 亚洲综合在线不卡| 91色在线看| 一区二区91| 日韩亚洲欧美中文三级| a在线观看免费视频| 国产一卡2卡3卡4卡网站免费 | 日韩欧美一级在线播放| 日韩精品视频在线| 在线观看91精品国产入口| 91精品婷婷国产综合久久| 日韩专区中文字幕| 日韩精品视频免费看| 久久av免费| 国产亚洲二区| 久久久另类综合| 精品视频三区| 欧美日韩在线不卡一区| 91精品国产调教在线观看| 国产午夜精品视频| 日韩一级网站| 中文字幕线观看| 韩国av一区二区| 一区二区精品区| 国产亚洲二区| 亚洲娇小xxxx欧美娇小| 精品久久九九| 亚洲高清精品视频| 欧美三级日韩三级国产三级| 欧美日韩一区二区在线视频| 欧美一级免费看| 欧美日韩国产高清一区| 精品播放一区二区| 欧美中文字幕| 国内国产区免费视频| 91精品国产综合久久久蜜臀粉嫩| 视频一区二区国产| 一级一片免费视频| 极品久久久久久| 日韩美女中文字幕| 欧美日韩不卡在线视频| 欧美日韩三级视频| 中文av字幕一区| 国产午夜精品视频| 欧美日韩综合在线免费观看| 91精品国产综合久久久久久| 国产成人精品三级| 精品视频资源站| 日韩欧美视频一区二区三区四区| 精品成人久久av| 在线视频不卡国产V| 欧美日韩在线观看一区| wwwwww在线观看| 97caopor国产在线视频| 一区二区国产在线| 欧美日韩精品在线视频| 久久久精品国产免费观看同学| 日韩精品在线视频| 不卡视频一区二区| 久艹在线视频| 亚洲免费专区| 日韩欧美国产免费| 日本а中文在线天堂| 免费视频最近日韩| 国产高清不卡av| 国产91大片| 亚洲第一中文字幕在线观看| 国产欧美日韩视频在线| 国产导航在线| 欧美日韩在线三级| 国产三级精品网站| 日本国产在线视频| 精品一二三四| 91精品国产日韩91久久久久久| 久久精品久久精品亚洲人| av免费观看网站| 亚洲精品中文字幕乱码三区| 国产资源在线观看| 久久久水蜜桃| 一区二区三区在线播放欧美| 欧美wwww| 不卡视频一区二区| 欧美日韩国产综合网| 精品婷婷伊人一区三区三| 国产字幕中文| 日韩精品手机在线观看| 亚洲国产欧美日韩精品| 最新中文在线视频| 天天综合天天添夜夜添狠狠添| 欧美日韩中文字幕| 日韩欧美中文字幕在线播放| 日韩欧美国产片| 91精品国产91| 欧美三级在线播放| 91精品国产欧美日韩| 国产福利精品导航| 欧美日韩一级视频| 亚洲大胆人体av| 日韩视频一区| 亚洲综合日韩| 麻豆一区二区99久久久久| 亚洲欧洲国产视频| 亚洲一二三不卡| 韩日中文字幕第一页| 国产一级片在线| 97最新国自产拍视频在线完整在线看| 国产在线欧美日韩| 拍真实国产伦偷精品| 黄色国产网站在线观看| 综合图区亚洲白拍在线| 中文字幕在线视频久| 精品精品久久| 欧美激情视频一区二区三区在线播放| 最近中文字幕在线中文高清版| 亚洲一二三不卡| 精品国产99久久久久久| 国产欧美日韩精品综合| 樱花草www在线观看| 一区二区国产在线| 精品视频在线视频| 国产三级在线| 亚洲欧美日本另类| 日韩中文字幕精品视频| 中文字幕亚洲乱码| 欧美日韩在线播放三区四区| 不卡一区二区三区视频| 一区二区精品区| 一区二区在线看| 国产视频中文字幕在线观看| 日韩中文字幕| 久久久精品欧美| 中文在线日韩| 日韩欧美一级在线| 日本xxxwww免费视频| 91精品国产色综合久久久蜜香臀 | 亚洲国产福利视频| 欧美不卡123| 一区二区日韩视频| 91精品国产入口| 日韩欧美资源站| 欧美日韩在线观看首页| 欧美国产日韩综合| 欧美日韩在线视频首页| 不卡在线一区二区| 在线中文字幕网站| 国产主播中文字幕| 一本久久a久久精品亚洲| 伊人网站在线| 在线视频第一页| 日韩精品 欧美| 精品国产91乱高清在线观看| 日本精品在线播放| 国产中文在线观看| 国产精久久久久| 日韩亚洲欧美中文在线| 国产成人精品三级| 日韩欧美亚洲国产一区| 日韩精品一级| 亚洲开心激情| 天堂在线视频中文网| 91蜜桃在线视频| 国产福利三区| 91xxx在线观看| 正在播放日韩精品| 在线免费91| www.三级.com| 欧美日韩尤物久久| 国产aa精品| 日韩精品视频在线| 91精品在线免费观看| 久久精品国产视频| 日韩免费高清一区二区| 国产羞羞视频在线播放| 中文字幕亚洲免费| 国产一卡二卡3卡4卡四卡在线| 伊人国产视频| 日本a口亚洲| 不卡视频一区二区三区| 黄色在线资源| 精品久久久久久无| 日韩专区中文字幕| 一区二区三区在线|网站| 欧美 亚洲 精品 三区| 91xxx在线观看| 国产v日产∨综合v精品视频| 日韩欧美99| 日韩午夜黄色| 91精品久久久久| 国内精品99| 国产丝袜一区二区| 国产伦精品免费视频| 久久久久久91| 欧美精品一区二区三区在线播放| 日韩欧美999| 国产三级免费观看| 91精品国产综合久久蜜臀| 91国内精品在线视频| 国产久卡久卡久卡久卡视频精品| 欧美日韩国产专区| av手机天堂| www.久久久精品| 精品在线一区二区| 999视频精品| 中文字幕在线国产| 亚洲素人一区二区| 在线中文免费视频| 欧美三级中文字幕在线观看| 黄色欧美日韩| 国产永久免费高清在线观看| 亚洲欧美久久234| 国产嫩草影院久久久久| 视频一区二区不卡| 91久久中文| 91精品国产自产在线丝袜啪| 国产性一级片| 91精品视频国产| 日韩精品在线中文字幕| 国产欧美日韩在线看| 日韩欧美国产一二三区| 国产在线第一页| 国产激情在线| 久久精品99久久久久久久久| 91精品国产91久久| 欧美日韩国产一区| 福利一区二区| 亚洲影视资源网| 一区二区三区四区五区视频在线观看| 亚洲九九精品| 中文字幕在线日韩| 久久久99久久| 国产不卡视频在线| 欧美日韩综合视频网址| 91精品国产综合久久香蕉的特点| 欧美日韩国产一中文字不卡| 一区二区三区高清在线| 天天综合色天天| 亚洲综合日韩中文字幕v在线| 91精品蜜臀在线一区尤物| 日韩中文字幕在线视频观看| 国产日韩av高清| 在线视频色在线| 免费高清在线一区| 一区精品在线播放| 91精品网站| 一级日韩一级欧美| 欧美日韩高清| 久久久久久久久99精品| 日韩欧美一级在线| 最近高清中文在线字幕在线观看1| 亚洲成av人片一区二区密柚| 精品日韩一区二区三区免费视频| 成人禁用看黄a在线| 日韩视频在线一区| 蜜桃精品视频| 国产一级视频| 91精品国产日韩91久久久久久| 亚洲国产无线乱码在线观看| 国产劲爆久久| 国产免费不卡av| 国产欧美日韩在线| 欧美一级二级三级区| 日韩av一区二区在线| 国产在线小视频| 免费国产成人看片在线| 日韩高清不卡一区二区| 欧美三级一区二区三区| 国产一二三精品| 天堂在线视频中文网| 91极品视频在线观看| 国产福利精品导航|