精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用Jenkins + Git Submodule 實現自動化編譯,解決代碼安全性問題

開發 前端 自動化
事情發生在功能機的時代,我們項目組開發一款手機,軟件開發成員大概有 20 人左右吧。結果在手機發布的一周后,另一家小廠就推出了軟件界面、功能幾乎完全一樣的手機,除了開機界面。
  • 一、一個真實的代碼泄漏故事
  • 二、Jenkins 的基本使用
  • 三、git submodule 基本使用
  • 四、在 Jenkins 中使用 git module 來編譯所有的模塊
  • 五、總結
  • 六、資源下載

一、一個真實的小故事

事情發生在功能機的時代,我們項目組開發一款手機,軟件開發成員大概有 20 人左右吧。結果在手機發布的一周后,另一家小廠就推出了軟件界面、功能幾乎完全一樣的手機,除了開機界面。

因為那個時代,大家幾乎都是使用 MTK、高通提供的解決方案,都是統一的菜單式功能,你沒法拿出有力的證據來說明別人偷竊了你的代碼。

后來內部查明,的確是有開發人員把代碼泄漏出去了,于是后來所有的電腦上 USB 口全部被禁掉了。

這是我親身經歷的真實故事,當時每個人負責一個模塊,比如:A 負責通話管理和電話簿,B 負責系統設置,C 負責短信和彩信。。。在編譯的時候,是需要所有的代碼放在一起,統一編譯的,這也就意味著所有的軟件人員都可以拿到全部源代碼,這也就為代碼泄漏埋下了隱患,出現了這次嚴重的事件,畢竟人為財死、鳥為食亡!

那么,是否有一些代碼管控方式,來解決這個權限問題呢?

現在項目中,都強調要分層、分模塊,這是從軟件工程的角度來考慮的。如果再進一步, 把這些模塊都劃分為一個小的子系統,每個開發人員只負責自己的模塊,并且只能有權限拉取自己的代碼,這樣他就沒法獲取到一個項目中所有模塊的代碼了。

只有項目整合人員(管理員),才有全部權限來拉取所有源代碼來構建整個系統,這樣的話,就可以對代碼的安全問題有更好的掌控了。

要實現這樣的代碼管控,使用 git 工具中的 submodule 就可以完成,這篇文章,我們就來詳細的講解一下 git submodule 的使用。

這篇文章是工具型的,可能比較長,為了提供一站式服務,我會把相關的資源、步驟、遇到的錯誤信息等細節都記錄下來,方便以后查閱。

不論如何,經過這篇文章,你可以學習、了解下面這幾個方面的知識點:

  1. Jenkins 的基本使用方法;
  2. git submodule 的基本指令用法;
  3. 通過三個 demo 項目,一步一步操作實現代碼的安全管控;
  4. 利用 Jenkins + git submodule 來實現自動化編譯;
  5. git subtree 與 submodule 的區別;

如果您需要文中提到的軟件和代碼資源,在文章末尾可以找到下載方式。

二、Jenkins 的基本使用

1. Jenkins 是什么?

Jenkins是一個開源、由 Java 編寫的持續集成工具,也就是說它幫助我們自動構建各類項目。Jenkins 運行在 Servlet 容器中(例如 Apache Tomcat),在 Ubuntu 系統中使用 apt-get 就可以一鍵安裝。

Jenkins 有下面幾個特點:

嵌入在 Web 服務器中,通過瀏覽器來操作,非常方便;

可以執行基于Apache Ant和Apache Maven的項目,以及任意的Shell腳本和Windows批處理命令;

可以通過各種手段觸發構建。例如提交給版本控制系統時被觸發,通過類似Cron的機制調度,在其他的構建已經完成時,還可以通過一個特定的URL進行請求;

Jenkins強大的插件式,使得Jenkins可以集成很多軟件,可能幫助我們持續集成我們的工程項目;

給用戶很大的權限和靈活性來自動發布、部署等等。

其他的有點我就不吹了,我覺得很好用,如果有機會,你也可以試一下。另外,我測試用的虛擬機是新安裝的 Ubuntu16.04-64,按照下面的流程操作,保證可以順利運行。

JDK 和 Jenkins 的安裝方法,在網絡上很多資料,有些過程是有問題的,或者某些關鍵步驟沒寫清楚。為了便于你一次就操作成功,我還是記錄在這里。

如果你對安裝過程已經很熟悉了,可以直接滑到下一個主題。

