關(guān)于持續(xù)集成CI踩坑(二)

目標(biāo):為一個(gè)Django項(xiàng)目添加gitlab CI Runner 中間出的的問題以及別人的回答

一:問題:CI 究竟做了什么?

go語言為例,go語言是一個(gè)需要進(jìn)行編譯的語言,只有編譯之后,程序才能運(yùn)行,對(duì)吧?

編譯這個(gè)過程,如果在云端進(jìn)行,那么這個(gè)過程就很像是CI了

編譯好的bin(二進(jìn)制)文件,是在構(gòu)建服務(wù)器上的。把這個(gè)bin文件發(fā)布到正式服務(wù)器,這個(gè)過程,就是CD了
當(dāng)然,CI沒有這么簡單。CI過程中往往還包含測試、檢查代碼規(guī)范等等步驟。編譯只是其中的一個(gè)環(huán)節(jié)
如果用了docker,那么構(gòu)建好的程序,往往是一個(gè)容器

二:問題:CI需要構(gòu)建一個(gè)對(duì)立的環(huán)境嗎?

進(jìn)行構(gòu)建的時(shí)候,不是將所有依賴直接安裝到構(gòu)建服務(wù)器上,而是創(chuàng)建一個(gè)相對(duì)獨(dú)立的環(huán)境,在這個(gè)環(huán)境中執(zhí)行程序。對(duì)于go而言,docker;對(duì)于python而言,virtualenv;這個(gè)相對(duì)獨(dú)立的話環(huán)境可以有多個(gè)。

這個(gè)相對(duì)獨(dú)立的話環(huán)境可以有多個(gè):一個(gè)OS可以多個(gè)docker image;可以有多個(gè) virtualenv;

一般而言,每次構(gòu)建都會(huì)創(chuàng)造一個(gè)新的獨(dú)立環(huán)境。

三:問題:創(chuàng)建的獨(dú)立的環(huán)境在哪里呢?

在構(gòu)建服務(wù)器上

requirements.txt 或 Dockerfile 的作用是,保證環(huán)境能夠被完整的復(fù)制和構(gòu)建;

這已經(jīng)是devops的范疇了

例如gitlab 的CI Runner 就在安裝了Runner并且注冊(cè)了Runner的服務(wù)器上

四:問題:但是構(gòu)建服務(wù)器上我是安裝了虛擬環(huán)境 但是我運(yùn)行腳本找不到這個(gè)命令可能是有哪種情況呢?

你之所以問這個(gè)問題,是因?yàn)槟鉨ash相關(guān)的知識(shí)不夠完整。建議自己補(bǔ)充一下。

此外,workon這種用法,是virtualenv-wrapper里面的,不是標(biāo)準(zhǔn)的用法;可以用 source venv/bin/activate 這種形式激活python virtualenv 環(huán)境。

workon 這個(gè)程序(或腳本)在哪里?為什么能夠執(zhí)行?為什么不能夠執(zhí)行?
[https://www.cnblogs.com/Gaoqiking/p/10528509.html](https://www.cnblogs.com/Gaoqiking/p/10528509.html)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容