Jenkins + git submodule:解決代碼安全性問題
一、一個真實的代碼泄漏故事
二、Jenkins 的基本使用
三、git submodule 基本使用
四、在 Jenkins 中使用 git module 來編譯所有的模塊
五、總結
一、一個真實的小故事
事情發(fā)生在功能機的時代,我們項目組開發(fā)一款手機,軟件開發(fā)成員大概有 20 人左右吧。結果在手機發(fā)布的一周后,另一家小廠就推出了軟件界面、功能幾乎完全一樣的手機,除了開機界面。
因為那個時代,大家?guī)缀醵际鞘褂?MTK、高通提供的解決方案,都是統(tǒng)一的菜單式功能,你沒法拿出有力的證據(jù)來說明別人偷竊了你的代碼。
后來內部查明,的確是有開發(fā)人員把代碼泄漏出去了,于是后來所有的電腦上 USB 口全部被禁掉了。
這是我親身經歷的真實故事,當時每個人負責一個模塊,比如:A 負責通話管理和電話簿,B 負責系統(tǒng)設置,C 負責短信和彩信。。。在編譯的時候,是需要所有的代碼放在一起,統(tǒng)一編譯的,這也就意味著所有的軟件人員都可以拿到全部源代碼,這也就為代碼泄漏埋下了隱患,出現(xiàn)了這次嚴重的事件,畢竟人為財死、鳥為食亡!
那么,是否有一些代碼管控方式,來解決這個權限問題呢?
現(xiàn)在項目中,都強調要分層、分模塊,這是從軟件工程的角度來考慮的。如果再進一步, 把這些模塊都劃分為一個小的子系統(tǒng),每個開發(fā)人員只負責自己的模塊,并且只能有權限拉取自己的代碼,這樣他就沒法獲取到一個項目中所有模塊的代碼了。
只有項目整合人員(管理員),才有全部權限來拉取所有源代碼來構建整個系統(tǒng),這樣的話,就可以對代碼的安全問題有更好的掌控了。
要實現(xiàn)這樣的代碼管控,使用 git 工具中的 submodule 就可以完成,這篇文章,我們就來詳細的講解一下 git submodule 的使用。
這篇文章是工具型的,可能比較長,為了提供一站式服務,我會把相關的資源、步驟、遇到的錯誤信息等細節(jié)都記錄下來,方便以后查閱。
不論如何,經過這篇文章,你可以學習、了解下面這幾個方面的知識點:
Jenkins 的基本使用方法;git submodule 的基本指令用法;通過三個 demo 項目,一步一步操作實現(xiàn)代碼的安全管控;利用 Jenkins + git submodule 來實現(xiàn)自動化編譯;git subtree 與 submodule 的區(qū)別;
如果您需要文中提到的軟件和代碼資源,在文章末尾可以找到下載方式。
二、Jenkins 的基本使用
1. Jenkins 是什么?
Jenkins是一個開源、由 Java 編寫的持續(xù)集成工具,也就是說它幫助我們自動構建各類項目。Jenkins 運行在 Servlet 容器中(例如 Apache Tomcat),在 Ubuntu 系統(tǒng)中使用 apt-get 就可以一鍵安裝。
Jenkins 有下面幾個特點:
嵌入在 Web 服務器中,通過瀏覽器來操作,非常方便;可以執(zhí)行基于Apache Ant和Apache Maven的項目,以及任意的Shell腳本和Windows批處理命令;可以通過各種手段觸發(fā)構建。例如提交給版本控制系統(tǒng)時被觸發(fā),通過類似Cron的機制調度,在其他的構建已經完成時,還可以通過一個特定的URL進行請求;Jenkins強大的插件式,使得Jenkins可以集成很多軟件,可能幫助我們持續(xù)集成我們的工程項目;給用戶很大的權限和靈活性來自動發(fā)布、部署等等。
其他的有點我就不吹了,我覺得很好用,如果有機會,你也可以試一下。另外,我測試用的虛擬機是新安裝的 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) 設置環(huán)境變量
執(zhí)行指令:vim ~/.bashrc,在末尾添加如下內容:
export JAVA_HOME=/opt/jdk1.8.0_221export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=./$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jart
我建議你也用這樣的環(huán)境變量,以后如果升級 JDK 版本,只需要修改 JAVA_HOME 就可以了。
(3) )重新加載環(huán)境變量
執(zhí)行指令:source ~/.bashrc,此時環(huán)境變量就生效了。
驗證一下: java -version,出現(xiàn)如下信息就說明 OK 了:
java version "1.8.0_221"Java(TM) SE Runtime Environment (build 1.8.0_221-b11)Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
3. 安裝 Jenkins
(1) 導入 Jenkins 存儲庫的 GPG 密鑰
sudo wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
(2) Jenkins存儲庫添加到系統(tǒng)中sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
(3) 使用 apt 安裝
sudo apt updatesudo apt install jenkins
Jenkins 服務將在安裝過程完成后自動啟動,可以通過指令 systemctl status jenkins 進行驗證。
systemctl status jenkins
(4) 配置端口
Jenkins 是嵌入在一個 tomcat 服務器中的,默認使用端口 8080,容易與其他服務沖突,因此需要修改一下。涉及到 2 個文件:
文件一:/etc/init.d/jenkins
第一行的 PATH 變量中,添加自己的 JDK 地址:
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/opt/jdk1.8.0_221/bin
文件二:/etc/default/jenkins
把 HTTP_PORT 的值修改為新的端口號,例如: HTTP_PORT=9090 。
(5) Jenkins 的啟動和停止指令
sudo service jenkins startsudo service jenkins stop
如果不幸遇到錯誤,可以反復使用這兩個指令來排除錯誤。
4. 在瀏覽器中配置 Jenkins
在瀏覽器中輸入: htpp://localhost:9090,稍等一會,出現(xiàn)界面:
按照界面提示,從 /var/lib/jenkins/secrets/initialAdminPassword 文件中復制安全密碼(需要 root 權限),填入到瀏覽器窗口中。
請輸入評論內容...
請輸入評論/評論長度6~500個字
最新活動更多
-
11月20日火熱報名中>> 2024 智能家居出海論壇
-
11月28日立即報名>>> 2024工程師系列—工業(yè)電子技術在線會議
-
12月19日立即報名>> 【線下會議】OFweek 2024(第九屆)物聯(lián)網產業(yè)大會
-
即日-12.26火熱報名中>> OFweek2024中國智造CIO在線峰會
-
即日-2025.8.1立即下載>> 《2024智能制造產業(yè)高端化、智能化、綠色化發(fā)展藍皮書》
-
精彩回顧立即查看>> 【在線會議】多物理場仿真助跑新能源汽車
推薦專題
- 1 腦機接口芯片,華為出了新專利!
- 2 今年諾獎對人工智能的重視,給我們的基礎教育提了個醒
- 3 銀行業(yè)AI大模型,從入局到求變
- 4 巨頭搶布局,VC狂撒錢,為了能讓「AI讀心」這些公司卷瘋了
- 5 阿斯麥ASML:“骨折級”洋相,又成AI第一殺手?
- 6 蘋果市值創(chuàng)新高,iPhone 16能否助力突破4萬億美元大關?
- 7 一場“載入史冊”的發(fā)布會,讓馬斯克失去了4700億
- 8 百度谷歌比較研究2024:中美“遠古AI龍頭”的現(xiàn)狀與趨勢
- 9 洞見AI風潮 第二屆vivo藍河操作系統(tǒng)創(chuàng)新賽開啟招募
- 10 地平線開啟配售,阿里百度各砸5000萬美金,市值最高超500億
- 高級軟件工程師 廣東省/深圳市
- 自動化高級工程師 廣東省/深圳市
- 光器件研發(fā)工程師 福建省/福州市
- 銷售總監(jiān)(光器件) 北京市/海淀區(qū)
- 激光器高級銷售經理 上海市/虹口區(qū)
- 光器件物理工程師 北京市/海淀區(qū)
- 激光研發(fā)工程師 北京市/昌平區(qū)
- 技術專家 廣東省/江門市
- 封裝工程師 北京市/海淀區(qū)
- 結構工程師 廣東省/深圳市