2. 安裝 JDK8

(1) 下載,解壓

下載 jdk-8u221-linux-x64.tar.gz,(文末提供下載地址),解壓到目錄 /home/sewain/OpenSource ,解壓指令:

sudo tar -zxvf jdk-8u221-linux-x64.tar.gz -C /opt

(2) 設置環境變量

執行指令:vim ~/.bashrc,在末尾添加如下內容:

  1. export JAVA_HOME=/opt/jdk1.8.0_221 
  2. export PATH=$JAVA_HOME/bin:$PATH 
  3. export CLASSPATH=./$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jart 

我建議你也用這樣的環境變量,以后如果升級 JDK 版本,只需要修改 JAVA_HOME 就可以了。

(3) )重新加載環境變量

執行指令:source ~/.bashrc,此時環境變量就生效了。

驗證一下: java -version,出現如下信息就說明 OK 了:

  1. java version "1.8.0_221" 
  2. Java(TM) SE Runtime Environment (build 1.8.0_221-b11) 
  3. Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode) 

3. 安裝 Jenkins

(1) 導入 Jenkins 存儲庫的 GPG 密鑰

  1. sudo wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add - 

(2) Jenkins存儲庫添加到系統中

  1. sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' 

(3) 使用 apt 安裝

  1. sudo apt update 
  2. sudo apt install jenkins 

Jenkins 服務將在安裝過程完成后自動啟動,可以通過指令 systemctl status jenkins 進行驗證。

  1. systemctl status jenkins

(4) 配置端口

Jenkins 是嵌入在一個 tomcat 服務器中的,默認使用端口 8080,容易與其他服務沖突,因此需要修改一下。涉及到 2 個文件:

文件一:/etc/init.d/jenkins

第一行的 PATH 變量中,添加自己的 JDK 地址:

  1. PATH=/bin:/usr/bin:/sbin:/usr/sbin:/opt/jdk1.8.0_221/bin 

文件二:/etc/default/jenkins

把 HTTP_PORT 的值修改為新的端口號,例如: HTTP_PORT=9090 。

(5) Jenkins 的啟動和停止指令

  1. sudo service jenkins start 
  2. sudo service jenkins stop 

如果不幸遇到錯誤,可以反復使用這兩個指令來排除錯誤。

4. 在瀏覽器中配置 Jenkins

在瀏覽器中輸入: htpp://localhost:9090,稍等一會,出現界面:

按照界面提示,從 /var/lib/jenkins/secrets/initialAdminPassword 文件中復制安全密碼(需要 root 權限),填入到瀏覽器窗口中。

此時出現安裝插件窗口,一般只需要安裝推薦的插件即可:

插件安裝結束后,進入管理員配置界面:

至此,Jenkins 的安裝就順利完成了!

5. 在 Jenkins 中配置一個小項目

(1) 準備一個測試代碼 Test1

Jenkins 僅僅是一個構件框架,具體的編譯過程是由用戶來決定的。Jenkins 首先通過 git 工具獲取遠程倉庫中的代碼,然后執行用戶指定的編譯指令。

因此,我們需要先提前準備好一份測試代碼,并放到 Jenkins 可以訪問到的遠程倉庫中,當然了,你在本地的 Ubuntu 系統中部署一個 git 倉庫也是可以的。為了方便,我測試的代碼 Test1 放在 gitee 中了。

(2) 創建一個新項目

(3) 輸入項目名稱,并選擇第一個自由風格(Free project)

(4) 在第一個標簽 General下,輸入項目的描述信息(Description)

內容可以隨便寫。

(5) Source Code Management 源碼管理

Jenkins 在構建(編譯)的過程中,需要獲取到源代碼,因此需要配置 git 倉庫的地址和賬號信息(用戶名和密碼)。

首先在 Add 下拉按鈕下,選擇 Jenkins:

輸入 Username 和 Password :

賬號添加之后,在 Credentials 的下拉框中,選擇剛才添加的 gitee 賬戶,此時可以看到 紅色的權限錯誤提示消失了,說明可以拉取到遠程倉庫中的源代碼了。

(6) Build Triggers 選擇編譯觸發器

可以根據需要選擇不同的方式來觸發,比如:定時觸發,當其他某個項目構建成功之后觸發等等。

我們這里不選擇任何項目,下面我們會在主界面,手動點擊按鈕來觸發。

