持续集成与持续交付---git

git

  • 1. git工具使用

    • 1.1 git简介

    • 1.2 git安装

  • 2. git结合github使用

  • 3. gitlab代码仓库

    • 3.1 gitlab安装

    • 3.2 常用命令

    • 3.3 使用

  • 4. jenkins持续集成

    • 4.1 简介

    • 4.2 安装

    • 4.3 访问

  • 5. 打通gitlab和jenkins

    • 5.3.1 手动出发jenkins

    • 5.3.2 通过gitlab自动触发jenkins

    • 5.1 创建用户

    • 5.2 更新仓库内容

    • 5.3 jenkins操作

1. git工具使用

1.1 git简介

  • Git特点:
    速度
    简单的设计
    对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
    完全分布式
    有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)

  • 自诞生于 2005 年以来,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标。 它的速度飞快,极其适合管理大项目,有着令人难以置信的非线性分支管理系统。

Git必看秘籍

  • Git 有三种状态:已提交(committed)、已修改(modified) 和 已暂存(staged)。
    1.已修改表示修改了文件,但还没保存到数据库中。
    2.已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
    3.已提交表示数据已经安全地保存在本地数据库中。

  • 这会让我们的 Git 项目拥有三个阶段:工作区、暂存区以及 Git 目录。

1.2 git安装

- 安装Git:
# yum install -y git

获取 Git 仓库通常有两种方式:
将尚未进行版本控制的本地目录转换为 Git 仓库。
从其它服务器克隆 一个已存在的 Git 仓库。比如: git clone 

- 初始化版本库:
$ mkdir demo
$ git init
Initialized empty Git repository in /home/git/demo/.git/
$ ls .git/
branches  config  description  HEAD  hooks  info  objects  refs

.git目录是git跟踪管理版本库的,没事别瞎溜达!

- 用户信息
$ git config --global user.name "wxh"
$ git config --global user.email yakexi007@westos.org

- 检查当前文件状态
$ git status
$ git status -s//简化输出

- 状态简览
$ git status -s
 M README
MM Rakefile
A  lib/git.rb
M  lib/simplegit.rb
?? LICENSE.txt
- 用户信息
$ git config --global user.name "wxh"
$ git config --global user.email yakexi007@westos.org

- 检查当前文件状态
$ git status
$ git status -s//简化输出

- 状态简览
$ git status -s
 M README
MM Rakefile
A  lib/git.rb
M  lib/simplegit.rb
?? LICENSE.txt

- 跟踪新文件
$ git add README

- 忽略文件
$ cat .gitignore
.*//忽略所有隐藏文件
/test//只忽略当前目录下的test文件
build///忽略任何目录下名为 build 的文件夹

- 查看已暂存和未暂存的修改
$ git diff

- 提交更新
$ git commit

- 跳过使用暂存区域
$ git commit -a -m 'added new benchmarks'

- 移除文件
$ git rm PROJECTS.md
$ git rm --cached README

- 重命名文件
$ git mv README.md README
其实,运行 git mv 就相当于运行了下面三条命令:
$ mv README.md README
$ git rm README.md
$ git add README

- 查看提交历史
$ git log
$ git log -p -2
$ git log --stat
$ git log --pretty=oneline

- 取消暂存的文件
$ git reset HEAD README.md

- 撤消对文件的修改
$ git checkout -- README.md

- 版本回退:
$ git reflog
$ git reset --hard efa267a

2. git结合github使用

- 远程仓库:注册github账号,并新建一个仓库:

- 推送本地仓库内容到github:
$ git remote add origin https://github.com/westos007/git.git//关联远程仓库
$ git push -u origin master//第一次推送需要加 -u参数

- 使用https方式推送每次需要输入用户名和密码,如果不想麻烦的话采用ssh方式:
 $ ssh-keygen -t rsa -b 4096 -C "yakexi007@westos.org"
生成本地密钥,并上传公钥到github:

- $ git remote -v   ##关联详情
originhttps://github.com/westos007/git.git (fetch)
originhttps://github.com/westos007/git.git (push)

- $ git remote rm origin

- $ git remote add origin git@github.com:westos007/git.git

- $ git remote -v
origingit@github.com:westos007/git.git (fetch)
origingit@github.com:westos007/git.git (push)

- $ git push origin master

