基于GitLab的工作流程設(shè)計(jì)

GitLab 是一個(gè)基于 git 的倉(cāng)庫(kù)管理程序茫孔,也是一個(gè)方便軟件開(kāi)發(fā)的強(qiáng)大完整應(yīng)用。

GitLab 擁有一個(gè)“用戶新人友好”的界面,通過(guò)圖形界面和命令行界面洁仗,使你的工作更加具有效率讲衫。GitLab 不僅僅對(duì)開(kāi)發(fā)者是一個(gè)有用的工具旭绒,它甚至可以被集成到你的整個(gè)團(tuán)隊(duì)中,使得每一個(gè)人獲得一個(gè)獨(dú)自唯一的平臺(tái)焦人。

GitLab 工作流邏輯符合使用者思維挥吵,使得整個(gè)平臺(tái)變得更加易用。相信我花椭,使用一次忽匈,你就離不開(kāi)它了!

GitLab 工作流

GitLab 工作流是在軟件開(kāi)發(fā)過(guò)程中矿辽,在使用 GitLab 作為代碼托管平臺(tái)時(shí)丹允,可以采取的動(dòng)作的一個(gè)邏輯序列。

GitLab 工作流遵循了提升團(tuán)隊(duì)的工作效率以及凝聚力袋倔。這種提升雕蔽,從引入一個(gè)新的項(xiàng)目開(kāi)始,一直到發(fā)布這個(gè)項(xiàng)目宾娜,成為一個(gè)產(chǎn)品都有所體現(xiàn)批狐。這就是我們所說(shuō)的“如何通過(guò)最快的速度把一個(gè)點(diǎn)子在 10 步之內(nèi)變成一個(gè)產(chǎn)品”。

軟件開(kāi)發(fā)階段

軟件開(kāi)發(fā)階段

一般情況下,軟件開(kāi)發(fā)經(jīng)過(guò) 10 個(gè)主要階段嚣艇;GitLab 為這 10 個(gè)階段依次提供了解決方案:

  • IDEA: 每一個(gè)從點(diǎn)子開(kāi)始的項(xiàng)目承冰,通常來(lái)源于一次閑聊。在這個(gè)階段食零,GitLab 集成了Mattermost困乒。

  • ISSUE: 最有效的討論一個(gè)點(diǎn)子的方法,就是為這個(gè)點(diǎn)子建立一個(gè)工單討論贰谣。你的團(tuán)隊(duì)和你的合作伙伴可以在工單追蹤器issue tracker中幫助你去提升這個(gè)點(diǎn)子

  • PLAN: 一旦討論得到一致的同意娜搂,就是開(kāi)始編碼的時(shí)候了。但是等等吱抚!首先百宇,我們需要優(yōu)先考慮組織我們的工作流。對(duì)于此频伤,我們可以使用工單看板Issue Board恳谎。

  • CODE: 現(xiàn)在,當(dāng)一切準(zhǔn)備就緒憋肖,我們可以開(kāi)始寫代碼了因痛。

  • COMMIT: 當(dāng)我們?yōu)槲覀兊某醪匠晒麣g呼的時(shí)候,我們就可以在版本控制下岸更,提交代碼到功能分支了鸵膏。

  • TEST: 通過(guò)GitLab CI,我們可以運(yùn)行腳本來(lái)構(gòu)建和測(cè)試我們的應(yīng)用怎炊。

  • REVIEW: 一旦腳本成功運(yùn)行谭企,我們測(cè)試和構(gòu)建成功,我們就可以進(jìn)行代碼復(fù)審code review以及批準(zhǔn)评肆。

  • STAGING:: 現(xiàn)在是時(shí)候將我們的代碼部署到演示環(huán)境來(lái)檢查一下债查,看看是否一切就像我們預(yù)估的那樣順暢——或者我們可能仍然需要修改。

  • PRODUCTION: 當(dāng)一切都如預(yù)期瓜挽,就是部署到生產(chǎn)環(huán)境的時(shí)候了盹廷!

  • FEEDBACK: 現(xiàn)在是時(shí)候返回去看我們項(xiàng)目中需要提升的部分了。我們使用周期分析 Cycle Analytics來(lái)對(duì)當(dāng)前項(xiàng)目中關(guān)鍵的部分進(jìn)行的反饋久橙。

