【持续集成】GIT+jenkins+snoar——GIT

一.GIT基础

1.1 git简介

  • linux用C语言编写
  • 2005年诞生
  • 分布式管理系统
  • 速度快、适合大规模、跨地区多人协同开发

1.2 本地管理、集中式、分布式

1.3 git安装

1 #CentOS上安装
2 [[email protected] ~]# yum -y install git
3 #Ubuntu上安装
4 [[email protected] ~]# apt-get install git


注:生产环境中,不建议这么安装,yum装的git版本是1.8,推荐使用2.7版本



编译安装:

 1 #安装依赖包
 2 [[email protected] ~]# yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
 3 #下载安装包
 4 [[email protected] ~]# wget https://github.com/git/git/archive/v2.7.4.zip
 5 #解压
 6 [[email protected] ~]# unzip git-2.7.4/
 7 #进入git目录
 8 [[email protected] ~]# cd git-2.7.4/
 9 #编译
10 [[email protected] git-2.7.4]# make prefix=/usr/local/git all
11 #安装
12 [[email protected] git-2.7.4]# make prefix=/usr/local/git install
13 #删除原有git命令
14 [[email protected] git-2.7.4]# rm -rf /usr/bin/git
15 #软连接编译安装git命令
16 [[email protected] git-2.7.4]# ln -s /usr/local/git/bin/git /usr/bin/git
17 #查看git版本
18 [[email protected] git-2.7.4]# git --version
19 git version 2.7.4

1.4 git初始化

 1 #创建gittest目录
 2 [[email protected] ~]# mkdir gittest
 3 #进入目录
 4 [[email protected] ~]# cd gittest
 5 #初始化git仓库
 6 [[email protected]node1 gittest]# git init
 7 Initialized empty Git repository in /root/gittest/.git/
 8 #配置基础用户信息
 9 [[email protected] gittest]# git config --global user.name "goodcook"
10 #配置基础用户邮件信息
11 [[email protected] gittest]# git config --global user.email "[email protected]"

1.5 查看基本信息

1 #查看基本信息
2 [[email protected] gittest]# git config --list
3 user.name=goodcook
4 user.email=[email protected]
5 core.repositoryformatversion=0
6 core.filemode=true
7 core.bare=false
8 core.logallrefupdates=true

1.6 git区域

  • 远程仓库
  • 本地仓库
  • 暂存区域
  • 工作目录

1.7 四种状态

  git如何进行版本管理的呢?它对管理的文件,会打上一个标识,这个标识,就分为四种状态。

  • untracked(未被追踪的文件)

   第一次放到库中的文件,文件与库没有任何的关联,还没有纳入系统管理版本的序列中。使用 git add将该类文件推送到暂存区,状态就变成了staged。

  • unmodified(未被修改的文件)

  未被修改的文件,增加新代码(修改)之后,会重新拉倒工作目录中。

  • modified(修改后的文件)

  修改之后,将该文件git add加入到暂存区,再通过commit放入本地库中。

  • staged(暂存区的文件)

  使用git commit将该类文件提交,变成unmodified(未被修改的文件),从暂存区,将文件放到本地仓库中。

流程:

1.新文件,放到git目录中(untracked 未被追踪的文件)

2.使用git add将未被追踪的文件推送到暂存区(staged 暂存区文件)

3.使用git commit将暂存区文件提交到本地仓库中(unmodified 未被修改的文件)

4.此时如果修改文件(modified 修改的文件),然后再用git add将修改后的文件加入到暂存区(staged)

5.然后再提交git commit到本地仓库变成(unmodified 未被修改的文件)...周而复始

1.8 git常用命令

git add            加入暂存区(索引区)

git status           查看状态

git status -s         状态概览

git diff            尚未暂存的文件

git diff --staged       暂存区文件

git commit           提交更新

git reset           回滚

git rm             从版本库中移除

git rm --cached         从暂存区中移除

git mv             相当于mv 、git rm 、git add三个命令

 1 #创建一个文件
 2 [[email protected] gittest]# touch index.html
 3 #编辑index.html
 4 [[email protected]node1 gittest]# vim index.html
 5 <h1> welcome to my index </h1>
 6 #使用git status查看该文件状态
 7 [[email protected]node1 gittest]# git status  On branch master

  Initial commit

  Untracked files:  #此时状态为未被追踪的文件    (use "git add <file>..." to include in what will be committed)

        index.html

  nothing added to commit but untracked files present (use "git add" to track)
 8 #加入代码库
 9 [[email protected]node1 gittest]# git add index.html