- 克隆远程仓库:$ git clone git@github.com:westos007/gittest.git
[root@server1 ~]# ssh-keygen
[root@server1 ~]# cat .ssh/id_rsa.pub

3. gitlab代码仓库

3.1 gitlab安装

- 官网:https://about.gitlab.com/install/

- 软件下载(官方下载慢,推荐使用国内镜像站点)
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/

- 软件安装: (官方推荐至少4G内存)
# yum install -y curl policycoreutils-python openssh-server

# yum install -y gitlab-ce-12.8.5-ce.0.el7.x86_64.rpm

# vim /etc/gitlab/gitlab.rb
external_url 'http://172.25.13.1'//访问gitlab的地址

# gitlab-ctl  reconfigure//重载服务

- 登录gitlab:
http://172.25.13.1 //用户:root 第一次登录需要强制修改密码
[root@server1 ~]# ll gitlab-ce-13.2.2-ce.0.el7.x86_64.rpm
-rw-r--r-- 1 root root 757395226 Aug  1  2020 gitlab-ce-13.2.2-ce.0.el7.x86_64.rpm
[root@server1 ~]# yum install gitlab-ce-13.2.2-ce.0.el7.x86_64.rpm -y
[root@server1 ~]# vim /etc/gitlab/gitlab.rb
[root@server1 ~]# gitlab-ctl  reconfigure

3.2 常用命令

- gitlab-ctl start    # 启动所有 gitlab 组件
gitlab-ctl stop        # 停止所有 gitlab 组件
gitlab-ctl restart        # 重启所有 gitlab 组件
gitlab-ctl status        # 查看服务状态
gitlab-ctl reconfigure     # 重载服务
gitlab-ctl tail        # 查看日志

3.3 使用

4. jenkins持续集成

4.1 简介

  • Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。

  • Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。

  • CI(Continuous integration持续集成)持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。

  • CD(Continuous Delivery持续交付) 是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。

4.2 安装

软件下载
国内镜像站

#安装jenkins:
[root@server2 ~]# ll
total 312456
-rw-r--r-- 1 root root 175262413 May 31  2018 jdk-8u171-linux-x64.rpm
-rw-r--r-- 1 root root  73008148 Mar 12 02:03 jenkins-2.279-1.1.noarch.rpm
-rw-r--r-- 1 root root  71679711 Mar 12 01:52 jenkins-2.283-1.1.noarch.rpm
[root@server2 ~]# rpm -ivh jdk-8u171-linux-x64.rpm
[root@server2 ~]# yum install jenkins-2.283-1.1.noarch.rpm -y
[root@server2 ~]# systemctl start jenkins
[root@server2 ~]# systemctl status jenkins.service

4.3 访问

[root@server2 ~]# netstat -antlp    ##查看8080端口

#更新插件源:
# vim  /var/lib/jenkins/hudson.model.UpdateCenter.xml
<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
  </site>

[root@server2 ~]# cd  /var/lib/jenkins/
[root@server2 jenkins]# ls
config.xml                        logs              secret.key.not-so-secret
hudson.model.UpdateCenter.xml     nodeMonitors.xml  secrets
identity.key.enc                  nodes             updates
jenkins.telemetry.Correlator.xml  plugins           userContent
jobs                              secret.key        users
[root@server2 jenkins]# vim hudson.model.UpdateCenter.xml  ##可以写成清华源,这是为了下载update中文件中的插件,这里也可以提前将文件修改好,然后放到http的默认发布目录,这里的清华源改成http://172.25.13.2/default.json
<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
  </site>
[root@server2 jenkins]# cd /var/lib/jenkins/updates/   ##里面会有默认的default.json文件,下面是修改过程
[root@server2 updates]# sed -i.bak 's/https:\/\/updates.jenkins.io\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json
[root@server2 updates]# sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json   ##更新之后不要重启服务,不然会被覆盖
[root@server2 updates]# ls
default.json  default.json.bak
[root@server2 updates]# vim default.json  ##cp default.json /var/www/html/  一定要打开apache服务
[root@server2 ~]# systemctl restart jenkins.service   ##,如果使用的不是http,不能重启,不然文件会自动改成网络上模式。修改完不需要重启服务,改成http方式,重启也没事
[root@server2 ~]# cat /var/lib/jenkins/secrets/initialAdminPassword  ##获取密钥