簡(jiǎn)單瀏覽這些步驟俄占,我們可以發(fā)現(xiàn),提供強(qiáng)大的工具來(lái)支持這些步驟是十分重要的淆衷。在接下來(lái)的部分缸榄,我們?yōu)?GitLab 的可用工具提供一個(gè)簡(jiǎn)單的概覽。

GitLab flow

GitLab flow是GitLab官方推薦的分支管理策略祝拯,Gitlab flow 的最大原則叫做"上游優(yōu)先"(upsteam first)甚带,即只存在一個(gè)主分支master,它是所有其他分支的"上游"。只有上游分支采納的代碼變化欲低,才能應(yīng)用到其他分支辕宏。

GitLab flow

持續(xù)發(fā)布

GitLab flow 持續(xù)發(fā)布

持續(xù)發(fā)布適用于web等可以無(wú)縫更新的項(xiàng)目畜晰。

分支約定

臨時(shí)分支:在開(kāi)發(fā)完成會(huì)被刪除

  1. 功能分支 feature - 用于新功能的開(kāi)發(fā)砾莱,建議以issue-feature-name命名

  2. 修復(fù)分支fix - 用戶bug的修復(fù),建議以issue-fix-name命名

固定分支

  1. 開(kāi)發(fā)分支 master - 用于發(fā)布到測(cè)試環(huán)境凄鼻,上游分支為 featurefix腊瑟,該分支為受保護(hù)分支

  2. 預(yù)發(fā)分支 pre-production - 用于發(fā)布到預(yù)發(fā)環(huán)境,上游分支為 master

  3. 正式分支 production - 用于發(fā)布到正式環(huán)境块蚌,上游分支為 pre-production

使用流程

  1. 克隆項(xiàng)目到本地
git clone git@example.com:project-name.git
  1. 檢出分支
git checkout -b $issue-feature-name
  1. 提交并push到GitLab倉(cāng)庫(kù)
git commit -am "My feature is ready"
git push origin $issue-feature-name
  1. 運(yùn)行GitLab CI
  2. 在GitLab上創(chuàng)建一個(gè)Merge Request
  3. 項(xiàng)目管理者進(jìn)行代碼審查闰非,合并到master
  4. 運(yùn)行第二次GitLab CI
  5. 進(jìn)行產(chǎn)品測(cè)試
  6. master分支合并到pre-production
  7. 運(yùn)行第三次GitLab CI
  8. 進(jìn)行產(chǎn)品測(cè)試
  9. pre-production分支合并到prouction,并且為prouction打上tag峭范,保持prouction與線上代碼一致

版本發(fā)布

GitLab flow 版本發(fā)布

版本發(fā)布適用于APP财松、小程序等有版本規(guī)劃的項(xiàng)目。

分支約定

臨時(shí)分支:在開(kāi)發(fā)完成會(huì)被刪除

  1. 功能分支 feature - 用于新功能的開(kāi)發(fā)纱控,建議以issue-feature-name命名

  2. 修復(fù)分支fix - 用戶bug的修復(fù)辆毡,建議以issue-fix-name命名

固定分支

  1. 開(kāi)發(fā)分支 master - 用于發(fā)布到測(cè)試環(huán)境,上游分支為 featurefix甜害,該分支為受保護(hù)分支

  2. 發(fā)布分支 stable - 用于發(fā)布到預(yù)發(fā)環(huán)境舶掖,上游分支為 master,建議以version-stable命名尔店,該分支要盡可能晚的創(chuàng)建眨攘,每次更新此分支都要更新一個(gè)小版本號(hào)

使用流程

  1. 克隆項(xiàng)目到本地
git clone git@example.com:project-name.git
  1. 檢出分支
git checkout -b $issue-feature-name
  1. 提交并push到GitLab倉(cāng)庫(kù)
