最主要的功能是追踪文件的变更。将什么时候、什么人更改了文件的什么内容等信息忠实的记录下来。每一次的文件改变,文件的版本号将增加。还有一个最重要的功能是并行开发。软件开发往往是多人协同作业,版本控制可以有效地解决版本的同步以及不同开发者之间的开发通信问题,提高协同开发的效率。并行开发中最常见的不同版本软件的错误(Bug)修正问题也可以通过版本控制中分支与合并的方法有效地解决。
持续集成是一个将集成提前至开发周期的早期阶段的实践方式,让构建、测试和集成代码变更经常反复的发生。
通俗的说,持续集成意味着以下场景:
开发人员可以在不同的工作地方为同样产品编写代码,将其改动整合在源存储库。他们可以从各自编写的部分构建出组合的软件,并且按照他们期望的方式测试软件。持续集成要求开发人员能够自测代码。分别测试各自的代码保证他们的正常工作,这些测试通常被称为单元测试。
代码集成后,当所有的单元测试通过,开发人员得到一个绿色构建(表明集成代码能够成功的集中在一起,代码按照测试预期工作),但是他仍未生产做好准备,因为没有在类似生产的环境中工作。
持续集成的好处:软件一直在被编写和集成,时时刻刻都能融入到工作中。
持续交付意味着每次开发人员修改、整合和构建代码时,同时在类似于生产环境中自动测试这段代码。我们通常将这个在不同环境发布和测试的过程叫做部署流水线。
持续交付的好处:
在不同的环境下,开发人员编写的代码分别测试。只有当代码通过前一个测试环境才会进入到下一个部署流程的环境中。通过这种方式,开发人员可从每个环境中测试并得到新的反馈,如果有失败,他们可以在代码被用到生产环境之前更加容易地发现问题比能够及时修改。
分布式版本控制系统。svn是一种中心式版本控制系统。Git 理论上是没有中心的,每一个设备都有本地仓库,任何一个设备的本地仓库出问题对其他设备都 没有影响。而且,每一个设备都可以创建分支,
1)git命令多,功能多
2)git分支廉价,git分支切换迅速,创建成本低,git有本地分支,svn没有本地分支
3)git 保存历史版本的完整文件,svn保存文件差异。
提交代码的步骤:
1)git add 从工作区提交到暂存区
2)git commit 从暂存区提交到仓库区
3)git push 或 git svn dconnit 从本地仓库提交到远程仓库
定义
Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,是一个免费的源代码,可以处理任何类型的构建或持续集成。集成 Jenkins 可以用于一些测试和部署技术。Jenkins 是一种软件允许持续集成。
目的
1)持续、自动地构建/测试软件项目
2)监控软件开放流程,快速问题的定位及处理,提示开放效率。
特性
1)开源的java语言开发持续集成工具,支持CI/CD
2)易于安装部署配置:通过yum 安装,下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理。
3)消息通知及测试报告:集成RSS/E-mail 通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告。
4)分布式构建:支持Jenkins能够让多台计算机一起构建/测试。
5)文件识别:Jenkins 能够跟踪哪次构建生成jar,哪次构建使用那个版本的jar。
6)丰富的插件支持:支持扩展插件,开发适合自己团队的工具,如git,svn,maven,docker等。
配置
1)环境准备
yum install vim gcc -y
systemctl stop firewalld
setenforce 0
2)安装jdk1.8
yum install java-1.8.0-openjdk -y
3)安装jenkins
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
yum clean all & yum makecache
yum install jenkins -y
4)
systemctl start jenkins
systemctl status jenkins
5)查询admin密码
less /var/log/jenkins/jekins.log
b597bd35d54940c2a9b9e15f031559e5
6)访问http://192.168.76.156:8080 进行安装
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc-c++ perl-ExtUtils-MakeMaker wget autoconf -y
wget https://www.kernel.org/pub/software/scm/git/git-2.7.3.tar.gz
tar xf git-2.7.3.tar.gz
cd git-2.7.3
make configure
./configure --prefix=/usr/local/git
make profix=/usr/local/git
make install
echo "export PATH=$PATH:/usr/local/git/bin" > /etc/profile.d/git.sh
source /etc/profile.d/git.sh
git --version
wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
mv apache-maven-3.5.4-bin.tar.gz /usr/local/
tar -zxf apache-maven-3.5.4-bin.tar.gz -C .
cd apache-maven-3.5.4/
echo "export PATH=$PATH:/usr/local/apache-maven-3.5.4/bin" > /etc/profile.d/maven.sh
source /etc/profile.d/maven.sh
mvn –version 查看版本
9)svn安装
yum install subversion -y
mkdir /svnrepo
svnadmin create /svnrepo/project1 #创建一个新的 Subversion 项目
cd /svnrepo/project1/conf/
egrep -v "^#|^$" authz
egrep -v "^#|^$" passwd
egrep -v "^#|^$" svnserve.conf
启动项目1:svnserve -d -r /svnrepo/project1/
启动整个项目:svnserve -d -r /svnrepo/
10)jdk安装
tar -zxvf jdk-8u161-linux-x64.tar.gz -C /usr/local
ln -sv /usr/local/jdk1.8.0_161 /usr/local/jdk1.8
echo "export PATH=$PATH:/usr/local/jdk1.8/bin" >/etc/profile.d/java.sh
source /etc/profile.d/java.sh
java -version
1)密码破解
cd /var/lib/jenkins/users/admin_7057482831952469601/
vim config.xml
systemctl restart jenkins