(7) Build Environment 編譯環境

這部分我用的比較少,利用其他工具來輔助 Jenkins 的功能。

(8) Build 編譯

就是告訴 Jenkins 如何來構建系統,也就是說:Jenkins只是一個自動化的構建系統,具體的編譯過程,可以由用戶自己來決定,有如下選擇項目:

我們這里選擇直接執行腳本(Execute Shell),輸入如下指令:

(9) Post-build Actions 編譯后操作

告訴 Jenkins: 編譯一個工程之后,需要做哪些事情?例如:發送郵件,觸發下一個工程的自動編譯等等,而且可以添加多個動作。可選項如下:

以上步驟配置好之后,Save 保存,此時在主界面就可以看到這個項目的全貌了,如下圖:

在 Jenkins 后臺中,這個項目的保存路徑是:/var/lib/jenkins/jobs/Test1。

6. 手動觸發編譯一次

由于在上面的步驟(6)中,我們沒有選擇任何觸發條件,所以需要我們在項目 Test1 的主界面中,手動單擊左側的 Build Now 按鈕來觸發。

此時,在左側的 Build History 中,可以看到編譯歷史記錄,單擊某次編譯記錄編號,可以看到這一次編譯的詳細信息。

在編譯詳細信息中,單擊左側的 Console Output 按鈕,可以看到編譯的輸出信息:成功編譯得到可執行文件。

我們可以在 Jenkins 后臺中看到,源代碼被拉到 /var/lib/jenkins/jobs/Test1/workspace 目錄中了:

到這里,你已經學會了 Jenkins 的最基本操作!

下面我們繼續講一下 git submodule 的使用,這部分才是核心內容!

三、git submodule 基本使用

1. git submodule 是什么?

git submodule 是用于多模塊管理的工具,它允許一個項目作為 repository,其他項目作為子模塊存在于在父項目中。

父項目和子項目的提交是分開的,也就是說父項目提交的信息只包含子項目的信息,而不會包含子項目的代碼;子項目有自己獨立的 commit,push,pull操作。

git submodule 一般用在比較大的項目中,為了便于復用,或者為了代碼的安全性,常常需要分成若干個子項目來進行代碼管理。

常用的指令包括:

  • 添加子模塊: git submodule add
  • 更新子模塊: git submodule update
  • 初始化子模塊: git submodule init 遞歸的方式克隆整個項目: git clone--recursive
  • 拉取所有子模塊: git submodule foreach git pull

2. 利用三個小項目,來測試一下 submodule 的用法

為了便于演示,我們我們創建 3 個項目,把它們都推送到遠程倉庫中,這里使用 gitee。

  • Test1:編譯得到一個動態庫:libtest1.so;
  • Test2:編譯得到一個動態度:libtest2.so;
  • Test3:編譯得到一個可執行程序,加載、調用上面 2 個動態庫中的函數。

為什么要這樣設計模塊: 安全!

  • 開發人員A:負責 Test1,沒有權限拿到其他模塊的代碼;
  • 開發人員B:負責 Test2,沒有權限拿到其他模塊的代碼;
  • 項目經理:負責 Test3 和 代碼整合,能拿到所有的代碼;

項目經理需要把 Test1 和 Test2 作為 sub module,添加到 Test3 中,執行下面的指令:

1. git submodule add https://gitee.com/[你的賬號]/test1.git test1

2. git submodule add https://gitee.com/[你的賬號]/test2.git test2

把 Test1 和 Test2 作為子模塊添加到 Test3 中之后,看一下文件有什么變化:

你還可以看一下 .gitmodules 文件中的內容,可以看出,git 工具就是通過這個配置文件來管理子模塊的。

管理員需要對所有的模塊進行整合、編譯,因此,我們在 Test3 目錄下添加一個腳本 build.sh,所有的編譯指令,都寫在這個腳本中,內容如下:

內容都是最最基本的,直接調用 make 指令即可,執行一下,輸出:

到這里,我們就完成了子模塊的添加功能。

3. 在一個空目錄中來編譯、驗證一下可行性

我們在另一個空目錄中,clone 一下 Test3 這個項目,可以發現:克隆下來的 test1 和 test2 文件夾中是空的,如下所示:

需要手動獲取所有的子模塊,執行指令:

  1. git submodule update --init --recursive 