git commit -am "My feature is ready"
git push origin $issue-feature-name
  1. 運(yùn)行GitLab CI
  2. 在GitLab上創(chuàng)建一個(gè)Merge Request
  3. 項(xiàng)目管理者進(jìn)行代碼審查,合并到master
  4. 運(yùn)行第二次GitLab CI
  5. 進(jìn)行產(chǎn)品測(cè)試
  6. master分支合并到stable嚣州,如果是新版本則創(chuàng)建一個(gè)新的stable分支
  7. stable打上tag鲫售,并進(jìn)行發(fā)布

Merge Request 合并請(qǐng)求

功能分支和修復(fù)分支合并進(jìn)master分支,必須通過(guò) Merge Request该肴。

master分支應(yīng)該受到保護(hù)情竹,不是每個(gè)人都可以修改這個(gè)分支,以及擁有審批 Merge Request 的權(quán)力沙庐。

每一次 MR 都會(huì)有一個(gè)標(biāo)題(這個(gè)標(biāo)題總結(jié)了這次的改動(dòng))并且一個(gè)用 Markdown 書寫的描述鲤妥。在描述中,你可以簡(jiǎn)單的描述該 MR 做了什么拱雏,提及任何工單以及 MR(在它們之間創(chuàng)建聯(lián)系)棉安,并且,你也可以添加個(gè)關(guān)閉工單模式铸抑,當(dāng)該 MR 被合并的時(shí)候贡耽,相關(guān)聯(lián)的工單就會(huì)被關(guān)閉。

例如:

## 增加一個(gè)新頁(yè)面

這個(gè) MR 將會(huì)為這個(gè)項(xiàng)目創(chuàng)建一個(gè)包含該 app 概覽的 `readme.md`。

Closes #xxx and https://gitlab.com/<username>/<projectname>/issues/<xxx>

預(yù)覽:

![預(yù)覽新頁(yè)面](#image-url)

cc/ @Mary @Jane @John

當(dāng)你創(chuàng)建一個(gè)如上的帶有描述的 MR蒲赂,它將會(huì):

  • 當(dāng)合并時(shí)阱冶,關(guān)閉包括工單 #xxx 以及 https://gitlab.com/<username>/<projectname>/issues/<xxx>
  • 展示一張圖片
  • 通過(guò)郵件提醒用戶 @Mary@Jane滥嘴,以及給 @John

你可以分配這個(gè) MR 給你自己木蹬,直到你完成你的工作,然后把它分配給其他人來(lái)做一次代碼復(fù)審若皱。如果有必要的話镊叁,這個(gè) MR 可以被重新分配多次,直到你覆蓋你所需要的所有復(fù)審走触。

開(kāi)發(fā)完成后晦譬,在提交說(shuō)明里面,可以寫上"closes #67"互广。敛腌,只要commit message里面有下面這些動(dòng)詞 + 編號(hào),就會(huì)關(guān)閉對(duì)應(yīng)的issue惫皱。

注: 添加關(guān)閉工單樣式到你的 MR 以便可以使用 GitLab 周期分析追蹤你的項(xiàng)目進(jìn)展像樊,是十分重要的。它將會(huì)追蹤“CODE”階段逸吵,衡量第一次提交及創(chuàng)建一個(gè)相關(guān)的合并請(qǐng)求所間隔的時(shí)間凶硅。

WIP MR

WIP MR 含義是 在工作過(guò)程中的合并請(qǐng)求,是一個(gè)我們?cè)?GitLab 中避免 MR 在準(zhǔn)備就緒前被合并的技術(shù)扫皱。只需要添加 WIP: 在 MR 的標(biāo)題開(kāi)頭足绅,它將不會(huì)被合并,除非你把 WIP: 刪除韩脑。

當(dāng)你改動(dòng)已經(jīng)準(zhǔn)備好被合并氢妈,編輯工單來(lái)手動(dòng)刪除 WIP: ,或者使用就像如下 MR 描述下方的快捷方式段多。

WIP MR單擊從標(biāo)題中刪除WIP

WIP 模式可以通過(guò)斜線命令 /wip 快速添加到合并請(qǐng)求中首量。只需要在評(píng)論或者 MR 描述中輸入它并提交即可。

Code Review 代碼審核

