当前位置: 智能网 > 人工智能 > Jenkins + git submodule:解决代码安全性问题

Jenkins + git submodule:解决代码安全性问题

放大字体 缩小字体 发布日期:2021-03-18 18:03:43   浏览次数:103
核心提示:2021年03月18日关于Jenkins + git submodule:解决代码安全性问题的最新消息:一、一个真实的代码泄漏故事二、Jenkins 的基本使用三、git submodule 基本使用四、在 Jenkins 中使用 git module 来编译所有的模块五、总结一、一


一、一个真实的代码泄漏故事

二、Jenkins 的基本使用

三、git submodule 基本使用

四、在 Jenkins 中使用 git module 来编译所有的模块

五、总结

一、一个真实的小故事

事情发生在功能机的时代,我们项目组开发一款手机,软件开发成员大概有 20 人左右吧。结果在手机发布的一周后,另一家小厂就推出了软件界面、功能几乎完全一样的手机,除了开机界面。

因为那个时代,大家几乎都是使用 MTK、高通提供的解决方案,都是统一的菜单式功能,你没法拿出有力的证据来说明别人偷窃了你的代码。

后来内部查明,的确是有开发人员把代码泄漏出去了,于是后来所有的电脑上 USB 口全部被禁掉了。

这是我亲身经历的真实故事,当时每个人负责一个模块,比如:A 负责通话管理和电话簿,B 负责系统设置,C 负责短信和彩信。。。在编译的时候,是需要所有的代码放在一起,统一编译的,这也就意味着所有的软件人员都可以拿到全部源代码,这也就为代码泄漏埋下了隐患,出现了这次严重的事件,毕竟人为财死、鸟为食亡!

那么,是否有一些代码管控方式,来解决这个权限问题呢?

现在项目中,都强调要分层、分模块,这是从软件工程的角度来考虑的。如果再进一步, 把这些模块都划分为一个小的子系统,每个开发人员只负责自己的模块,并且只能有权限拉取自己的代码,这样他就没法获取到一个项目中所有模块的代码了。

只有项目整合人员(管理员),才有全部权限来拉取所有源代码来构建整个系统,这样的话,就可以对代码的安全问题有更好的掌控了。

要实现这样的代码管控,使用 git 工具中的 submodule 就可以完成,这篇文章,我们就来详细的讲解一下 git submodule 的使用。

这篇文章是工具型的,可能比较长,为了提供一站式服务,我会把相关的资源、步骤、遇到的错误信息等细节都记录下来,方便以后查阅。

不论如何,经过这篇文章,你可以学习、了解下面这几个方面的知识点:

Jenkins 的基本使用方法;git submodule 的基本指令用法;通过三个 demo 项目,一步一步操作实现代码的安全管控;利用 Jenkins + git submodule 来实现自动化编译;git subtree 与 submodule 的区别;

如果您需要文中提到的软件和代码资源,在文章末尾可以找到下载方式。

二、Jenkins 的基本使用

 1. Jenkins 是什么?

Jenkins是一个开源、由 Java 编写的持续集成工具,也就是说它帮助我们自动构建各类项目。Jenkins 运行在 Servlet 容器中(例如 Apache Tomcat),在 Ubuntu 系统中使用 apt-get 就可以一键安装。

Jenkins 有下面几个特点:

嵌入在 Web 服务器中,通过浏览器来操作,非常方便;可以执行基于Apache Ant和Apache Maven的项目,以及任意的Shell脚本和Windows批处理命令;可以通过各种手段触发构建。例如提交给版本控制系统时被触发,通过类似Cron的机制调度,在其他的构建已经完成时,还可以通过一个特定的URL进行请求;Jenkins强大的插件式,使得Jenkins可以集成很多软件,可能帮助我们持续集成我们的工程项目;给用户很大的权限和灵活性来自动发布、部署等等。

其他的有点我就不吹了,我觉得很好用,如果有机会,你也可以试一下。另外,我测试用的虚拟机是新安装的 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) 设置环境变量

执行指令: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

我建议你也用这样的环境变量,以后如果升级 JDK 版本,只需要修改 JAVA_HOME 就可以了。

(3) )重新加载环境变量

执行指令:source ~/.bashrc,此时环境变量就生效了。

验证一下: java -version,出现如下信息就说明 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存储库添加到系统中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,稍等一会,出现界面:

按照界面提示,从 /var/lib/jenkins/secrets/initialAdminPassword 文件中复制安全密码(需要 root 权限),填入到浏览器窗口中。

3  
 

[ 智能网搜索 ]  [ 打印本文 ]  [ 违规举报

猜你喜欢

 
推荐图文
ITECH直流电源在人工智能领域的应用 基于朴素贝叶斯自动过滤垃圾广告
2020年是人工智能相关业务发展的重要一年 我国人工智能市场规模、行业短板、发展前景一览
推荐智能网
点击排行

 
 
新能源网 | 锂电网 | 智能网 | 环保设备网 | 联系方式