此時,再使用 tree 命令看一下文件變化,可以看到 test1 和 test2 的文件都被拉取下來了。這里有一個問題需要注意:雖然子模塊的代碼被拉取下來了,但是其 head 并沒有指向 master 分支,需要手動處理一下,如圖:

這個時候,我們在 test3 目錄下再次執行腳本 build.sh,就可以順利編譯所有的子模塊了。

以上這幾個步驟,我們是在本地的一個臨時目錄,手動測試 submodule 的編譯過程。

下一個章節我們把這個過程部署到 Jenkins 系統中,所以剛才執行的這幾個指令,就需要寫在 build.sh 腳本中了。build.sh 的內容變為:

四、在 Jenkins 中使用 git module 來編譯所有的模塊

下面的操作,都是在瀏覽器的 Jenkins 面板中來操作的。

1. 重新配置項目

因為我們是在 Test3 中,來編譯整個項目(Test1 和 Test2 被作為子模塊包括進來),因此首先把之前添加的 Test1 項目刪除掉,如圖:

然后重新添加項目 Test3,復習一下步驟:

  1. 輸入描述信息,選擇自由風格項目;
  2. 輸入 git 倉庫地址和賬戶信息,選擇 master 分支;
  3. 觸發器不設置;
  4. 編譯環境不設置;
  5. 編譯:選擇 Execute shell 執行腳本,輸入編譯指令:./build.sh。(剛才說了,Jenkins 這是一個自動化構建框架,具體的編譯過程由用戶決定,所以我們這里的編譯過程就是執行 Test3 下的 build.sh 這個腳本。);
  6. 編譯后動作不設置;

當然,也可以直接在之前的 Test1 項目基礎上進行修改。

此時,我們在 Jenkins 中直接點擊 Build Now 按鈕,如果不出意外的話,會提示編譯錯誤(左側的 Build History 下面出現紅色的錯誤圓圈)。

點進去,看一下輸出信息(Console Output 按鈕),提示錯誤:

原因正如前文所說,子模塊在獲取之后,head 沒有指向 master 分支,需要我們在第一次編譯時手動修改一下(我沒有找到其它方法,如果你知道的話,請不吝賜教!)

手動解決:在命令行窗口中,進入 Jenkins 系統的 Test3 目錄 /var/lib/jenkins/jobs/Test3/workspace ,執行如下幾條指令:

  1. git submodule update --init --recursive 
  2. cd test1/ 
  3. git checkout master 
  4. cd - 
  5. cd test2/ 
  6. git checkout master 
  7. cd - 

此時,重新觸發編譯一次,一定可以成功的!

五、總結

這篇文章是屬于工具型的,一旦部署好之后,每次編譯只需要在瀏覽器中點一下按鈕就行,再也不用 ssh 登錄到遠程電腦中去手動操作了。

如果你還想繼續深入一下的話,下面幾件事情可以研究一下:

1. Jenkins 是如何保持編譯歷史記錄的

在目錄 /var/lib/jenkins/jobs/Test3/builds 下面,可以看到很多以數字命名的文件夾,記錄了每一次的編譯信息。

2. 編譯后動作

在我們的編譯腳本 build.sh 文件中,僅僅是生成了可執行文件,你還可以繼續擴充功能,例如:自動部署。

或者在項目配置的 [Post-build Actions] 中,重新寫一個專門用來自動部署的腳本文件。

3. git subtree 功能

它與 git submodule 很類似,但是本質不一樣。

subtree直接把子模塊代碼拷貝到主模塊中,使用命令簡單;

submodule 使用的是“指針”指向子模塊,使用命令相對復雜一些,功能也更強大;

4. 繼續研究 Jenkins 中的插件功能

六、資源下載

 

文中用到的資源,放在了網盤中。如果需要的話,請在公眾號留言區發送數字:030,即可收到下載地址。

本文轉載自微信公眾號「IOT物聯網小鎮」,可以通過以下二維碼關注。轉載本文請聯系IOT物聯網小鎮公眾號。

 

責任編輯:武曉燕 來源: IOT物聯網小鎮
相關推薦

2010-03-02 16:34:36

WCF線程

2018-07-16 15:31:15

2012-09-29 10:22:36

2013-08-16 09:24:43

2013-08-16 09:09:42

2021-10-12 16:11:19

區塊鏈安全比特幣

2015-04-21 10:21:49

2013-04-10 10:54:13

Hadoop大數據大數據安全

2021-09-08 16:03:12

Kubernetes 安全開源