旦你創(chuàng)建一個(gè)合并請(qǐng)求进苍,就是你開(kāi)始從你的團(tuán)隊(duì)以及合作方收取反饋的時(shí)候了加缘。使用圖形界面中的差異比較功能,你可以簡(jiǎn)單的添加行內(nèi)注釋觉啊,以及回復(fù)或者解決它們拣宏。

你也可以通過(guò)點(diǎn)擊行號(hào)獲取每一行代碼的鏈接。

在圖形界面中可以看到提交歷史杠人,通過(guò)提交歷史勋乾,你可以追蹤文件的每一次改變宋下。你可以以行內(nèi)差異或左右對(duì)比的方式瀏覽它們。

在GitLab Merge Request進(jìn)行代碼審核

如果你遇到合并沖突辑莫,可以快速地通過(guò)圖形界面來(lái)解決学歧,或者依據(jù)你的需要修改文件來(lái)修復(fù)沖突。

通過(guò)圖形界面解決沖突

Issue 工單

GitLab 有一個(gè)強(qiáng)大的工單追溯系統(tǒng)各吨,在使用過(guò)程中枝笨,允許你和你的團(tuán)隊(duì),以及你的合作者分享和討論建議绅你。所有的開(kāi)發(fā)工作都應(yīng)該以工單任務(wù)為導(dǎo)向伺帘。

Issue

工單是 GitLab 工作流的第一個(gè)重要重要特性昭躺。以工單的討論為開(kāi)始忌锯; 跟蹤新點(diǎn)子的改變是一個(gè)最好的方式。

這十分有利于:

  • 討論點(diǎn)子
  • 提交功能建議
  • 提問(wèn)題
  • 提交錯(cuò)誤和故障
  • 獲取支持
  • 精細(xì)化新代碼的引入

每一個(gè)在 GitLab 上部署的項(xiàng)目都有一個(gè)工單追蹤器领炫。找到你的項(xiàng)目中的 Issues > New issue 來(lái)創(chuàng)建一個(gè)新的工單偶垮。建立一個(gè)標(biāo)題來(lái)總結(jié)要被討論的主題,并且使用 Markdown 來(lái)形容它帝洪∷贫妫看看下面的“專業(yè)技巧”來(lái)加強(qiáng)你的工單描述。

GitLab 工單追蹤器提供了一個(gè)額外的實(shí)用功能葱峡,使得步驟變得更佳易于管理和考慮砚哗。下面的部分仔細(xì)描述了它。

Issue

截止日期

每一個(gè)工單允許你填寫一個(gè)截止日期砰奕。有些團(tuán)隊(duì)工作時(shí)間表安排緊湊蛛芥,以某種方式去設(shè)置一個(gè)截止日期來(lái)解決問(wèn)題,是有必要的军援。這些都可以通過(guò)截止日期這一功能實(shí)現(xiàn)仅淑。

當(dāng)你對(duì)一個(gè)多任務(wù)項(xiàng)目有截止日期的時(shí)候——比如說(shuō),一個(gè)新的發(fā)布活動(dòng)胸哥、項(xiàng)目的啟動(dòng)涯竟,或者按階段追蹤任務(wù)——你可以使用里程碑

受托者 Assignee

要讓某人處理某個(gè)工單空厌,可以將其分配給他庐船。你可以任意修改被分配者,直到滿足你的需求嘲更。這個(gè)功能的想法是筐钟,一個(gè)受托者本身對(duì)這個(gè)工單負(fù)責(zé),直到其將這個(gè)工單重新賦予其他人哮内。

這也可以用于按受托者篩選工單盗棵。

標(biāo)簽 Lable

GitLab 標(biāo)簽也是 GitLab 流的一個(gè)重要組成部分壮韭。你可以使用它們來(lái)分類你的工單,在工作流中定位纹因,以及通過(guò)優(yōu)先級(jí)標(biāo)簽來(lái)安裝優(yōu)先級(jí)組織它們喷屋。

標(biāo)簽使得你與工單看板協(xié)同工作,加快工程進(jìn)度以及組織你的工作流瞭恰。

常用 Label

