jenkins + gitlab自動部署

一.基礎知識

GitLab:是一個基于Git實現(xiàn)的在線代碼倉庫托管軟件虎敦,是用來提供代碼托管的。我們可以用在企業(yè)內(nèi)部網(wǎng)絡搭建私服痢畜。

jenkins:基于Java開發(fā)的一種持續(xù)集成工具虫几,用于監(jiān)控持續(xù)重復的工作。在提供一個開放易用的軟件平臺赘艳,使軟件的持續(xù)集成變成可能酌毡。

maven:項目管理工具,在這里我們可以執(zhí)行maven命令來幫我們打包

jdk: Java 語言的軟件開發(fā)工具包

tomcat:輕量級應用服務器

git:版本控制器

二.整合目的

在日常開發(fā)中蕾管,以前的流程是需要把項目從gitlab上復制到本地枷踏,再打成war包,然后部署到tomcat服務器上運行掰曾。開發(fā)項目的過程中會經(jīng)常部署測試環(huán)境來驗證旭蠕,重復以上操作會顯得很繁瑣,浪費大量時間旷坦,所以使用jenkins來實現(xiàn)持續(xù)集成掏熬,對整個開發(fā)項目的過程有著重要的戰(zhàn)略意義。我們開發(fā)軟件為了什么秒梅?對旗芬,簡化步驟,提高開發(fā)效率捆蜀,節(jié)省時間疮丛。

三:流程示意圖

請叫我靈魂畫師~

四:軟件安裝

前提:這次整合,我是只使用2臺機器辆它,服務器A裝jenkins誊薄,jdk,maven娩井,服務器B裝gitlab和tomcat暇屋,其實應該是要個服務器C裝tomcat,這樣思路就更清楚了洞辣,具體情況各位根據(jù)實際需求來定哈咐刨。

1)B服務器上gitLab安裝

1. 安裝依賴

sudo yum install curl policycoreutils openssh-server openssh-clients policycoreutils-python

sudo systemctl enable sshd

sudo systemctl start sshd

sudo yum install postfix

sudo systemctl enable postfix

sudo systemctl start postfix

注意:sudo systemctl start postfix 如果報錯昙衅,如下面所示

Job for postfix.service failed because the control process exited with error code. See "systemctl status postfix.service" and "journalctl -xe" for details.

解決辦法:修改 vi /etc/postfix/main.cf的設置

inet_protocols = all

inet_interfaces = all

2. yum 配置鏡像加速

我推薦清華大學鏡像源 :?https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce

操作如下:vi /etc/yum.repos.d/gitlab_gitlab-ce.repo

[gitlab-ce]

name=Gitlab CE Repository

baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/

gpgcheck=0

enabled=1

3. 更新本地云緩存`

sudo yum makecache`