10 #再次查看状态
11 [[email protected]node1 gittest]# git status  On branch master

  Initial commit

  Changes to be committed:    (use "git rm --cached <file>..." to unstage)

        new file:   index.html
12 #提交
13 [[email protected] gittest]# git commit -m "first commit"
14 [master (root-commit) 6f3aca3] first commit
15  1 file changed, 1 insertion(+)
16  create mode 100644 index.html
17 #再次查看状态
18 [[email protected] gittest]# git status  On branch master  nothing to commit, working directory clean #此时的状态是工作目录中没有还没有提交的文件了

二.分支管理

2.1 创建一个分支

 1 #创建一个分支
 2 [[email protected]node1 gittest]# git branch about
 3 #查看状态
 4 [[email protected]node1 gittest]# git status
 5 On branch master   #还是在master上
 6 #切换分支
 7 [[email protected]node1 gittest]# git checkout about
 8 Switched to branch ‘about‘
 9 #查看状态
10 [[email protected]node1 gittest]# git status
11 On branch about

2.2 分支命令

git branch            查看分支

git branch -v           详细查看

git branch --merged        查看哪些分支已经被融合

git branch --no-merged      查看哪些分支还没有被融合

git branch -d           删除分支

git checkout           切换分支

git merge             融合分支(将分支代码融合到主干)

git log              查看提交事件

git stash             暂存区

git tag              打标签

三.远程仓库

3.1 将github上的代码拉到本地

 1 #拉代码
 2 [[email protected] ~]# git clone https://github.com/zzgxgit/saltstack-apache.git
 3 Cloning into ‘saltstack-apache‘...
 4 remote: Counting objects: 20, done.
 5 remote: Total 20 (delta 0), reused 0 (delta 0), pack-reused 20
 6 Unpacking objects: 100% (20/20), done.
 7 Checking connectivity... done.
 8 #进入库目录
 9 [[email protected] ~]# cd saltstack-apache/
10 #查看状态
11 [[email protected] saltstack-apache]# git status
12 On branch master
13 Your branch is up-to-date with ‘origin/master‘.
14 nothing to commit, working directory clean

3.2 修改文件并push

 1 #查看目录内容
 2 [[email protected] saltstack-apache]# ll
 3 total 4
 4 drwxr-xr-x 3 root root 18 May  4 17:57 modules
 5 -rw-r--r-- 1 root root 18 May  4 17:57 README.md
 6 #编辑README.md
 7 [[email protected] saltstack-apache]# vim README.m
 8 #增加一行内容
 9 test git push
10 #添加到staged
11 [[email protected] saltstack-apache]# git add .
12 #提交
13 [[email protected] saltstack-apache]# git commit -m "edit README.md"
14 [master 6370f89] edit README.md
15  1 file changed, 1 insertion(+)
16 #远程库
17 [[email protected] saltstack-apache]# git remote
18 origin
19 #查看详细信息
20 [[email protected] saltstack-apache]# git remote -v
21 origin  https://github.com/zzgxgit/saltstack-apache.git (fetch)
22 origin  https://github.com/zzgxgit/saltstack-apache.git (push)
23 #推送到远程库
24 [[email protected] saltstack-apache]# git push origin master
25 #输入账号
26 Username for ‘https://github.com‘: zzgxgit
27 #输入密码
28 Password for ‘https://[email protected]‘:
29 Counting objects: 3, done.
30 Compressing objects: 100% (2/2), done.
31 Writing objects: 100% (3/3), 309 bytes | 0 bytes/s, done.
32 Total 3 (delta 0), reused 0 (delta 0)
33 To https://github.com/zzgxgit/saltstack-apache.git
34    a6443a5..6370f89  master -> master

3.3 给本地库添加远程信息

 1 #进入之前初始化的本地库
 2 [[email protected] ~]# cd gittest/
 3 #查看远程信息(没有任何信息)
 4 [[email protected]node1 gittest]# git remote
 5 [[email protected] gittest]# git remote -v
 6 #添加远程库信息
 7 [[email protected] gittest]# git remote add origin http://192.168.100.1/goodcook.git
 8 #查看信息
 9 [[email protected]node1 gittest]# git remote