對(duì)于大型項(xiàng)目屯曹, 每個(gè) Issue 至少應(yīng)該有兩個(gè) Label ,一個(gè)表示性質(zhì)惊畏,另一個(gè)表示優(yōu)先級(jí)恶耽。

表示性質(zhì)的 Label,可以參考這篇文章的范例颜启。

常用表示性質(zhì)的Label

表示優(yōu)先級(jí)的 Label偷俭,可以采用下面的級(jí)別。

  • 高優(yōu)先級(jí)(High):對(duì)系統(tǒng)有重大影響缰盏,只有解決它之后涌萤,才能去完成其他任務(wù)。
  • 普通優(yōu)先級(jí)(Medium):對(duì)系統(tǒng)的某個(gè)部分有影響口猜,用戶的一部分操作會(huì)達(dá)不到預(yù)期效果负溪。
  • 低優(yōu)先級(jí)(Low):對(duì)系統(tǒng)的某個(gè)部分有影響,用戶幾乎感知不到济炎。
  • 微不足道(Trivial):對(duì)系統(tǒng)的功能沒(méi)有影響川抡,通常是視覺(jué)效果不理想,比如字體和顏色不滿意须尚。

看板 Board

在項(xiàng)目中崖堤,GitLab 工單看板是一個(gè)用于計(jì)劃以及組織你的工單,使之符合你的項(xiàng)目工作流的工具恨闪。

看板包含了與其相關(guān)的相應(yīng)標(biāo)簽倘感,每一個(gè)列表包含了相關(guān)的被標(biāo)記的工單,并且以卡片的形式展示出來(lái)咙咽。

這些卡片可以在列表之間移動(dòng)老玛,被移動(dòng)的卡片,其標(biāo)簽將會(huì)依據(jù)你移動(dòng)的位置相應(yīng)更新到列表上钧敞。

看板

里程碑 Milestones

里程碑 是 GitLab 中基于共同的目標(biāo)蜡豹、詳細(xì)的日期追蹤你隊(duì)伍工作的最好工具。

不同情況下的目的是不同的溉苛,但是大致是相同的:你有為了達(dá)到特定的目標(biāo)的工單的集合以及正在編碼的合并請(qǐng)求镜廉。

這個(gè)目標(biāo)基本上可以是任何東西——用來(lái)結(jié)合團(tuán)隊(duì)的工作,在一個(gè)截止日期前完成一些事情愚战。例如娇唯,發(fā)布一個(gè)新的版本齐遵,啟動(dòng)一個(gè)新的產(chǎn)品,在某個(gè)日期前完成塔插,或者按季度收尾一些項(xiàng)目梗摇。

里程碑

構(gòu)建、測(cè)試以及發(fā)布

GitLab CI

GitLab CI 是一個(gè)強(qiáng)大的內(nèi)建工具想许,其作用是持續(xù)集成伶授、持續(xù)發(fā)布以及持續(xù)分發(fā),它可以按照你希望的運(yùn)行一些腳本流纹。它的可能性是無(wú)止盡的:你可以把它看做是自己運(yùn)行的命令行糜烹。

它完全是通過(guò)一個(gè)名為 .gitlab-ci.yml 的 YAML 文件設(shè)置的,其放置在你的項(xiàng)目倉(cāng)庫(kù)中漱凝。使用 Web 界面簡(jiǎn)單的添加一個(gè)文件疮蹦,命名為 .gitlab-ci.yml 來(lái)觸發(fā)一個(gè)下拉菜單,為不同的應(yīng)用選擇各種 CI 模版碉哑。

.gitlab-ci.yml

使用案例

GitLab CI 的使用案例:

我們已經(jīng)準(zhǔn)備一大堆 GitLab CI 樣例工程作為您的指南贮尖。看看它們吧趁怔!

反饋:周期分析

