Mac Jenkins的本地安裝和iOS/pods配置使用,以及上傳到蒲公英/fir

打開終端:

1 : 安裝jenkins (當(dāng)前2.183 版本)

brew install jenkins

提示更新
jenkins: Java 1.8 is required to install this formula. Install AdoptOpenJDK 8 with Homebrew Cask: brew cask install homebrew/cask-versions/adoptopenjdk8 Error: An unsatisfied requirement failed this build.
根據(jù)提示更新:

brew cask install homebrew/cask-versions/adoptopenjdk8

Updating Homebrew...

重新安裝jenkins

brew install jenkins

然后執(zhí)行war包(更換對應(yīng)的版本號2.183)

java -jar /usr/local/Cellar/jenkins/2.183/libexec/jenkins.war --httpPort=8080

java更新
Jenkins requires Java versions [8, 11] but you are running with Java 9 from /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home java.lang.UnsupportedClassVersionError: 53.0 at Main.verifyJavaVersion(Main.java:174) at Main.main(Main.java:142)

提示要求是java版本8 ,11 .
更新java (當(dāng)前11)

brew cask install java11

重新執(zhí)行war包(更換對應(yīng)的版本號2.183)

java -jar /usr/local/Cellar/jenkins/2.183/libexec/jenkins.war --httpPort=8080

如果java版本過高,刪除高版本(不知道還有沒有別的辦法)
Jenkins requires Java versions [8, 11] but you are running with Java 12 from /Library/Java/JavaVirtualMachines/openjdk-12.0.1.jdk/Contents/Home java.lang.UnsupportedClassVersionError: 56.0 at Main.verifyJavaVersion(Main.java:174) at Main.main(Main.java:142)
查看java版本

ls /Library/Java/JavaVirtualMachines/

adoptopenjdk-8.jdk jdk-9.0.4.jdk openjdk-11.0.2.jdk openjdk-12.0.1.jdk
刪除9.0版本
sudo rm -rf /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk

刪除12.0版本
sudo rm -rf /Library/Java/JavaVirtualMachines/openjdk-12.0.1.jdk

ls /Library/Java/JavaVirtualMachines/
adoptopenjdk-8.jdk openjdk-11.0.2.jdk

重新執(zhí)行war包
java -jar /usr/local/Cellar/jenkins/2.183/libexec/jenkins.war --httpPort=8080

下面信息提示啟動成功:

Running from: /usr/local/Cellar/jenkins/2.183/libexec/jenkins.war
hudson.util.Retrier#start: Performed the action check updates server successfully at the attempt #1
2019-07-09 03:07:09.684+0000 [id=49]    INFO    hudson.model.AsyncPeriodicWork$1#run: Finished Download metadata. 21,767 ms

查看文件路徑 /Library/LaunchDaemons 下是否有org.jenkins-ci.plist 文件,沒有就創(chuàng)建:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>StandardOutPath</key>
    <string>/var/log/jenkins/jenkins.log</string>
    <key>StandardErrorPath</key>
    <string>/var/log/jenkins/jenkins.log</string>
    <key>EnvironmentVariables</key>
    <dict>
      <key>JENKINS_HOME</key>
      <string>/Users/xxx/Jenkins/Home</string>
    </dict>
    <key>GroupName</key>
    <string>daemon</string>
    <key>KeepAlive</key>
    <true/>
    <key>Label</key>
    <string>org.jenkins-ci</string>
    <key>ProgramArguments</key>
    <array>
      <string>/bin/bash</string>
      <string>/Library/Application Support/Jenkins/jenkins-runner.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>UserName</key>
    <string>jenkins</string>
    <key>SessionCreate</key>
    <true/>
  </dict>
</plist>

Jenkins安裝時會啟動創(chuàng)建名為jenkins的用戶,
修改文件:/Library/LaunchDaemons/org.jenkins-ci.plist

里面的GroupName和UserName,
可以將該文件cp到另一個路徑修改后再覆蓋過來,
然后重啟Jenkins(brew services restart Jenkins)即可。


3 :打開網(wǎng)址

http://localhost:8080/

