VCS:java
集中式VCS: 有集中的版本管理服务器,具有文件版本管理和分支管理能力,集成效率有明显地提升,客户端必须和服务器相连。 分布式VCS:服务端和客户端都有完整的版本库,脱离服务端,客户端照样能够管理版本。查看历史和版本比较等操做,都不须要访问服务器,比集中式更能提升版本管理效率。
Git :linux
一个免费开源的分布式版本控制系统,linux系统发明者Linus Torvalds 为帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。开源,容易备份,支持离线操做。
Git的工做流程:git
先克隆远程资源到本地目录,本地仓库添加或修改文件,使用git add 添加修改的文件暂存到缓冲区 在添加以后,可使用git commit添加到当前的工做区,git push将本地的修改推送到远程的git服务器。
Git的环境搭建:程序员
https://git-scm.com/ 官网下载安装
Git基本操做:github
创建仓库:git init 添加文件到仓库: git add 123.txt 把文件提交到仓库 git commit -m "add a file" 仓库状态:git status 查看修改的差别:git diff 查看提交日志:git log 回退到上一版本:git reset --hard HEAD^ 删除文件:git rm test.txt 克隆到本地:git clone git@github.com:xxxx/test.git 本地的代码提交到服务器:git push origin master
新建项目web
master : 默认开发分支; origin : 默认远程版本库 #初始化操做 $ git config -global user.name <name> #设置提交者名字 $ git config -global user.email <email> #设置提交者邮箱 $ git config -global core.editor <editor> #设置默认文本编辑器 $ git config -global merge.tool <tool> #设置解决合并冲突时差别分析工具 $ git config -list #检查已有的配置信息 #建立新版本库 $ git clone <url> #克隆远程版本库 $ git init #初始化本地版本库 #修改和提交 $ git add . #添加全部改动过的文件 $ git add <file> #添加指定的文件 $ git mv <old> <new> #文件重命名 $ git rm <file> #删除文件 $ git rm -cached <file> #中止跟踪文件但不删除 $ git commit -m <file> #提交指定文件 $ git commit -m “commit message” #提交全部更新过的文件 $ git commit -amend #修改最后一次提交 $ git commit -C HEAD -a -amend #增补提交(不会产生新的提交历史纪录) #查看提交历史 $ git log #查看提交历史 $ git log -p <file> #查看指定文件的提交历史 $ git blame <file> #以列表方式查看指定文件的提交历史 $ gitk #查看当前分支历史纪录 $ gitk <branch> #查看某分支历史纪录 $ gitk --all #查看全部分支历史纪录 $ git branch -v #每一个分支最后的提交 $ git status #查看当前状态 $ git diff #查看变动内容 #撤消操做 $ git reset -hard HEAD #撤消工做目录中全部未提交文件的修改内容 $ git checkout HEAD <file1> <file2> #撤消指定的未提交文件的修改内容 $ git checkout HEAD. #撤消全部文件 $ git revert <commit> #撤消指定的提交 #分支与标签 $ git branch #显示全部本地分支 $ git checkout <branch/tagname> #切换到指定分支或标签 $ git branch <new-branch> #建立新分支 $ git branch -d <branch> #删除本地分支 $ git tag #列出全部本地标签 $ git tag <tagname> #基于最新提交建立标签 $ git tag -d <tagname> #删除标签 #合并与衍合 $ git merge <branch> #合并指定分支到当前分支 $ git rebase <branch> #衍合指定分支到当前分支 #远程操做 $ git remote -v #查看远程版本库信息 $ git remote show <remote> #查看指定远程版本库信息 $ git remote add <remote> <url> #添加远程版本库 $ git fetch <remote> #从远程库获取代码 $ git pull <remote> <branch> #下载代码及快速合并 $ git push <remote> <branch> #上传代码及快速合并 $ git push <remote> : <branch>/<tagname> #删除远程分支或标签 $ git push -tags #上传全部标签
GitLab由乌克兰程序员DmitriyZaporozhets和ValerySizov开发,使用Ruby语言写成。使用 MIT 许可证的基于网络的 Git 仓库管理工具开源项目,且具备 wiki 和 issue 跟踪功能,使用 Git 做为代码管理工具,并在此基础上搭建起来的 web 服务。
(1)GitLab分布式在线代码仓库托管软件,分为社区版和企业收费版,都须要企业服务器安装; (2)GitHub分布式在线代码托管仓库,我的版可直接在线免费试用,企业版本收费且须要服务器安装。
(1)Nginx 静态web服务器 (2)GitLab-workhorse 轻量级的反响代理服务器 (3)GitLab-shell 用于处理 Git 命令和修改 authorized keys 列表 (4)Logrorate 日志文件管理工具 (5)Postgresql 数据库 (6)Redis 缓存服务器
(1)开源免费,适合中小型公司将代码放置在公司内网服务器上 (2)差别化的版本管理,离线同步以及强大的分支管理 (3)便捷的GUI操做界面以及强大的帐户管理功能 (4)集成度很高,可以集成绝大多数的开发工具(如,jira等) (5)支持内置HA,保证在高并发下仍旧实现高可用性
1. 建立并克隆项目 2. 建立项目某 Feature 分支(对应的就是些小需求) 3. 编写代码并提交至该分支 4. 推送该项目分支至远程 GitLab 服务器 5. 进行代码检查并提交 Master 主分支合并申请 6. 项目领导审查代码并确认合并申请
通常的企业级的 GitLab 是部署在内网环境的,为了不在访问时报错的尴尬,得作一些前期的准备工做。
(1):关闭 firewalld 防火墙sql
# 临时关闭防火墙,也就是说下次进入系统后防火墙仍是会本身开启的 sudo systemctl stop firewalld # 永久关闭防火墙,开机不会自启 sudo systemctl disable firewalld # 防火墙开机自启动 sudo systemctl enable firewalld # 查看防火墙状态 sudo systemctl status firewalld
(2):关闭 SELINUXshell
# 我用的腾讯云ubuntu是没有安装这个子系统的,若是须要这个子系统的安装一下便可 sudo apt-get install selinux-utils # 临时关闭SELINUX setenforce 0 # 临时打开SELINUX setenforce 1 # 查看SELINUX的状态 getenforce # 开机关闭SELINUX,编辑/etc/selinux/config文件,将SELINUX的值设置为disabled。下次开机SELinux就不会启动了。 # setenforce 1也没法打开必修修改配置文件 # 重启系统 reboot
(3):安装ssh数据库
#若是使用云服务器的话,通常都会有ssh。若是没有的话,就须要咱们本身手动安装。 # 更新系统软件 sudo apt-get update # 安装ssh服务 sudo apt-get install openssh-server # 启动ssh服务 sudo /etc/init.d/ssh start # 重启ssh服务 sudo /etc/init.d/ssh restart # 关闭ssh服务 sudo /etc/init.d/ssh stop # 查看进程,看ssh服务是否启动 ps -e | grep sshd # 配置使得root用户能够远程登陆 sudo vi /etc/ssh/sshd_config # 在文件中添加 PermitRootLogin yes 保存
(4):安装Postfix邮件服务ubuntu
# 安装postfix服务 sudo apt-get install postfix # 启动postfix服务 sudo systemctl start postfix # 重启postfix服务 sudo systemctl restart postfix # 关闭postfix服务 sudo systemctl stop postfix # 开机自启动postfix服务 sudo systemctl enable postfix
(5):安装 ca-certificates
#生成证书使用的 sudo apt-get install ca-certificates
(6)安装GitLab
# 添加GitLab包服务并安装包 curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash # 安装社区版gitlab-ce sudo apt-get install gitlab-ce # 配置GitLab,将将external_url地址改成服务器的地址 sudo vim /etc/gitlab/gitlab.rb # 更新配置 # 更新配置报错(因为服务器的配置带不动o(╥﹏╥)o)https://idce.com/document/VnmQ sudo gitlab-ctl reconfigure # 启动、中止、查看状态、重启gitlab服务 sudo gitlab-ctl start/stop/status/restart
(7)GitLab配置证书
# 证书建立于配置加载 # Nginx SSL代理服务器配置 # 初始化GitLab相关服务并完成安装
# 为Ubuntu获取Ansible的最佳方法是将项目的PPA(我的包存档)添加到系统中 sudo apt-add-repository ppa:ansible/ansible # 刷新系统的包索引,以便它知道PPA中可用的包 sudo apt-get update sudo apt-get install ansible # 查看Ansible是否安装成功 ansible --version
是一种软件开发实践,主要做用是实现一个完整的自动构建过程,包括自动编译、分发、部署和测试。 强调开发人员提交新代码后,当即进行构建和单元测试,根据测试结果来判断新代码和原代码是否能正确的集成在一块儿,根据判断结果进行代码优化。
做为开发或者测试想要更好的构建本身的自动化环境,完成自动打包、自动部署、自动化测试,最大的优势就是减小了重复的工做,减小了人力成本和可能出现的错误. 在目前的互联网公司应用极为普遍。对于高频的代码集成,每次集成都经过版本的每日构建(包括编译,发布,部署,自动化测试)来验证,从而尽快地暴露软件缺陷。
版本控制系统:GitHub、GitLab 持续集成工具:Jenkins 自动化部署工具(替代咱们在那费劲的写脚本):Ansible、Saltstack、Chef
在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。完成单元测试后,能够把代码部署到链接数据库的 Staging环境,在环境中进行更多的测试,待代码没问题了能够手动部署到生产环境。 注:软件应用开发的经典模型对应的环境:Development开发环境、Integration集成环境、testing环境、QA验证、Staging预演环境、production环境.
一个软件开源项目,是基于Java的开发的一款持续集成工具,起源Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。
1. 主流的运维开发平台,兼容全部主流的开发环境 2. 插件可与海量业内主流开发工具实现集成 3. 配置单位与日志管理,使运维与开发人员能协同工做 4. 权限管理划分不一样角色 5. 强大的负载均衡功能,保证项目的可靠性
官方:文档
方式:一 前提:配置Java环境. 在官网点击下载[Generic Java package (.war)文件. 启动Jenkins命令,打开cmd至Jenkins安装目录下,运行命令 java -jar jenkins.war 若是改变默认端口,则指定端口例如端口号1080:java -jar jenkins.war --httpPort=1080。 方式二: 将下载的war包文件部署到 server 容器如Tomact,而后启动容器. war包复制到Tomcat的webapps目录下,配置JENKINS_HOME环境变量,变量值输入Jenkins的安装目录 在浏览器输入http://localhost:8080/jenkins 第一次须要解锁,输入密码. 配置时,安装插件:选择推荐的插件进行安装,下一步到建立用户,而后保存,在配置实例时,选暂时不要(之后配置).肯定以后开始使用. 国内可能没法顺利安装,需修改配置.
#Jenkins的依赖操做系统仍是以Ubuntu为例 # Jenkins是基于Java开发 # 安装配置Jenkins的依赖环境-Java环境,这里的话建议用Java8 # 过高的版本会出现不兼容的状况 sudo apt-get install openjdk-8-jdk # 查看Java是否安装成功 java # 安装配置Jenkins # 将 jenkins 存储库密钥添加到系统 wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add - # 将Debian包存储库地址附加到服务器的sources.list sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' # 更新本地软件源 sudo apt-get update # 安装Jenkins sudo apt-get install jenkins # Jenkins的相关操做 # 启动 sudo service jenkins start # 中止运行 sudo service jenkins stop # 重启服务 sudo service jenkins restart # 查看运行状态 sudo service jenkins status # 使用Jenkins # jenkins启动后的访问地址:http://ip_address_or_domain_name:8080 # 访问上面的地址会发现须要输入初始密码,查看获取初始密码 sudo cat /var/lib/jenkins/secrets/initialAdminPassword