當(dāng)你遵循 GitLab 工作流進(jìn)行工作湿硝,你的團(tuán)隊(duì)從點(diǎn)子到產(chǎn)品,在每一個(gè)過(guò)程的關(guān)鍵部分润努,你將會(huì)在下列時(shí)間獲得一個(gè) GitLab 周期分析的反饋:

  • Issue: 從創(chuàng)建一個(gè)工單关斜,到分配這個(gè)工單給一個(gè)里程碑或者添加工單到你的工單看板的時(shí)間。
  • Plan: 從給工單分配一個(gè)里程碑或者把它添加到工單看板铺浇,到推送第一次提交的時(shí)間痢畜。
  • Code: 從第一次提交到提出該合并請(qǐng)求的時(shí)間。
  • Test: CI 為了相關(guān)合并請(qǐng)求而運(yùn)行整個(gè)過(guò)程的時(shí)間鳍侣。
  • Review: 從創(chuàng)建一個(gè)合并請(qǐng)求到合并它的時(shí)間丁稀。
  • Staging: 從合并到發(fā)布成為產(chǎn)品的時(shí)間。
  • Production(Total): 從創(chuàng)建工單到把代碼發(fā)布成產(chǎn)品的時(shí)間倚聚。

參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市惑折,隨后出現(xiàn)的幾起案子授账,更是在濱河造成了極大的恐慌枯跑,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件白热,死亡現(xiàn)場(chǎng)離奇詭異全肮,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)棘捣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門辜腺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人乍恐,你說(shuō)我怎么就攤上這事评疗。” “怎么了茵烈?”我有些...
    開(kāi)封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵百匆,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我呜投,道長(zhǎng)加匈,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任仑荐,我火速辦了婚禮雕拼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘粘招。我一直安慰自己啥寇,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布洒扎。 她就那樣靜靜地躺著辑甜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪袍冷。 梳的紋絲不亂的頭發(fā)上磷醋,一...
    開(kāi)封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音胡诗,去河邊找鬼邓线。 笑死,一個(gè)胖子當(dāng)著我的面吹牛乃戈,可吹牛的內(nèi)容都是我干的褂痰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼症虑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼缩歪!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起谍憔,我...
    開(kāi)封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤匪蝙,失蹤者是張志新(化名)和其女友劉穎主籍,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體逛球,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡千元,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了颤绕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片幸海。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖奥务,靈堂內(nèi)的尸體忽然破棺而出物独,到底是詐尸還是另有隱情,我是刑警寧澤氯葬,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布挡篓,位于F島的核電站,受9級(jí)特大地震影響帚称,放射性物質(zhì)發(fā)生泄漏官研。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一闯睹、第九天 我趴在偏房一處隱蔽的房頂上張望戏羽。 院中可真熱鬧,春花似錦瞻坝、人聲如沸蛛壳。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至捞挥,卻和暖如春浮创,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背砌函。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工斩披, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人讹俊。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓垦沉,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親仍劈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子厕倍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

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

  • git Git是一個(gè)開(kāi)源的分布式版本控制系統(tǒng),可以有效贩疙、高速的處理從很小到非常大的項(xiàng)目版本管理讹弯。Git 是 Lin...
    劉曉洋閱讀 1,683評(píng)論 0 7
  • 團(tuán)隊(duì)準(zhǔn)備從 SVN 切換到自建的 Git 開(kāi)發(fā)模型况既,選擇了 Gitlab CE 版本作為源碼管理平臺(tái)。本文描述的開(kāi)...
    kamidox閱讀 2,540評(píng)論 0 8
  • Git 作為一個(gè)源碼管理系統(tǒng)组民,不可避免涉及到多人協(xié)作棒仍。 java架構(gòu)師教程目錄 協(xié)作必須有一個(gè)規(guī)范的工作流程,讓大...
    念念念丿閱讀 265評(píng)論 0 1
  • 又是一個(gè)忙碌的周一臭胜,感覺(jué)自己活像一個(gè)陀螺莫其,從早忙到晚。今天讓我深有感觸的是下午的班主任工作室活動(dòng)耸三,班主任工作...
    coca_gao閱讀 196評(píng)論 0 3
  • 竹韻會(huì)員群絕句講座第一課導(dǎo)師:落日長(zhǎng)河乱陡,無(wú)語(yǔ)主講:忘機(jī)策劃: 蒹葭作業(yè)評(píng)審:一公升眼淚,相看不厭吕晌,劉春志, 未老...
    舞蝶兒閱讀 2,744評(píng)論 0 3