10 origin
11 [[email protected] gittest]# git remote -v
12 origin  http://192.168.100.1/goodcook.git (fetch)
13 origin  http://192.168.100.1/goodcook.git (push)
14 #可以添加多个远程库
15 [[email protected] gittest]# git remote add gitlab http://192.168.100.2/goodcook.git
16 #查看信息
17 [[email protected]node1 gittest]# git remote
18 gitlab
19 origin
20 [[email protected] gittest]# git remote -v
21 gitlab  http://192.168.100.2/goodcook.git (fetch)
22 gitlab  http://192.168.100.2/goodcook.git (push)
23 origin  http://192.168.100.1/goodcook.git (fetch)
24 origin  http://192.168.100.1/goodcook.git (push)

3.4 手动打标签

 1 #查看标签(为空)
 2 [[email protected]node1 gittest]# git tag
 3 #查看一下提交信息
 4 [[email protected]node1 gittest]# git log
 5 commit 6f3aca32bfe6caeb69be9c8b4caa856eedd495ed
 6 Author: goodcook <[email protected]>
 7 Date:   Thu May 4 14:22:51 2017 +0800
 8
 9     first commit
10 #打标签(添加一个1.0的版本信息)
11 [[email protected] gittest]# git tag -a v1.0 -m "version"
12 #查看标签
13 [[email protected]node1 gittest]# git tag
14 v1.0

四. gitlab安装配置

4.1 安装gitlalb

 1 #安装依赖
 2 [[email protected] ~]# yum -y install curl policycoreutils openssh-server openssh-clients
 3 #sshd开机自启
 4 [[email protected] ~]# systemctl enable sshd
 5 #启动sshd
 6 [[email protected] ~]# systemctl start sshd
 7 #安装postfix
 8 [[email protected] ~]# yum install postfix
 9 #设置开机自启
10 [[email protected] ~]# systemctl enable postfix
11 #启动
12 [[email protected] ~]# systemctl start postfix
13 #安装gitlab8.9.5
14 [[email protected] ~]# rpm -ivh gitlab-ce-8.9.5-ce.0.el7.x86_64.rpm  Preparing...                          ################################# [100%]  Updating / installing...     1:gitlab-ce-8.9.5-ce.0.el7         ################################# [100%]

4.2 配置文件

1 #编辑配置文件
2 [[email protected] ~]# vim /etc/gitlab/gitlab.rb
3 #修改URL(没有域名就用IP)
4 external_url ‘http://192.168.56.11‘
5 #自动化配置
6 [[email protected] ~]# gitlab-ctl reconfigure

4.3 访问gitlab

打开浏览器,输入刚才配置的URL:192.168.56.11

设置一个密码,不能太短:ABCD1234

【登录】

用户名:root

密码:ABCD1234

至此,gitlab就安装完成了。

4.4 gitlab常用命令

gitlab-ctl status            查看各组件状态

gitlab-ctl start             开启服务

gitlab-ctl stop             停止服务

gitlab-ctl restart            重启服务

gitlab-ctl tail <service>        查看某一组件日志  例:gitlab-ctl tail nginx

4.5 gitlab组件介绍

nginx                  静态web服务器

gitlab-shell               用于处理git命令和修改authorized keys列表

logrotate                日志文件管理工具

gitlab-workhorse             轻量级的反向代理服务器

postgresql                数据库

redis                  缓存

sidekiq                 用于在后台执行队列任务(异步执行)

unicorn                 gitlab rails应用是托管在这个服务器上面的

4.6 gitlab常用目录介绍

/var/opt/gitlab/git-data/repositories/root/      库默认存储目录

/opt/gitlab/                      应用代码和相应的依赖程序

/var/opt/gitlab/                    使用gitlab-ctl reconfigure命令编译后的应用数据和配置文件,不需要人为修改配置

/etc/gitlab/                      配置文件目录

/var/log/gitlab/                    存放各个组件的日志目录

/var/opt/gitlab/backups/                备份文件生成的目录

五.gitlab管理操作

5.1创建工程

单击右上角的扳手图标

单击new group 创建一个组

创建组

创建用户

按要求创建用户按照此法 创建 dev1和dev2用户

单机进去,查看用户

回到组的页面

给 pm 用户授权为 master

进入项目页面

创建一个java1的项目

设置权限

配置ssh-key