4. 安裝`

? sudo yum install gitlab-ce

5. 修改配置項

默認是80端口,如果想要修改端口號的話定鸟,打開gitlab.rb文件而涉,修改如下:

sudo vim /etc/gitlab/gitlab.rb

#修改配置項

external_url 'http://<你的服務器地址或域名>:<你想要設置的端口號>'

unicorn['port'] = <你想要設置的端口號>

prometheus['listen_address'] = 'localhost:<你想要設置的端口號>'

sudo gitlab-ctl reconfigure # 重新配置服務;

6. 重啟gitlab

gitlab-ctl restart

打開http://<你的服務器IP>:<80>联予,會彈出一個設置初始密碼的界面啼县,按照要求輸入初始密碼,就會跳轉到登錄頁面沸久。gitlab管理員用戶名為root季眷。

我這邊是自己創(chuàng)建了用戶,下圖是注冊卷胯,完成后登陸子刮。

7. 服務器A上配置免密碼登錄

客戶端命令行生成ssh

ssh-keygen -t rsa

它會生成公鑰id_rsa.pub和私鑰id_rsa,存放在.ssh目錄下窑睁。復制公鑰到Gitlab的用戶設置中的SSH Keys中挺峡,點擊保存。操作如下圖所示

有人問這樣做的目的是什么担钮?問得好橱赠!這樣我們就能建立服務器A跟gitLab的安全連接,我們就可以通過git將gitlab倉庫里的代碼拉下來或者推送到倉庫箫津。

2)A服務器上安裝jdk

centOS安裝jdk有三種狭姨,隨便選一種都可以,網(wǎng)上一大堆鲤嫡。我選中的是手動解壓安裝包送挑。

卸載系統(tǒng)自帶的jdk(此步驟建立在centOS7自帶jdk1.8的情況,可以跳過暖眼,也可以自己安裝想要的jdk)

查看當前系統(tǒng)jdk的版本:java -version惕耕。(如下圖的話則代表自帶,繼續(xù)下面步驟)

列舉匹配已安裝的java的軟件包:

yum list installed | grep java

卸載安裝的jdk

yum -y remove java-1.7.0-openjdk*?

yum -y remove java-1.8.0-openjdk*

當結果出現(xiàn)了完畢诫肠!司澎,就表示卸載成功。

輸入java -version 查看栋豫,驗證是否卸載成功挤安。

2. 下載jdk1.8安裝包

jdk下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

下載 jdk-8u152-linux-x64.tar.gz(根據(jù)自己的系統(tǒng)位數(shù)選擇對應的包)

然后使用Xftp將下載好的jdk-8u152-linux-x64.tar.gz上傳到CentOs上去,我選擇的是在usr下創(chuàng)建一個文件夾來專門放壓縮包丧鸯。

3. 在user/local目錄下新建java文件夾

# cd /usr/local/

# mkdir java

# cd java

4.解壓

進到壓縮包所在的目錄蛤铜,將jdk-8u152-linux-x64.tar.gz 解壓到我所創(chuàng)建的java文件中。

tar -zxvf jdk-8u152-linux-x64.tar.gz -C /usr/local/java

5.配置環(huán)境變量

export JAVA_HOME=/usr/local/java/jdk1.8.0_212

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

注釋:

JAVA_HOME指明JDK安裝路徑,就是剛才安裝時所選擇的路徑围肥,此路徑下包括lib剿干,bin,jre等文件夾(tomcat穆刻,Eclipse的運行都需要依靠此變量)置尔。

PATH使得系統(tǒng)可以在任何路徑下識別java命令

特別注意:環(huán)境變量值的結尾沒有任何符號,不同值之間用:隔開(windows中用;)

6.使配置文件生效

source /etc/profile

7.測試配置是否成功

java -version

3 )Maven安裝

1. 獲取安裝包:鏡像氢伟。

wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz

2. 提前創(chuàng)建好maven文件夾榜轿,解壓tar包至maven文件夾

tar -zxvf apache-maven-3.5.4-bin.tar.gz -C /usr/local/maven

3.配置環(huán)境變量

修改 profile 文件

vim /etc/profile

export MAVEN_HOME=/usr/local/maven/apache-maven-3.5.4

export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$MAVEN_HOME/bin

修改完重載這個文件使文件立即生效,否則重啟計算機即可生效朵锣。

source /etc/profile

4. 驗證 版本

mvn? -v

顯示如下則代表成功

Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)

Maven home: /usr/local/maven/apache-maven-3.5.4

Java version: 1.8.0_212, vendor: Oracle Corporation, runtime: /usr/local/java/jdk1.8.0_212/jre

Default locale: zh_CN, platform encoding: UTF-8

OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"

4 )安裝jenkins

1. 安裝

wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

yum install -y jenkins

2. 關閉防火墻

systemctl stop firewalld.service

systemctl disable firewalld.service

3. 配置文件

vi /etc/sysconfig/jenkins

#修改下面內(nèi)容

JENKINS_USER="root"

...

端口設置成為被占用的

JENKINS_PORT="xxxx"

4. 啟動jenkins

systemctl daemon-reload

systemctl start jenkins

systemctl status jenkins

5 )安裝git

1. 獲取源碼包

wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.18.0.tar.gz

2. git構建時需要的環(huán)境

yum groupinstall "Development Tools"

3. 安裝各種devel包

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

openssh-clients

4. 編譯并安裝谬盐,同時輸出執(zhí)行路徑到環(huán)境變量中

make prefix=/usr/local/git all

make prefix=/usr/local/git install

echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc

source /etc/bashrc

5. 驗證能否正常運行:

git --version

五:詳細步驟

1. 解鎖jenkins

按照提示將代碼復制到下面,然后點繼續(xù)诚些。

2. 點擊左邊的安裝推薦的插件

好吧设褐,等了好幾分鐘才裝完,耐心等待吧泣刹。

3. 創(chuàng)建管理員用戶,實例配置

注意犀被!安裝配置jenkins的時候椅您,會出現(xiàn)插件安裝失敗的情況。

原因:升級站點問題寡键,站點位于國外掀泳,訪問起來比較吃力。

解決方式:更換為國內(nèi)的jenkins鏡像就可以了西轩。

操作:系統(tǒng)管理>>管理插件>>高級

將 [升級站點] 更換為

http://mirror.xmission.com/jenkins/updates/current/update-center.json

隨后提交即可解決员舵,如下圖。

如果是告訴你需要升級jenkins才能搞定藕畔,那就在線升級jenkins马僻。

yum安裝的升級方法

1、service jenkins stop

2注服、yum update jenkins

3韭邓、service jenkins start

升級完就應該沒問題了。

4. 配置jdk溶弟,maven女淑,git

首先我們要配置jenkins編譯所需要的jdk,maven辜御,順便把git也配置了鸭你。最后點擊保存。

注意:jdk home和maven home 可以輸入vim /etc/profile看到,直接復制粘貼就行袱巨。git的話輸入whereis git就可以查到了阁谆,一般是git/bin/git這個結尾的。

5. 在jenkins上系統(tǒng)設置gitlab和git

安裝Gitlab插件瓣窄,Gitlab Hook插件笛厦,Git插件。打開設置俺夕,選擇插件管理裳凸。點擊可選插件,然后在搜索框里輸入就可以了劝贸,搜索到后點擊直接安裝姨谷。沒看懂的可以看我第六那個步驟。

安裝完之后映九,點擊系統(tǒng)設置梦湘。

找到Gitlab這個配置。

這邊需要添加憑證件甥,我選用的類型是gitlab API token捌议。

從哪里獲取呢?打開gitlab引有,用戶設置里面有個訪問令牌選項瓣颅。

成功后會如下顯示。然后復制這個令牌譬正,保存在你自己知道的地方宫补,不保存就以后就看不到了。

接著把剛才復制的訪問令牌粘貼到添加的憑證那里去曾我,點擊添加粉怕,然后前面的下拉框里選擇你剛才添加的憑證。

配置完gitlab后要配置git抒巢,2個選項一填就可以了贫贝,用戶名和郵箱。好了蛉谜,配置結束平酿。

6. 在jenkins上創(chuàng)建一個maven項目

點擊新建Item,或者開始創(chuàng)建一個新任務悦陋,然后選擇新建maven項目蜈彼。很多人說沒有,比如下圖俺驶。

那是因為沒有安裝一個Maven插件幸逆。在可選插件里輸入Maven Integration棍辕,點擊安裝,不好意思我安裝的比較快还绘,沒來得及截圖楚昭。已經(jīng)在我安裝列表里了。

返回到主頁面拍顷,點擊新建抚太,任務名字隨便起谨究,選擇構建一個maven項目囊扳,最后點擊確定。

7. 配置源碼管理

這里我們用來讓jenkins連接gitlab倉庫的蒂阱。

首先打開gitlab踏揣,新建一個倉庫庆亡。這里我喜歡叫倉庫,但它翻譯成項目捞稿。用過github的朋友應該喜歡叫倉庫吧又谋。隨意啦,強迫癥娱局。

寫倉庫名字彰亥,設置私有的,描述可寫可不寫衰齐,然后創(chuàng)建剩愧。

倉庫列表中就有了你新建的倉庫,點擊它進入倉庫娇斩。

復制倉庫url。

注意:一開始這個倉庫是空的穴翩,我這邊是剛才上傳了個helloworld的maven項目犬第,用來測試下git能不能上傳代碼到這個倉庫,大家試下芒帕,后面jenkins配置需要這倉庫主分支不能為空歉嗓。

我是自己windows上安裝了git,通過配置idea中的git來push代碼背蟆,當然也需要生成ssh鑰匙在gitlab上添加sshkey鉴分。(前面步驟一開始我生成的ssh鑰匙是在我安裝jenkins的那臺服務器A上操作的,和這邊的是兩回事)带膀。不懂的朋友可以百度下window安裝git和生成ssh鑰匙志珍。

總結下:因為我們平時寫代碼是在windows下的idea里進行pull和push的,所以這邊生成ssh鑰匙并配置是為了能讓我們在idea上傳代碼push到服務器B的gitlab里垛叨。而前面那個在jenkins服務器上生成ssh鑰匙并配置是為了讓服務器A能和服務器B的gitlab安全連接伦糯,也就是可以pull和push。

切回jenkins,在源碼管理里敛纲,粘貼url上去喂击,第二個是添加分支,點擊添加淤翔,類型選擇用戶名和密碼翰绊,輸入你gitlab用戶名和密碼。其實類型可以選擇ssh秘鑰驗證旁壮,gitlab訪問令牌啊什么的监嗜,看你喜歡。

添加完證書后選擇證書寡具,如果不報紅色的字就說明ok秤茅,報的話說明錯誤。

注意:第三步中童叠,jenkins job默認對master分支進行構建框喳,你也可以自定義分支。這要求你的Gitlab代碼倉庫中要存在這個分支厦坛,一般來說五垮,就是要向代碼倉庫提交一次更改,請 自行完成(Gitlab項目剛創(chuàng)建時是空的杜秸,一個分支也沒有放仗,這樣的話,自動構建時會出錯)撬碟,這也就是上面先試試上傳代碼到gitlab是否成功的原因啦诞挨。

8. 配置構建觸發(fā)器

如下圖所示操作。我選了當一個push到gitlab的時候就會自動構建呢蛤,使用鉤子webhook惶傻,構建URL是jenkins上創(chuàng)建的那個maven項目。記住這個url其障,后面會用到银室!

點擊高級,出現(xiàn)下圖所示。

生成的口令其實就是webhook的安全令牌励翼,等會配置gitlab的時候要用到蜈敢。

打開gitlab,配置鉤子汽抚。點擊設置抓狭,然后集成。把上面記下來的jenkins項目url和webhook安全令牌寫進去造烁。

取消掉ssl驗證辐宾,然后點擊add webhook狱从。

點擊test中的第一個選項push events模擬push,看看是否成功叠纹。

下圖表示成功季研,如果報錯自己上網(wǎng)查下為何報錯,因為局域網(wǎng)的問題誉察,需要在gitlab上登陸管理員賬號与涡,配置里面有個選項就是說允許webhook發(fā)送本地指令之類的。

9. 配置build命令

使用maven命令來打包持偏。

10. Post Steps

暫時不用寫驼卖,注意下面提到的模塊六檢驗成果中開頭提到的東西就行,再根據(jù)實際情況來定鸿秆。

11. 構建后操作

我使用的是tomcat熱部署酌畜。首先要安裝Deploy to container插件!G溥础桥胞!, 該功能是“將成功編譯的War/Jar包部署到遠程的應用服務器上考婴。

我們先來配置tomcat遠程部署賬號贩虾,在tomcat目錄下conf文件內(nèi)tomcat-users.xml 文件增加以下配置。

<role rolename="manager-gui"/>

<role rolename="manager-script"/>

<role rolename="manager-jmx"/>

<role rolename="manager-status"/>

<user username="tomcat" password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status"/>

在conf文件中的context.xml里context標簽中改成<Context antiResourceLocking="true">沥阱,這個是為了自動刪除之前舊版本的war包缎罢。

打開tomcat解壓目錄找到webapps/manager/META-INF里的context.xml ,需要注釋掉這個Value節(jié)點考杉。

注意:配置完后驗證是否生效策精,啟動tomcat后點擊Manager App。輸入上面配置的用戶名密碼看看能不能進入崇棠。

選擇Deploy war/ear to a container,操作如下咽袜。因為jenkins從git上拉下來代碼并且打了war在jenkins的target目錄下,所以如下圖所示易茬。

好了 我們可以開始正片了!

## 六:檢驗成果

注意<袄稀3槔场!=径瘛J愁怼!I场E吧搿O蟊谩!U宓稹E蓟荨!@噬:瞿酢!P淮病P忠弧!:

這邊先講下识腿,我是建立在tomcat已經(jīng)啟動的情況下操作的出革,所以我沒有寫那個第10步。

commit push 渡讼,自動構建骂束,成功。

成功了硝全。

那么有些人想要在tomcat沒有啟動的情況下怎么辦呢栖雾?那肯定是要寫腳本來啟動tomcat。具體看模塊七血淚坑伟众!

## 七:血淚坑

失敗的例子1析藕。

我在構建后操作里使用Deploy war/ear to a container,上面的步驟都有顯示凳厢,也就是tomcat熱部署账胧,然后又在Post Steps里寫了腳本,就是關閉tomcat和開啟tomcat先紫。但是構建會報錯治泥。

參考了這篇文章,但是沒什么用遮精,依然構建報錯居夹。報錯跟下面鏈接里的一樣,我就不貼出來了本冲。

https://blog.csdn.net/weixin_33767813/article/details/86028814

后來我看了下准脂,tomcat熱部署 用tomcat manager 本來就有很多漏洞,所以我決定舍棄熱部署檬洞。

失敗的例子2狸膏。

舍棄熱部署,改用Send build artifacts over SSH添怔,構建成功湾戳,tomcat啟動失敗贤旷,那種我也不知道怎么解決。我看網(wǎng)上是說在執(zhí)行的腳本上加一句export BUILD_ID=dontkillme砾脑,因為jenkins是會殺掉tomcat進程的幼驶。但是還是沒用!

成功的例子拦止。

我們需要執(zhí)行shell腳本县遣,先關閉tomcat,然后啟動tomcat汹族。注意萧求,這邊tomcat是裝在服務器B的,所以先要實現(xiàn)服務器A免登錄服務器B顶瞒。

方法:先在服務器B的/root/.ssh下創(chuàng)建文件authorized_keys,然后把服務器A的生成的ssh公鑰(id_rsa.pub)復制到那個文件上榴徐。

注意 authorized_keys 文件的權限必須是600,如果權限不對會影響登錄耗帕。所以最后輸入指令:chmod 600 authorized_keys 就可以了。注意空格袱贮!

如下圖在postSteps中輸入shell命令。意思是ssh連接服務器B攒巍,執(zhí)行B服務器(192.168.31.222)上的restart.sh

#!/bin/bash

echo "執(zhí)行腳本開始"

TOMCAT_HOME="/root/app/tomcat8.5.42"

ssh root@192.168.31.222? > /dev/null 2>&1 << eeooff

${TOMCAT_HOME}/bin/restart.sh

eeooff

echo done!

echo "執(zhí)行腳本結束"

下圖是restart.sh的腳本內(nèi)容柒莉,這個文件是放在tomcat那臺服務器上的闻坚,也就是服務器B兢孝。

#!/bin/bash

# export BUILD_ID=dontkillme

function shutdown_tomcat () {

? ? #tomcat_id=`jps | grep Bootstrap | awk '{print $1}'`

tomcat_id=`lsof -i:8765 | awk 'NR==2''{print $2}'`

if [ ! $tomcat_id ];then

echo "tomcat process in ${ip} is not exist."

else

echo "shoutdown ${ip} tomcat"

/bin/kill -9 $tomcat_id

fi

}

function start_tomcat () {

echo "start $ip tomcat"

/bin/sh /root/app/tomcat8.5.42/bin/catalina.sh start

/root/app/jdk1.8.0/bin/jps

}

function restart_tomcat () {

shutdown_tomcat

start_tomcat

}

restart_tomcat

echo "腳本執(zhí)行完畢"

接著需要安裝下Publish over SSH這個插件,然后在全局設置里設置Publish over SSH雳殊,密碼是你jenkins所在的服務器生成ssh鑰匙時設置的喷市,沒有設置就不填威恼,Key里填的是你的私鑰寝并。

這邊填的是ssh連接的主機IP腹备,名字隨便取镀岛,賬號名稱就寫root友驮,路徑寫/就行,因為這是全局配置卸留,下面每個項目都有路徑配置耻瑟,會重合一起,注意拼接喳整。填完后測試下連接,成功就ok框都。

接著回到jenkins項目的配置里瞬项,找到構建后操作,把前面步驟中配置好的Deploy war/ear to a container 刪掉囱淋,我們不用tomcat熱部署妥衣。我們使用Send build artifacts over SSH皂吮。配置如下税手。

這樣就可以了,點擊保存艺挪,然后看下構建效果吧兵扬。腳本執(zhí)行成功了口蝠,這樣tomcat開啟了津坑。

大功告成疆瑰。其實方法有很多種,熱部署肯定是行得通的寸五,但是沒做出來。謝謝大家閱讀播歼。有什么錯誤幫我指出來掰读,我們一起討論

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市烁试,隨后出現(xiàn)的幾起案子拢肆,更是在濱河造成了極大的恐慌,老刑警劉巖支示,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件颂鸿,死亡現(xiàn)場離奇詭異攒庵,居然都是意外死亡,警方通過查閱死者的電腦和手機栽渴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進店門稳懒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人墅冷,你說我怎么就攤上這事。” “怎么了装哆?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵蜕琴,是天一觀的道長。 經(jīng)常有香客問我上炎,道長雏搂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任裳食,我火速辦了婚禮诲祸,結果婚禮上而昨,老公的妹妹穿的比我還像新娘。我一直安慰自己着憨,他們只是感情好务嫡,可當我...
    茶點故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布植袍。 她就那樣靜靜地躺著,像睡著了一般氛魁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上捶码,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天惫恼,我揣著相機與錄音澳盐,去河邊找鬼。 笑死腕窥,一個胖子當著我的面吹牛筛婉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播入蛆,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼安寺,長吁一口氣:“原來是場噩夢啊……” “哼首尼!你這毒婦竟也來了?” 一聲冷哼從身側響起迎捺,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤凳枝,失蹤者是張志新(化名)和其女友劉穎跋核,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蹋订,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡露戒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了动漾。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荠锭。...
    茶點故事閱讀 40,742評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡证九,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情看蚜,我是刑警寧澤供炎,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站惨奕,受9級特大地震影響竭钝,放射性物質發(fā)生泄漏。R本人自食惡果不足惜卧波,卻給世界環(huán)境...
    茶點故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一港粱、第九天 我趴在偏房一處隱蔽的房頂上張望旦签。 院中可真熱鬧,春花似錦偿曙、人聲如沸羔巢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鞋仍。三九已至,卻和暖如春落午,著一層夾襖步出監(jiān)牢的瞬間肚豺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工梗劫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留截碴,地道東北人日丹。 一個月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像丙躏,于是被迫代替她去往敵國和親束凑。 傳聞我的和親對象是個殘疾皇子湘今,可洞房花燭夜當晚...
    茶點故事閱讀 45,747評論 2 361

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