#访问: http://172.25.13.2:8080
#使用初始密码登录:cat /var/lib/jenkins/secrets/initialAdminPassword
#安装默认插件即可,使用admin用户,登录后修改密码。

5. 打通gitlab和jenkins

5.1 创建用户

5.2 更新仓库内容

5.3 jenkins操作

5.3.1 手动出发jenkins

[root@server2 ~]# yum install git -y

5.3.2 通过gitlab自动触发jenkins

##这里必须添加gitlab插件
(0)

相关推荐

  • Jenkins+Ansible+GitLab持续交付平台搭建-第2篇

    这篇文章将继续给大家介绍Jenkins+Ansible+GitLab持续交付平台搭建. Jenkins+Ansible+GitLab持续交付平台搭建-第1篇 GitLab使用 1.创建一个新项目 ht ...

  • 持续集成之 Jenkins 如何通过 Gitlab 上的权限认证(三)

    一.背景 之前的项目是 public 的,如果我们在 gitlab上面把它修改成 private,然后再次打开配置,就可能会出现下面的错误,两种协议都会进行报错. 名称 IP 备注 Jenkins 1 ...

  • centos7安装rabbitmq3.7.9 | 易学教程

    感谢此兄: https://blog.51cto.com/huwei555/2341513?source=dra  (centos7 安装rabbitmq 3.7) 以root用户登录. cd /ho ...

  • 微软收购 GitHub 后对我们有什么影响?

    答:没有影响 背景知识: Git 是一款分布式代码版本控制系统,可以便捷地管理你的代码版本,高效地支持多人协作开发. Github 是基于 Git 而建立的代码托管平台.由于 Git 本身的开源属性, ...

  • 持续集成 Jenkins +Gitlab + SSH 自动发布 HTML 代码

    一.整体流程 二.Jenkins 配置 2.1.首先安装插件 Gitlab Hook Plugin GitLab Plugin Publish Over SSH 2.2.配置目标服务器 系统管理 -- ...

  • Jenkins+Ansible+GitLab持续交付平台搭建-第1篇

    这篇文章跟大家介绍Jenkins+Ansible+GitLab持续交付平台搭建. 过程大概这这样的:Jenkins首先从Gitlab去抓取我们写好的具体产品的playbook, 并使用virtuale ...

  • Linux学习14-CentOS安装gitlab环境

    前言 在学习Gitlab的环境搭建之前,首先需要了解Git,Gitlab,GitHub他们三者之间的关系 Git 它是一个源代码版本控制系统,可让您在本地跟踪更改并从远程资源推送或提取更改. GitH ...

  • 持续集成、持续交付和持续部署有什么区别?0基础学linux

    持续集成.持续交付和持续部署有什么区别?很多人在学习Linux运维技能时总是分不清楚这三个知识点.那么我们一起来看下吧. 1持续集成 持续集成,一种软件工程流程,将所有工程师对于软件的工作复本,每天集 ...

  • Selenium2+python自动化62-jenkins持续集成环境搭建

    一.环境准备 小编环境: 1.win10 64位 2.JDK 1.8.0_66 3.tomcat 9.0.0.M4 4.jenkins 2.0 二.安装JDK 1.安装JDK教程很多,这里就不讲了,可 ...

  • Jenkins持续集成

    时间 主题 8.13(周二)14:00 WebDriver鼠标键盘操作 8.14(周三)20:00 Jenkins持续集成 在传统的瀑布开发模型中,是所有人写好代码之后提交版本管理工具,然后统一进行合 ...

  • Docker版Jenkins持续集成

    随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变化的 ...

  • 持续集成之 Jenkins 的安装与配置(一)

    一.持续集成的概念 Jenkins 是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.Jenkins是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,功能包 ...

  • 持续集成之 Jenkins 配置基于角色的项目权限管理(五)

    一.前言 Jenkins是个好东西,开发运维测试的老江湖应该都听过,在此我就不再多做介绍jenkins是个什么东西了. jenkins自身的权限管理,无法实现用户指定显示视图或者视图中指定的jobs, ...

  • 使用Jenkins实现项目持续集成部署

    十多年前,敏捷开发人员开始拥抱并促进测试驱动的开发和持续集成(CI).利用这些技术,只要开发人员将源代码检查到源存储库中,我们就可以自动构建源代码,执行详尽的单元测试套件以确保应用程序正常运行.许多测 ...