1 #创建一个秘钥对
2 [[email protected] .ssh]# ssh-keygen
3 #查看公钥并拷贝
4 [[email protected] .ssh]# cat id_rsa.pub

将公钥加入后点击Add key

六. gitlab备份和恢复

6.1 配置文件

 1 #编辑配置文件
 2 [[email protected] ~]# vim /etc/gitlab/gitlab.rb
 3 #备份目录
 4 201 gitlab_rails[‘backup_path‘] = "/data/backups/gitlab"
 5 #备份保留7天
 6 204 gitlab_rails[‘backup_keep_time‘] = 604800
 7 #创建备份目录
 8 [[email protected] ~]# mkdir -p /data/backups/gitlab
 9 #改完配置重新自动化生成
10 [[email protected] ~]# gitlab-ctl reconfigure
11 #重启服务
12 [[email protected] ~]# gitlab-ctl restart
13 #授权
14 [[email protected] ~]# chown -R git:git /data/backups/gitlab/
15 #添加定时任务
16 [[email protected] ~]# crontab -e
17 #每天2点全备一次
18 0 2 * * * /usr/bin/gitlab-rake gitlab:backup:create &>/dev/null

6.2 备份测试

1 #手动执行一次
2 [[email protected] ~]# gitlab-rake gitlab:backup:create
3 #查看备份
4 [[email protected] ~]# ll /data/backups/gitlab/  total 40  -rw------- 1 git git 40960 May  5 03:37 1493926679_gitlab_backup.tar

6.3 恢复数据

6.3.1删除项目

6.3.2 恢复操作

 1 #要停两个服务
 2 [[email protected] ~]# gitlab-ctl stop unicorn
 3 ok: down: unicorn: 0s, normally up
 4 [[email protected] ~]# gitlab-ctl stop sidekiq
 5 ok: down: sidekiq: 1s, normally up
 6 #恢复备份
 7 [[email protected] ~]# gitlab-rake gitlab:backup:restore BACKUP=1493926679
 8 #备份完,启动服务
 9 [[email protected] ~]# gitlab-ctl start unicorn
10 ok: run: unicorn: (pid 84833) 1s
11 [[email protected] ~]# gitlab-ctl start sidekiq
12 ok: run: sidekiq: (pid 84865) 0s

打开页面:



注:恢复操作中的 “BACKUP=1493926679”  是备份时候生成的备份文件名前面的时间戳。


七. gitlab邮件配置

7.1 配置文件

 1 #编辑配置文件
 2 [[email protected] ~]# vim /etc/gitlab/gitlab.rb
 3 21 gitlab_rails[‘time_zone‘] = ‘Asia/Shanghai‘
 4 22 gitlab_rails[‘gitlab_email_enabled‘] = true
 5 23 gitlab_rails[‘gitlab_email_from‘] = ‘[email protected]‘
 6 24 gitlab_rails[‘gitlab_email_display_name‘] = ‘gitlab‘
 7 306 gitlab_rails[‘smtp_enable‘] = true
 8 307 gitlab_rails[‘smtp_address‘] = "smtp.126.com"
 9 308 gitlab_rails[‘smtp_port‘] = 25
10 309 gitlab_rails[‘smtp_user_name‘] = "goodcook"
11 310 gitlab_rails[‘smtp_password‘] = "your_password"
12 311 gitlab_rails[‘smtp_domain‘] = "126.com"
13 312 gitlab_rails[‘smtp_authentication‘] = "login"

【开源是一种精神,分享是一种美德】

— By GoodCook

— 笔者QQ:253097001

— 欢迎大家随时来交流

—原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。

时间: 2024-08-19 02:55:19

【持续集成】GIT+jenkins+snoar——GIT的相关文章

老李分享:持续集成学好jenkins之Git和Maven配置

老李分享:持续集成学好jenkins之Git和Maven配置 Jenkins专用术语,请参考下面连接: https://wiki.jenkins-ci.org/display/JENKINS/Terminology 1.通过Jenkins web页面添加Git plugin Manage Jenkins->Manage Plugins->Available中选择Git Plugin安装, 注意要填写user name和 email地址,否则日后会碰到git tag的错误 2.Jenkins服务

老李分享:持续集成学好jenkins之Git和Maven配置 2