如果已經(jīng)安裝過的,提示登錄: 如果第一次安裝會提示設(shè)置賬戶密碼


圖片.png

根據(jù)安裝日志顯示/Users/{你的電腦名}/.jenkins/
安裝地址:
/Users/niexiaobo/.jenkins/

初始密碼:

(網(wǎng)上說)在本地文件夾前往/Users/Shared/Jenkins/Home/secrets/initialAdminPassword路徑,需要更改secrets文件夾的everyone的權(quán)限后,打開initialAdminPassword文件,復(fù)制出密碼,粘貼到網(wǎng)頁的輸入框中。

(本人沒找到[由于電腦以前安裝過Jenkins,可能有些步驟沒有],所以暫時使用下面免密登錄)

免密登錄:

修改 config.xml 設(shè)置
/Users/niexiaobo/.jenkins/config.xml 文件中
<useSecurity>true</useSecurity> 修改為false ,
然后終端重啟:

brew services restart Jenkins

也可以通過打開地址
http://localhost:8080/restart 重啟

首次安裝會有個安裝過程:


圖片.png

創(chuàng)建用戶/密碼:


圖片.png
圖片.png

點(diǎn)擊即可開始創(chuàng)建新的項(xiàng)目:


圖片.png

4 :創(chuàng)建新的項(xiàng)目之前,需要先安裝一個nodejs插件:

圖片.png

往下滾動找到插件管理:


圖片.png

安裝里搜索nodejs,然后點(diǎn)擊按鈕,立即生效:


圖片.png

創(chuàng)建新的項(xiàng)目,開始配置:

下面以github上建立一個測試項(xiàng)目示范:

前置工作:
登錄github - > 創(chuàng)建一個項(xiàng)目 -> 上傳helloA項(xiàng)目 -> 復(fù)制git路徑

5 : 開始配置iOS項(xiàng)目:

圖片.png
圖片.png
圖片.png

構(gòu)建觸發(fā)器模塊,可根據(jù)需要選擇性勾選Build periodically選項(xiàng),即按照預(yù)先設(shè)定的時間自動化構(gòu)建。

定時器構(gòu)建語法

* * * * *
星號中間用 空格 隔開

第一個表示分鐘,取值0~59
第二個
表示小時,取值0~23
第三個表示一個月的第幾天,取值1~31
第四個
表示第幾月,取值1~12
第五個*表示一周中的第幾天,取值0~7,其中0和7代表的都是周日

用法舉例:

每30分鐘構(gòu)建一次:H代表形參
H/30 * * * *

每2個小時構(gòu)建一次:
H H/2 * * *

每天的8點(diǎn),12點(diǎn),22點(diǎn),一天構(gòu)建3次: (多個時間點(diǎn)中間用逗號隔開)
0 8,12,22 * * *

每天早上8點(diǎn)到晚上6點(diǎn)每三小時檢查一次
H 8-18/3 * * *

Build periodically(定時構(gòu)建):周期進(jìn)行項(xiàng)目構(gòu)建(它不care源碼是否發(fā)生變化)
Poll SCM(輪訓(xùn) SCM):定時檢查源碼變更(根據(jù)SCM軟件的版本號),如果有更新就checkout最新code下來,然后執(zhí)行構(gòu)建動作。

圖片.png
圖片.png
圖片.png

shell腳本:

# !/bin/bash -ex
# export LANG=en_US.UTF-8
# 工作空間位置
WORKSPACE="/Users/niexiaobo/.jenkins/workspace"
platforms="artABC"
ProjectName="helloA"
# 切換到工程目錄
cd ${WORKSPACE}/${platforms}/${ProjectName}
# 打開鑰匙串
security unlock-keychain -p ${password} ~/Library/Keychains/login.keychain
# pastry命令行將外層的 www 目錄 合并到 平臺內(nèi)的 www 目錄
# /Users/Shared/Jenkins/Documents/pastry/bin/pastry bake cordova prepare ${platforms}
# 配置 版本號
buildNumber="Jenkins:${BUILD_NUMBER} svn:${SVN_REVISION}"
# 獲取配置文件地址
PROJECT_INFOLIST="${WORKSPACE}/${platforms}/${ProjectName}/${ProjectName}/Info.plist"
# 修改配置文件 的 版本號
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${buildNumber}" "${PROJECT_INFOLIST}"
# 編譯(單工程用-target,多工程用-workspace)