2009-07-21 08:45:57

Google操作系統Chrome系統安全性

2018-02-27 10:49:53

5G遷移安全

2009-07-21 10:17:06

Chrome操作系統安全性

2009-11-06 11:10:01

2011-01-10 10:45:09

2022-07-21 12:45:44

自動化安全網絡安全

2021-11-15 08:32:21

JenkinsAndroid自動化

2010-03-11 15:03:47

2012-10-25 13:57:46

2025-10-09 00:00:00

2013-05-13 10:03:04

git
點贊
收藏

51CTO技術棧公眾號

亚洲色图欧美自拍| 国产三区精品| 亚洲精品卡一卡二| 深夜激情久久| 天涯成人国产亚洲精品一区av| 鲁丝片一区二区三区| 美女黄页在线观看| 欧美精品啪啪| 亚洲精选在线观看| 色婷婷一区二区三区av免费看| 国产美女一区视频| 久久综合久色欧美综合狠狠| 国产主播欧美精品| 久久午夜免费视频| 91精品秘密在线观看| 亚洲精品福利在线观看| 欧美女同在线观看| 偷拍自拍在线看| 亚洲私人影院在线观看| 欧美成人免费在线| 亚洲AV无码一区二区三区性| 日韩电影在线观看电影| 欧美美女18p| 毛片aaaaaa| 亚欧日韩另类中文欧美| 7799精品视频| 国产精品乱码久久久久| 日本动漫同人动漫在线观看| 国产精品无码永久免费888| 鬼打鬼之黄金道士1992林正英| 成年人晚上看的视频| 在线电影一区| 两个人的视频www国产精品| 公侵犯人妻一区二区三区| 97久久精品| 欧美男生操女生| 99re在线视频免费观看| missav|免费高清av在线看| **性色生活片久久毛片| 欧美另类视频在线| 天天射天天色天天干| 国产精品综合视频| 国产精品一区二区三区久久久| 国产精品美女久久久久av爽| 欧美日韩a区| 不卡中文字幕av| 天海翼在线视频| 日韩av有码| 国产亚洲欧洲在线| 伊人网伊人影院| 丝袜连裤袜欧美激情日韩| 欧美va亚洲va国产综合| 日本成人在线免费| 精品精品视频| 欧美一区二区三区视频免费| gogogo高清免费观看在线视频| 久久精品女人天堂av免费观看| 色综合天天综合在线视频| 欧美精品久久久久久久免费| heyzo中文字幕在线| 一区二区三区四区不卡在线| 亚洲天堂第一区| av网站在线免费看推荐| 亚洲日本va午夜在线影院| 天天爱天天做天天操| 成视频免费观看在线看| 亚洲女同ⅹxx女同tv| 天天做天天爱天天高潮| 成人欧美在线| 亚洲在线观看免费| 国产一区二区三区小说| a级片在线免费观看| 黑人欧美xxxx| 免费观看精品视频| 高清av一区| 欧美精选一区二区| 国产裸体视频网站| 久久男人av| 亚洲欧美国产日韩中文字幕| 爱爱免费小视频| 欧美日韩激情在线一区二区三区| 日韩中文娱乐网| 国产又黄又爽又无遮挡| 亚洲精品视频啊美女在线直播| 欧美一区二区.| 日本成人一级片| 玖玖爱在线精品视频| 18国产精品| 亚洲精品日韩欧美| 国产精品综合激情| 欧美精选在线| 国产不卡av在线免费观看| 亚洲综合免费视频| 成人三级在线视频| 视频一区国产精品| 成人黄色网址| 欧美视频在线观看免费| 欧美美女一级片| 成人18夜夜网深夜福利网| 亚洲久久久久久久久久| 亚洲波多野结衣| 亚洲精品日韩久久| 成人在线精品视频| 天天操天天射天天| 中文字幕一区二区日韩精品绯色| 青青青在线观看视频| 偷拍精品精品一区二区三区| 欧美一级免费观看| 欧美成人国产精品一区二区| 自由日本语亚洲人高潮| 日韩免费黄色av| www.桃色av嫩草.com| 国产欧美日韩在线观看| 国产玉足脚交久久欧美| 天天综合在线观看| 日韩精品中文字幕视频在线| avtt天堂在线| 日本不卡一区二区三区高清视频| 国产日产精品一区二区三区四区 | 欧美一区二区三区四区视频| 欧美精品黑人猛交高潮| 中文不卡在线| 国产精品一香蕉国产线看观看 | 成人免费视频国产在线观看| 亚洲精品自在在线观看| 五月天av在线| 精品国产乱码久久久久久夜甘婷婷| 纪美影视在线观看电视版使用方法| 99亚洲视频| 国产精品久久波多野结衣| 日本免费中文字幕在线| 一本久久精品一区二区| aaa黄色大片| 中文字幕一区二区三区乱码图片 | 色青青草原桃花久久综合| 五月婷婷中文字幕| 成人听书哪个软件好| 免费观看国产视频在线| 日韩国产一二三区| 国产一区av在线| 天堂网中文字幕| 97se狠狠狠综合亚洲狠狠| 日韩精品视频在线观看视频| 日韩高清二区| 久久99青青精品免费观看| 一区二区三区免费在线| 国产精品丝袜久久久久久app| av视屏在线播放| 免费精品国产| 国产91色在线|免| 日本一级在线观看| 日韩欧美在线视频免费观看| 国产毛片毛片毛片毛片毛片毛片| 一区福利视频| 九九久久99| 老色鬼在线视频| 亚洲精品一区中文| 五月婷婷六月婷婷| 欧美激情综合网| 日本超碰在线观看| 久久精品亚洲人成影院| 91久久极品少妇xxxxⅹ软件| 日韩成人伦理| 亚洲精品国产精品久久清纯直播| 亚州国产精品视频| 91小视频在线| 免费男同深夜夜行网站| 欧美呦呦网站| 91精品视频大全| 国产丝袜在线观看视频| 亚洲免费视频网站| 中文字幕有码视频| 亚洲精品成a人| 偷偷色噜狠狠狠狠的777米奇| 亚洲综合好骚| 亚洲激情一区二区| 国产高清精品二区| 欧美精品videossex性护士| 日韩一区二区三区中文字幕| 色中色一区二区| 中日韩一级黄色片| 成人在线综合网站| 超碰网在线观看| 99精品国产一区二区三区| 波多野结衣成人在线| 色在线视频观看| www国产91| 视频污在线观看| 欧美探花视频资源| 久久久久久久久艹| 久久精品在线观看| 韩国三级与黑人| 久久综合狠狠| 4444在线观看| 精品国产一区二区三区小蝌蚪 | 国产国产精品| 国产一区二区三区四区hd| 日韩成人高清| 欧美黄色片免费观看| 国产美女视频一区二区三区| 91精品国产综合久久福利软件| 日本一级一片免费视频| 亚洲欧洲在线观看av| 日本一卡二卡在线| 久久66热re国产| 日韩小视频在线播放| 日韩影院二区| 精品一区2区三区| 9999精品视频| 国产不卡av在线| 成人国产电影在线观看| 日韩在线免费高清视频| 日韩三级电影网| 欧美成人激情免费网| 在线观看av大片| 欧美日韩国产一区在线| 国产精品九九九九九九| 国产日产欧美一区| 男女一区二区三区| 国产精品一二三| jizzzz日本| 日韩和欧美一区二区| 欧美精品一区免费| 韩国av一区| 91手机视频在线| 久久视频在线| 欧美激情一区二区三区在线视频 | 极品美女销魂一区二区三区| 逼特逼视频在线| 亚洲福利专区| 99国产精品白浆在线观看免费| 久久精品国产99久久| 日本精品一区| 妖精视频一区二区三区 | 欧美日韩国产在线观看网站| 久久国产精品一区二区三区四区 | 色一情一区二区三区四区| 日韩mv欧美mv国产网站| 国产精品入口免费| 一区二区三区高清在线观看| 亚洲在线观看视频网站| 色综合久久久| 成人免费在线视频网站| 欧美videos粗暴| 国产欧美精品在线| 四虎影视精品永久在线观看| 91精品国产综合久久香蕉| 国产亚洲精彩久久| 国产精品男人的天堂| 人人鲁人人莫人人爱精品| 日韩av手机在线观看| 一区二区三区四区日本视频| 欧美一区在线直播| 欧美电影免费观看高清完整| 日本久久久久亚洲中字幕| 色尼玛亚洲综合影院| 国产国产精品人在线视| 电影亚洲一区| 91热福利电影| 日本一区二区三区播放| 国产精品久久7| 精品久久久久久久久久久久久久久久久久 | 欧美日韩亚洲一区二区三区| 日本午夜视频在线观看| 色婷婷激情久久| 中文字幕在线观看第二页| 欧美精品在线一区二区| 精品国产av一区二区| 欧美变态tickling挠脚心| 黄频网站在线观看| 日韩av在线看| 国产福利在线观看| www国产精品视频| 污污视频在线| 欧美亚洲日本网站| 亚洲成av在线| 亚洲va欧美va国产综合久久| 粉嫩精品导航导航| 欧美日本韩国一区二区三区| 日韩在线观看| 黄色三级中文字幕| 羞羞视频在线观看欧美| 日本 片 成人 在线| 国产成人啪免费观看软件| 中文字幕日韩三级片| 国产精品区一区二区三| 日韩福利小视频| 午夜电影网亚洲视频| 成人黄色免费网| 欧美成人精品3d动漫h| 国产精品久久久久一区二区国产 | 欧美日韩亚洲在线 | 蜜月aⅴ免费一区二区三区 | 欧美色播在线播放| 一区二区三区免费在线| 日韩久久精品成人| 中文国产字幕在线观看| 国产成人综合av| av成人资源网| 亚洲人成影视在线观看| 91久久久久| 亚洲国产午夜精品| 久久久久久久久久电影| 久久丫精品久久丫| 精品视频1区2区3区| 亚洲欧美日韩精品永久在线| 久久成人这里只有精品| 久久野战av| 久久久久资源| 伊人精品成人久久综合软件| 中文字幕成人在线视频| 久久久久久影视| 1024手机在线视频| 欧美日韩激情一区二区| 日韩亚洲视频在线观看| 国产+人+亚洲| 日韩欧美高清一区二区三区| 亚洲欧美日韩精品在线| 国产亚洲精品v| 91超薄肉色丝袜交足高跟凉鞋| 综合久久给合久久狠狠狠97色 | 日韩一区二区免费视频| av资源网站在线观看| 日本精品久久久久影院| 卡一精品卡二卡三网站乱码| 精品嫩模一区二区三区| 麻豆精品国产传媒mv男同| 谁有免费的黄色网址| 色综合天天综合给合国产| 秋霞视频一区二区| 九色成人免费视频| **精品中文字幕一区二区三区| 欧美极品jizzhd欧美| 黄色国产精品| 911亚洲精选| 亚洲精品国产高清久久伦理二区| 久久永久免费视频| 亚洲人成在线观看| 欧美aaa免费| 亚洲自拍欧美色图| 国产精品成人a在线观看| 日本国产一级片| 中文久久乱码一区二区| 在线观看中文字幕av| 国产亚洲精品日韩| 欧美性aaa| 亚洲乱码国产乱码精品天美传媒| 鲁大师影院一区二区三区| 短视频在线观看| 欧美日韩精品在线视频| 欧洲天堂在线观看| 欧美一级在线亚洲天堂| 精品国产不卡| 日韩在线xxx| 97久久超碰国产精品| 制服.丝袜.亚洲.中文.综合懂色| 亚洲国产婷婷香蕉久久久久久 | 久久久久国产精品| 日本激情视频在线播放| 国产精品每日更新| 国产又大又粗又硬| 久久精品国产亚洲精品| 日韩高清二区| 你真棒插曲来救救我在线观看| 99国产精品国产精品毛片| 久久久国产高清| 在线播放国产一区中文字幕剧情欧美 | 久久久伊人欧美| 欧美男人操女人视频| 欧美一级在线看| 国产女同性恋一区二区| 在线亚洲欧美日韩| 欧美伦理91i| 久久久久久久久久久久久久久久久久久久| 2022亚洲天堂| 国产欧美va欧美不卡在线 | 亚洲精品电影在线| 亚洲成人看片| 成人区一区二区| av一二三不卡影片| 波多野结衣电车| 久久精品久久久久久| 国偷自产av一区二区三区| 六月丁香婷婷激情| 久久日韩精品一区二区五区| 亚洲在线视频播放| 欧美大片大片在线播放| 亚洲精品亚洲人成在线观看| 色哟哟精品视频| 亚洲激情中文1区| 亚洲三级中文字幕| 国产精品黄色av| 日韩在线欧美| 午夜性福利视频| 亚洲成人自拍网| 日本中文字幕在线观看| 成人黄色片视频网站| 蜜桃视频在线观看一区| 国产精久久久久久| 色青青草原桃花久久综合|