VCS

Git概览

VCS:

集中式VCS: 有集中的版本管理服务器,具备文件版本管理和分支管理能力,集成效率有明显地提高,客户端必须和服务器相连。
分布式VCS:服务端和客户端都有完整的版本库,脱离服务端,客户端照样可以管理版本。查看历史和版本比较等操作,都不需要访问服务器,比集中式更能提高版本管理效率。

Git :

一个免费开源的分布式版本控制系统,linux系统发明者Linus Torvalds 为帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。开源,容易备份,支持离线操作。

Git的工作流程:

先克隆远程资源到本地目录,本地仓库添加或修改文件,使用git add 添加修改的文件暂存到缓冲区
在添加之后,可以使用git commit添加到当前的工作区,git push将本地的修改推送到远程的git服务器。

Git的环境搭建:

https://git-scm.com/ 官网下载安装

Git基本操作:

建立仓库: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

新建项目

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

什么是Gitlab?
GitLab由乌克兰程序员DmitriyZaporozhets和ValerySizov开发,使用Ruby语言写成。使用 MIT 许可证的基于网络的 Git 仓库管理工具开源项目,且具有 wiki 和 issue 跟踪功能,使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务。
GitLab与GitHub的区别:
(1)GitLab分布式在线代码仓库托管软件,分为社区版和企业收费版,都需要企业服务器安装;
(2)GitHub分布式在线代码托管仓库,个人版可直接在线免费试用,企业版本收费且需要服务器安装。
GitLab主要服务构成:
(1)Nginx 静态web服务器
(2)GitLab-workhorse 轻量级的反响代理服务器
(3)GitLab-shell 用于处理 Git 命令和修改 authorized keys 列表
(4)Logrorate 日志文件管理工具
(5)Postgresql 数据库
(6)Redis 缓存服务器
GitLab的优势及应用场景:
(1)开源免费,适合中小型公司将代码放置在公司内网服务器上
(2)差异化的版本管理,离线同步以及强大的分支管理
(3)便捷的GUI操作界面以及强大的账户管理功能
(4)集成度很高,能够集成绝大多数的开发工具(如,jira等)
(5)支持内置HA,保证在高并发下仍旧实现高可用性

部署

GitLab工作流程

1.  创建并克隆项目
2.  创建项目某 Feature 分支(对应的就是些小需求)
3.  编写代码并提交至该分支
4.  推送该项目分支至远程 GitLab 服务器
5.  进行代码检查并提交 Master 主分支合并申请
6.  项目领导审查代码并确认合并申请
GitLab安装配置

 一般的企业级的 GitLab 是部署在内网环境的,为了避免在访问时报错的尴尬,得做一些前期的准备工作。
(1):关闭 firewalld 防火墙

# 临时关闭防火墙,也就是说下次进入系统后防火墙还是会自己开启的
sudo systemctl stop firewalld
# 永久关闭防火墙,开机不会自启
sudo systemctl disable firewalld
# 防火墙开机自启动
sudo systemctl enable firewalld
# 查看防火墙状态
sudo systemctl status firewalld

(2):关闭 SELINUX

# 我用的腾讯云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邮件服务

# 安装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相关服务并完成安装

Ansible部署工具

# 为Ubuntu获取Ansible的最佳方法是将项目的PPA(个人包存档)添加到系统中
sudo apt-add-repository ppa:ansible/ansible

# 刷新系统的包索引,以便它知道PPA中可用的包
sudo apt-get update
sudo apt-get install ansible

# 查看Ansible是否安装成功
ansible --version

Jenkins

概览

持续集成/CI:
是一种软件开发实践,主要作用是实现一个完整的自动构建过程,包括自动编译、分发、部署和测试。
强调开发人员提交新代码后,立即进行构建和单元测试,根据测试结果来判断新代码和原代码是否能正确的集成在一起,根据判断结果进行代码优化。
持续集成的意义:
作为开发或者测试想要更好的构建自己的自动化环境,完成自动打包、自动部署、自动化测试,最大的优点就是减少了重复的工作,减少了人力成本和可能出现的错误.
在目前的互联网公司应用极为广泛。对于高频的代码集成,每次集成都通过版本的每日构建(包括编译,发布,部署,自动化测试)来验证,从而尽快地暴露软件缺陷。
CI三大组件=持续交付:
版本控制系统:GitHub、GitLab
持续集成工具:Jenkins
自动化部署工具(替代我们在那费劲的写脚本):Ansible、Saltstack、Chef
什么是持续交付/CD
在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。完成单元测试后,可以把代码部署到连接数据库的 Staging环境,在环境中进行更多的测试,待代码没问题了可以手动部署到生产环境。
注:软件应用开发的经典模型对应的环境:Development开发环境、Integration集成环境、testing环境、QA验证、Staging预演环境、production环境.
什么是Jenkins
一个软件开源项目,是基于Java的开发的一款持续集成工具,起源Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。
Jenkins特点
1.  主流的运维开发平台,兼容所有主流的开发环境
2.  插件可与海量业内主流开发工具实现集成
3.  配置单位与日志管理,使运维与开发人员能协同工作
4.  权限管理划分不同角色
5.  强大的负载均衡功能,保证项目的可靠性
Jenkins的配置

官方:文档

在Win10配置
方式:一
前提:配置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

Jenkins Job模块


Jenkins插件

2.png


SoapEye
89 声望6 粉丝

历史就是历史,它是客观存在的。


« 上一篇
后端_Linux
下一篇 »
后端_Node.js