packageOut="${WORKSPACE}/package_Out"

#執(zhí)行 (生成.xcarchive文件)
xcodebuild archive -scheme "${ProjectName}" -configuration "Release" -archivePath "${packageOut}/${ProjectName}/xc_${BUILD_NUMBER}.xcarchive"
#導(dǎo)出ipa
xcodebuild -exportArchive -archivePath "${packageOut}/${ProjectName}/xc_${BUILD_NUMBER}.xcarchive" -exportOptionsPlist "${packageOut}/${ProjectName}/ExportOptions.plist" -exportPath "${packageOut}/${ProjectName}/ipa_${BUILD_NUMBER}"

6 : 保存完成后,在首頁項(xiàng)目中就可以進(jìn)行:

6.1 創(chuàng)建工程項(xiàng)目helloA

圖片.png

xcode工具打開,設(shè)置開發(fā)者信息,編譯成功 , 將項(xiàng)目上傳到git云端


圖片.png

進(jìn)入Jenkins首頁,可點(diǎn)擊項(xiàng)目右側(cè)按鈕手動執(zhí)行:

圖片.png

點(diǎn)擊上面項(xiàng)目artABC進(jìn)入:


圖片.png

點(diǎn)擊某一次編譯,可查看編譯日志等等:


圖片.png

7 關(guān)于上面shell腳本:

下面了解如何使用命令進(jìn)行打包:

7.1 新版本xcode 打包 xcodebuild -exportArchive 命令

下面在
終端窗口,cd 命令進(jìn)入項(xiàng)目路徑, 再進(jìn)行操作

cd /Users/niexiaobo/.jenkins/workspace/artABC/helloA

(1)執(zhí)行 xcodebuild clean 進(jìn)行清除

(2)執(zhí)行 (生成.xcarchive文件)

xcodebuild archive -scheme "helloA" -configuration "Release" -archivePath "/Users/niexiaobo/.jenkins/workspace/package_Out/helloA/1.xcarchive"
終端命令:生成.xcarchive文件

(3)添加ExportOptions.plist文件到某個路徑
一般我們通過xcode打包有幾種打包選項(xiàng):


圖片.png

最后當(dāng)我們導(dǎo)出文件時,會包含以下4種文件


圖片.png

其中ExportOptions.plist文件就包含了導(dǎo)出ipa文件的一些設(shè)置:


圖片.png

(4)導(dǎo)出包 格式://xxx.plist代表指定的exportOptionsPlist文件;
xcodebuild -exportArchive -archivePath xxx.xcarchive -exportOptionsPlist xxx.plist -exportPath ./Product
(如果項(xiàng)目沒用選擇Profile, 需要添加-exportProvisioningProfile 參數(shù))

命令示例:

xcodebuild -exportArchive -archivePath "/Users/niexiaobo/.jenkins/workspace/package_Out/helloA/1.xcarchive" -exportOptionsPlist "/Users/niexiaobo/.jenkins/workspace/package_Out/helloA/ExportOptions.plist" -exportPath "/Users/niexiaobo/.jenkins/workspace/package_Out/helloA/helloAipa"
終端命令:導(dǎo)出包
文件顯示

7.2 xcode 舊版本 打包 命令

進(jìn)入項(xiàng)目路徑

cd /Users/niexiaobo/.jenkins/workspace/artABC/helloA

(1) 編譯項(xiàng)目(工程目錄下會多出一個 build 文件夾)

xcodebuild -project helloA.xcodeproj -target helloA -configuration Release

(2) PackageApplication命令:

 Xcode升級到8.3后(8.3以下直接最后一步打包) 用PackageApplication命令進(jìn)行打包 提示下面這個錯誤
xcrun: error: unable to find utility "PackageApplication", not a developer tool or in PATH