8.检查代码更新并编译 可以通过Poll SCM来设置定时检查编译功能 比如*/5 * * * * 就是每隔5分钟检查一次,如果git仓库中有更新,则执行build操作. 9.使用Maven私服加快下载速度 参阅:http://blog.csdn.net/sheismylife/article/details/7209722 Jenkins的.m2目录路径在:/var/lib/jenkins/.m2/ 先清空所有jar包,后创建settings.xml文件,编辑内容如下: <settings>

自动化测试项目持续集成到jenkins

之前项目将接口自动化项目持续集成到了jenkins上,这次专门写篇文章记录下. 持续集成时,主要分为以下几个步骤: 1. 服务器安装jdk:2.maven的安装及配置:3.git的安装及配置:4.jenkins的安装及运行:5.将接口自动化项目持续集成到jenkins:6.在线测试报告的产出 一.jdk安装 这个网上有很多教程,本文不再赘述. 二.maven的安装和配置 1. 下载压缩包,使用1.1或者1.2都可以: 1.1 通过自己的电脑将压缩包上传至服务器: a. 进入maven官网下载 b

老李分享:持续集成学好jenkins之内置命令

老李分享:持续集成学好jenkins之内置命令 Jenkins命令调用方式:调用Jenkins命令设置job的描述信息. $JAVA_BIN-jar "$JENKINS_CLI_JAR" -s "$JENKINS_URL"  set-build-description "${JOB_NAME}""${BUILD_NUMBER}" "$tag_name" --username "$SVN_USERN

使用Gradle构建构建一个Java Web工程及持续集成环境Jenkins配置

安装Eclipse插件——Buildship 什么是Buildship? Buildship能方便我们通过Eclipse IDE创建和导入Gradle工程,同时还能执行Gradle任务. Eclipse上安装Buildship 建议直接去Eclipse market处下载,简单方便,如下图: Buildship的更多信息 请参考以下链接,有教程,比较简单, 主要内容: 如何导入Gradle工程, 如何创建Gradle工程, 如何执行Gradle任务, 等... http://projects.e

研发协同平台持续集成之Jenkins实践

导读 研发协同平台有两个核心目标,一是提高研发效率 ,二是提高研发质量,要实现这两个核心目标,实现持续集成是关键之一. 什么是持续集成 在<持续集成>一书中,对持续集成的定义如下:持续集成是一种软件开发实践.在持续集成中,团队成员频繁集成他们的工作成果,一般每人每天至少集成一次,也可以多次.每次集成会经过自动构建(包括自动测试)的检验,以尽快发现集成错误.自从在团队中引入这样的实践之后,Martin Fowler发现这种方法可以显著减少集成引起的问题,并可以加快团队合作软件开发的速度. 1.集

【持续集成】GIT+jenkins+snoar——jenkins发布php、maven项目

一.持续集成 1.1 什么是持续集成? continuous integration (CI),持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员,每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过自动化构建(包括编译.发布.自动化测试)来验证,从而尽快的发现集成错误.许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件. 1.2 持续集成最佳实践 维护一个单一的代码库 使构建自动化 执行测试是构建的一部分 集成日志及历史记录 使用统

持续集成工具Jenkins学习总结

概述 持续集成(Continuous Integration,简称CI)是一种软件开发实践,团队开发人员每次都通过自动化的构建(编译.发布.自动化测试)来验证,从而尽早的发现集成错误.持续集成最大的优点是避免了传统模式在集成阶段的除虫会议(bug meeting),其要素包括统一的代码库.自动构建.自动测试.自动部署.频繁提交修改过的代码等. Jenkins的前身是Hudson,是基于Java开发的一种持续集成工具,是一个开源软件项目,主要用于: 持续.自动地构建/测试软件项目,如CruiseC

建立可持续集成系统(Jenkins)

在软件工程实践中,需要将开发完成的最终产品交付给用户(或发布给测试部门),就需要我们将源代码编译为可执行文件.将各个分别开发的模块集合为一个完整的系统,这个过程成为系统集成,我们用一个系统来描述这个集成过程. 集成系统:输入指定的软件资产,输出根据软件资产生产出的软件产品以及其他副产品的系统. 对于一般系统而言(以VC开发为例),软件的生产过程包括:源码获取,源码检查,源码编译,测试,部署.经历以上几个过程之后得到一个可用的系统. 故一般而言集成系统通常会按照顺序经历以下几个模块组成: 1. 版