PackageApplication下載地址:
鏈接: https://pan.baidu.com/s/14LYFvPQb6YJKL0Iy1Kzreg 提取碼: br8v 

解壓后存到下面目錄下:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/

然后執(zhí)行:
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer/

然后執(zhí)行PackageApplication:
chmod +x /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication

(3) 最后進(jìn)行打包

xcrun -sdk iphoneos PackageApplication -v /Users/niexiaobo/.jenkins/workspace/artABC/helloA/build/Release-iphoneos/helloA.app -o /Users/niexiaobo/.jenkins/workspace/package_Out/helloA_3.ipa

8 : 打包使用CocoaPods項(xiàng)目時

(8.2) 首先安裝CocoaPods環(huán)境

1 安裝CocoaPods環(huán)境
2 pod init //生成 podfile
3 編輯podfile文件
比如添加 : pod 'Reachability', '~> 3.0.0'
4 安裝

pod install
或者:
pod install --verbose --no-repo-update

5 最后會生成helloA.xcworkspace 文件, 也是以后項(xiàng)目啟動文件

圖片.png

(8.2) 然后在.git位置添加忽略文件.gitignore, 然后提交項(xiàng)目到git云端
圖片.png

內(nèi)容:

#CocoaPods
Pods/

# Xcode
#
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore

# Mac OS X Finder and whatnot
.DS_Store

## Build generated
build/
DerivedData/

## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata/

## Other
*.moved-aside
*.xcuserstate
*.xccheckout

## Obj-C/Swift specific
*.hmap
*.ipa
*.dSYM.zip
*.dSYM

這時候如果直接在Jenkins上打包會報(bào)錯, 拉下來的代碼會依然運(yùn)行helloA.xcodeproj文件, 自然編譯就會報(bào)錯.

(8.2) 添加插件

下載
需要下載兩個插件:token-macro.hpi和xcode-plugin.hpi,
https://updates.jenkins-ci.org/download/plugins/token-macro/
https://updates.jenkins-ci.org/download/plugins/xcode-plugin/

在jenkins安裝插件位置:
jenkins->系統(tǒng)管理(Manage Jenkins)->管理插件(Manage plugin)->高級advance->上傳插件.

先上傳安裝token-macro.hpi,再上傳安裝code-plugin.hpi,安裝完后重啟(http://localhost:8080/restart),即可在構(gòu)建中看到xcode選項(xiàng)。

上傳插件
進(jìn)入Manage Jenkins 菜單

進(jìn)入管理插件欄:


圖片.png

找到上傳插件:


圖片.png

先上傳安裝token-macro.hpi,再上傳安裝code-plugin.hpi,

圖片.png

安裝完后重啟
http://localhost:8080/restart

圖片.png

(8.3) 配置shell腳本

修改腳本:
(1)由于pod相關(guān)文件均被git忽略,clone下來后需要update一下
(2)pod管理使用的是.xcworkspace文件,打包命令需要指定文件

#!/bin/sh

WORKSPACE="/Users/niexiaobo/.jenkins/workspace"
platforms="artABC"
ProjectName="helloA"


# 切換到工程目錄
cd ${WORKSPACE}/${platforms}/${ProjectName}

# 打開鑰匙串
security unlock-keychain -p ${password} ~/Library/Keychains/login.keychain
# pastry命令行將外層的 www 目錄 合并到 平臺內(nèi)的 www 目錄
# /Users/Shared/Jenkins/Documents/pastry/bin/pastry bake cordova prepare ${platforms}
# 配置 版本號
buildNumber="Jenkins:${BUILD_NUMBER} svn:${SVN_REVISION}"

echo "版本號:${BUILD_NUMBER}"

# 獲取配置文件地址
PROJECT_INFOLIST="${WORKSPACE}/${platforms}/${ProjectName}/${ProjectName}/Info.plist"

echo "配置文件地址${PROJECT_INFOLIST}"


# 修改配置文件 的 版本號
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${buildNumber}" "${PROJECT_INFOLIST}"

packageOut="${WORKSPACE}/package_Out"

#  檢查pod更新
pod install --verbose --no-repo-update

#  clean 項(xiàng)目:
xcodebuild -workspace "${WORKSPACE}/${platforms}/${ProjectName}/${ProjectName}.xcworkspace" -scheme "${ProjectName}" -configuration "Release" clean

# 生成archive 文件:
xcodebuild archive -workspace "${WORKSPACE}/${platforms}/${ProjectName}/${ProjectName}.xcworkspace" -scheme "${ProjectName}" -archivePath "${packageOut}/${ProjectName}/xc_${BUILD_NUMBER}.xcarchive" -configuration "Release"  


# 導(dǎo)出ipa文件:
xcodebuild -exportArchive -archivePath "${packageOut}/${ProjectName}/xc_${BUILD_NUMBER}.xcarchive" -exportOptionsPlist "${packageOut}/${ProjectName}/ExportOptions.plist" -exportPath "${packageOut}/${ProjectName}/ipa_${BUILD_NUMBER}" -allowProvisioningUpdates


保存,編譯

(8.4)當(dāng)然不使用shell腳本也行, 如下步驟配置:

進(jìn)入項(xiàng)目-配置configure->刪除execute shell
點(diǎn)擊- 導(dǎo)出IPAexport IPA :

/Users/niexiaobo/.jenkins/workspace/package_Out/helloA/
ad-hoc
helloA${BUILD_DATE}
/Users/niexiaobo/.jenkins/workspace/package_Out/helloA/export/2/

圖片.png

在Keychain path那里填寫${HOME}/Library/Keychains/login.keychain


圖片.png

helloA
/Users/niexiaobo/.jenkins/workspace/artABC/helloA/helloA
/Users/niexiaobo/.jenkins/workspace/artABC/helloA/

圖片.png

配置完成后保存.

然后回到項(xiàng)目編譯.


圖片.png

9 : 打包上傳到fir

9.1 通過shell上傳

(1)安裝插件 (需要插件支持才能上傳)

打開Mac 終端,輸入命令:

 sudo gem install fir-cli

安裝成功:


圖片.png
(2) 獲取token (需要校驗(yàn),相當(dāng)于登錄賬戶密碼)

安裝完插件后, 登錄fir, 移動到右上角賬號,選擇api token :


圖片.png

生成token


圖片.png
(2) 修改已經(jīng)配置的 shell腳本

假設(shè)上面生成的token是 1234567894567890
在腳本最后添加一行:

#!/bin/sh

WORKSPACE="/Users/niexiaobo/.jenkins/workspace"
platforms="artABC"
ProjectName="helloA"

.....
.....
.....

# 導(dǎo)出ipa文件:
xcodebuild -exportArchive -archivePath "${packageOut}/${ProjectName}/xc_${BUILD_NUMBER}.xcarchive" -exportOptionsPlist "${packageOut}/${ProjectName}/ExportOptions.plist" -exportPath "${packageOut}/${ProjectName}/ipa_${BUILD_NUMBER}" -allowProvisioningUpdates

#上傳ipa文件到fir (發(fā)布App Store的包不允許)
fir publish "${packageOut}/${ProjectName}/ipa_${BUILD_NUMBER}/${ProjectName}.ipa" -T "1234567894567890" -c "Uploaded by fir-jenkins plugin"

現(xiàn)在可以構(gòu)建代碼了.

構(gòu)建完成后fir下載地址:


圖片.png

9.2 通過Jenkins 插件上傳

(1)下載插件

-> fir 插件下載地址

(2)安裝插件

在jenkins安裝插件位置:
jenkins->系統(tǒng)管理(Manage Jenkins)->管理插件(Manage plugin)->高級advance->上傳fir-plugin.hpi插件.

(3)編輯配置:添加構(gòu)建事件- > 上傳到fir
圖片.png

添加token , ipa包的文件夾路徑(最后沒有斜杠"/" )


圖片.png

保存后構(gòu)建項(xiàng)目即可.

-------end---------

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,606評論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,582評論 3 418
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,540評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,028評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,801評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,223評論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,294評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,442評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,976評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,800評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,996評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,543評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,233評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,926評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,702評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內(nèi)容