Git-Jenkins-代码的上线
第一章:自动化上线代码基本介绍
1.软件开发生命周期
老板的创意---产品经理---立项---开发团队---测试团队---运维上线
产品经理---加需求---开发团队---测试----更新代码,上线
2.什么是环境?
开发环境 win gbk, mac utf8 ,php,python 开发的个人电脑
测试环境 代码集中起来,在测试环境上运行一次lnmp,测试mysql,测试 redis, ltnm
预发布环境 连接线上数据库,专门的测试域名
生产环境 线上环境 shop lnmp || bbs lnmp
公共基础设施: 监控zabbix + gitlab + Jenkins + ntp + yum + jumpserver + openvpn
3.什么是代码部署?

4.代码部署的方式?
手工: 运维需要全程陪同,重复的人工操作,容易出错
自动:
5.什么是持续集成Continuous Integration
经常频繁的代码合并, 持续集成跟运维有关的工作,提供一个代码仓库,版本控制系统(备份,迁移)
6.什么是持续交付?
开发团队---测试团队---运维上线
开发团对,单元测试,---测试用力---代码质量检测--- 测试, sonarqube
7.什么是持续部署Continuous deployment?
频繁的代码上线,持续部署
第二章:持续集成
1.什么是版本控制系统?
2.版本控制系统解决了什么问题?
快速回滚到指定的版本,只保留变化的内容
3.常见版本控制系统svn与git区别?
svn: 中心化的代码仓库
git: 分布式的代码仓库
4.git的诞生
git由林纳斯.托瓦兹
1991
2002年 csv
2005年 花了两周时间 git
2020年
5.安装和配置git
#git的安装
yum install git -y
git --version
git config --global user.name "oldqiang"
git config --global user.email "296917342@qq.com"
git config --global color.ui "true"
6.创建版本库
git init
7.git仓库添加文件

git add . #添加文件到缓冲区
git commit -m 'add three file'
8.git修改文件名称并提交
git mv file1 file4
git commit -m 'change file name'
#删除文件
git rm 3.txt #删除工作目录和缓冲区文件
git commit -m 'rm 3.txt'
9.git的文件对比
git diff file3 #本地目录和缓冲区文件对比
git diff --cached file3 #缓冲区文件和仓库文件对比
10.实现回退功能
查看当前的历史版本
git log --oneline
git reset --hard 942bdf3
查看所有的历史版本
git reflog --oneline
git reset --hard 942bdf3
撤销修改的文件
提交到缓冲的区文件撤回
git reset HEAD file3(文件名)
git checkout -- file3(文件名)
未add到缓冲区的文件撤回
git checkout -- file3(文件名)
11.git分支管理
#增加一个新分支
git branch dev01
#切换分支
git checkout dev01
#在开发分支上合并主分支
git merge master -m '注释'
#切回主分支
git checkout master
#在主分支合并开发
git merge dev01 -m '注释'
12.git标签管理
标签给commit起一个容易记的别名
#给当前版本打标签
git tag v1.2
#删除标签
git tag -d v1.2
#给任意版本打标签
git tag -a v1.0 -m '优化了1111 修复bug' a119962
13.git远程仓库gitee
14.gitlab安装
私有代码仓库
#上传gitlab-ce-11.9.11-ce.0.el7.x86_64.rpm到当前目录
echo "192.168.37.202 mirrors.aliyun.com" >>/etc/hosts
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum localinstall gitlab-ce-11.9.11-ce.0.el7.x86_64.rpm -y
vim /etc/gitlab/gitlab.rb
#设置访问url和关闭prometheus
external_url 'http://gitlab.oldqiang.com'
prometheus_monitoring['enable'] = false
#配置gitlab通过smtp发送邮件
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = '296917342@qq.com'
gitlab_rails['gitlab_email_display_name'] = 'oldboy_gitlab'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "296917342@qq.com"
gitlab_rails['smtp_password'] = "xxxxxx"
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab-ctl reconfigure
15.gitlab汉化
#下载汉化包https://gitlab.com/xhang/gitlab
wget http://192.168.37.202/linux59/gitlab-11-9-stable-zh.tar.gz
tar xf gitlab-11-9-stable-zh.tar.gz
gitlab-ctl stop
\cp -a gitlab-11-9-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/
gitlab-ctl start
16.gitlab-用户-用户组-项目之间的关系
先创建用户组,在基于用户组创建项目,最后创建用户,编辑用户组,添加成员,注意权限
17.gitlab备份和恢复
#备份
gitlab-rake gitlab:backup:create
#恢复
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-rake gitlab:backup:restore BACKUP=1510472027_2017_11_12_9.4.5
gitlab-ctl start unicorn
gitlab-ctl start sidekiq
vim /etc/gitlab/gitlab.rb
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
gitlab_rails['backup_keep_time'] = 604800
#迁移云主机
先备份,云主机安装相同版本,恢复
18.gitlab版本升级
gitlab升级, 10-->11-->12
gitlab升级不能跨大版本
扩展内容:
1:安装svn服务器,讲svn中的数据迁移到git仓库
yum install git-svn -y
git clone svn
#安装svn
yum install subversion -y
mkdir /svn/repo -p
#初始化仓库
svnadmin create /svn/repo
cd /svn/repo/conf
vim svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = /svn/repo
[sasl]
vim passwd
[users]
admin = 123456
vim authz
[/]
admin = rw
test = r
#启动svn服务
svnserve -d -r /svn/repo
#svn迁移到git
yum install git-svn -y
git svn clone svn://10.0.0.100 --username=admin --no-metadata --authors-file=password.txt git
cat password.txt
admin=zhangsan<296917342@qq.com>
2:找回gitlab的root密码
第三章: 持续部署
Jenkins自动化上线
1:什么是Jenkins
Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要
Jenkins是一个调度平台
2:安装Jenkins
#部署tomcat
rpm -ivh jdk-8u102-linux-x64.rpm
mkdir /app
tar xf apache-tomcat-8.0.27.tar.gz -C /app
cd /app/apache-tomcat-8.0.27/webapps/
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/latest/jenkins.war
mv jenkins.war ROOT.war
/app/apache-tomcat-8.0.27/bin/startup.sh
打开浏览器访问http://10.0.0.5:8080安装Jenkins


3:Jenkins插件的安装


4:创建一个job(一个代码上线的流程)

通用: 配置参数化构建
源码管理: 拉取git仓库
构建触发器: gitlab自动触发Jenkins远程构建
构建环境: 删除workspace
构建: html 远程上线, java maven编译 部署
构建后: 通知 邮件通知,钉钉通知
5:Jenkins拉取gitlab的代码
详情见视频
6:使用脚本实现html自动化代码上线
[root@oldboy scripts]# cat auto_deployment_html.sh
#!/bin/bash
code_dir='/root/.jenkins/workspace/yiliao'
project='yiliao'
tag='v2'
tarname="${project}_${tag}.tar.gz"
web_ip="10.0.0.100 10.0.0.101"
cd $code_dir && tar zcf /opt/$tarname *
for n in $web_ip;
do
scp -rp /opt/$tarname root@${n}:/tmp/
ssh root@${n} "mkdir /html/${project}_$tag && \
tar xf /tmp/$tarname -C /html/${project}_$tag && \
rm -fr /html/web && \
ln -s /html/${project}_$tag /html/web"
done
7:使用Jenkins实现html自动化代码上线

使用gitlab自动触发构建项目
详情见视频
使用参数化构建完成版本回退
详情见视频
8:使用脚本实现java项目自动化代码上线
9:使用Jenkins实现java项目自动化代码上线
10:手动使用sonarqube实现代码质量检测
11:将代码质量检测集中Jenkins代码上线过程中
12:Jenkins分布式构建
13:Jenkins的用户权限
第一章:自动化上线代码基本介绍
1.软件开发生命周期
老板的创意---产品经理---立项---开发团队---测试团队---运维上线
产品经理---加需求---开发团队---测试----更新代码,上线
2.什么是环境?
开发环境 win gbk, mac utf8 ,php,python 开发的个人电脑
测试环境 代码集中起来,在测试环境上运行一次lnmp,测试mysql,测试 redis, ltnm
预发布环境 连接线上数据库,专门的测试域名
生产环境 线上环境 shop lnmp || bbs lnmp
公共基础设施: 监控zabbix + gitlab + Jenkins + ntp + yum + jumpserver + openvpn
3.什么是代码部署?

4.代码部署的方式?
手工: 运维需要全程陪同,重复的人工操作,容易出错
自动:
5.什么是持续集成Continuous Integration
经常频繁的代码合并, 持续集成跟运维有关的工作,提供一个代码仓库,版本控制系统(备份,迁移)
6.什么是持续交付?
开发团队---测试团队---运维上线
开发团对,单元测试,---测试用力---代码质量检测--- 测试, sonarqube
7.什么是持续部署Continuous deployment?
频繁的代码上线,持续部署
第二章:持续集成
1.什么是版本控制系统?
2.版本控制系统解决了什么问题?
快速回滚到指定的版本,只保留变化的内容
3.常见版本控制系统svn与git区别?
svn: 中心化的代码仓库
git: 分布式的代码仓库
4.git的诞生
git由林纳斯.托瓦兹
1991
2002年 csv
2005年 花了两周时间 git
2020年
5.安装和配置git
#git的安装
yum install git -y
git --version
git config --global user.name "oldqiang"
git config --global user.email "296917342@qq.com"
git config --global color.ui "true"
6.创建版本库
git init
7.git仓库添加文件

git add . #添加文件到缓冲区
git commit -m 'add three file'
8.git修改文件名称并提交
git mv file1 file4
git commit -m 'change file name'
#删除文件
git rm 3.txt #删除工作目录和缓冲区文件
git commit -m 'rm 3.txt'
9.git的文件对比
git diff file3 #本地目录和缓冲区文件对比
git diff --cached file3 #缓冲区文件和仓库文件对比
10.实现回退功能
查看当前的历史版本
git log --oneline
git reset --hard 942bdf3
查看所有的历史版本
git reflog --oneline
git reset --hard 942bdf3
撤销修改的文件
提交到缓冲的区文件撤回
git reset HEAD file3(文件名)
git checkout -- file3(文件名)
未add到缓冲区的文件撤回
git checkout -- file3(文件名)
11.git分支管理
#增加一个新分支
git branch dev01
#切换分支
git checkout dev01
#在开发分支上合并主分支
git merge master -m '注释'
#切回主分支
git checkout master
#在主分支合并开发
git merge dev01 -m '注释'
12.git标签管理
标签给commit起一个容易记的别名
#给当前版本打标签
git tag v1.2
#删除标签
git tag -d v1.2
#给任意版本打标签
git tag -a v1.0 -m '优化了1111 修复bug' a119962
13.git远程仓库gitee
14.gitlab安装
私有代码仓库
#上传gitlab-ce-11.9.11-ce.0.el7.x86_64.rpm到当前目录
echo "192.168.37.202 mirrors.aliyun.com" >>/etc/hosts
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum localinstall gitlab-ce-11.9.11-ce.0.el7.x86_64.rpm -y
vim /etc/gitlab/gitlab.rb
#设置访问url和关闭prometheus
external_url 'http://gitlab.oldqiang.com'
prometheus_monitoring['enable'] = false
#配置gitlab通过smtp发送邮件
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = '296917342@qq.com'
gitlab_rails['gitlab_email_display_name'] = 'oldboy_gitlab'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "296917342@qq.com"
gitlab_rails['smtp_password'] = "xxxxxx"
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab-ctl reconfigure
15.gitlab汉化
#下载汉化包https://gitlab.com/xhang/gitlab
wget http://192.168.37.202/linux59/gitlab-11-9-stable-zh.tar.gz
tar xf gitlab-11-9-stable-zh.tar.gz
gitlab-ctl stop
\cp -a gitlab-11-9-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/
gitlab-ctl start
16.gitlab-用户-用户组-项目之间的关系
先创建用户组,在基于用户组创建项目,最后创建用户,编辑用户组,添加成员,注意权限
17.gitlab备份和恢复
#备份
gitlab-rake gitlab:backup:create
#恢复
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-rake gitlab:backup:restore BACKUP=1510472027_2017_11_12_9.4.5
gitlab-ctl start unicorn
gitlab-ctl start sidekiq
vim /etc/gitlab/gitlab.rb
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
gitlab_rails['backup_keep_time'] = 604800
#迁移云主机
先备份,云主机安装相同版本,恢复
18.gitlab版本升级
gitlab升级, 10-->11-->12
gitlab升级不能跨大版本
扩展内容:
1:安装svn服务器,讲svn中的数据迁移到git仓库
yum install git-svn -y
git clone svn
#安装svn
yum install subversion -y
mkdir /svn/repo -p
#初始化仓库
svnadmin create /svn/repo
cd /svn/repo/conf
vim svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = /svn/repo
[sasl]
vim passwd
[users]
admin = 123456
vim authz
[/]
admin = rw
test = r
#启动svn服务
svnserve -d -r /svn/repo
#svn迁移到git
yum install git-svn -y
git svn clone svn://10.0.0.100 --username=admin --no-metadata --authors-file=password.txt git
cat password.txt
admin=zhangsan<296917342@qq.com>
2:找回gitlab的root密码
第三章: 持续部署
Jenkins自动化上线
1:什么是Jenkins
Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要
Jenkins是一个调度平台
2:安装Jenkins
#部署tomcat
rpm -ivh jdk-8u102-linux-x64.rpm
mkdir /app
tar xf apache-tomcat-8.0.27.tar.gz -C /app
cd /app/apache-tomcat-8.0.27/webapps/
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/latest/jenkins.war
mv jenkins.war ROOT.war
/app/apache-tomcat-8.0.27/bin/startup.sh
打开浏览器访问http://10.0.0.5:8080安装Jenkins


3:Jenkins插件的安装


4:创建一个job(一个代码上线的流程)

通用: 配置参数化构建
源码管理: 拉取git仓库
构建触发器: gitlab自动触发Jenkins远程构建
构建环境: 删除workspace
构建: html 远程上线, java maven编译 部署
构建后: 通知 邮件通知,钉钉通知
5:Jenkins拉取gitlab的代码
详情见视频
6:使用脚本实现html自动化代码上线
[root@oldboy scripts]# cat auto_deployment_html.sh
#!/bin/bash
code_dir='/root/.jenkins/workspace/yiliao'
project='yiliao'
tag='v2'
tarname="${project}_${tag}.tar.gz"
web_ip="10.0.0.100 10.0.0.101"
cd $code_dir && tar zcf /opt/$tarname *
for n in $web_ip;
do
scp -rp /opt/$tarname root@${n}:/tmp/
ssh root@${n} "mkdir /html/${project}_$tag && \
tar xf /tmp/$tarname -C /html/${project}_$tag && \
rm -fr /html/web && \
ln -s /html/${project}_$tag /html/web"
done
7:使用Jenkins实现html自动化代码上线

使用gitlab自动触发构建项目
使用参数化构建完成版本回退
8:使用脚本实现java项目自动化代码上线
9:使用Jenkins实现java项目自动化代码上线
10:手动使用sonarqube实现代码质量检测
11:将代码质量检测集中Jenkins代码上线过程中
12:Jenkins分布式构建
13:Jenkins的用户权限
注:后续的内容下一篇文章补全。
Git-Jenkins-代码的上线的更多相关文章
- GIt+jenkins代码自动上线
代码自动上线功能 企业部署代码上线是件比较麻烦的事情,还好我们有jenkins这个持续集成的软件可以帮助我们做很多的事情,现在我们就 来测试用jenkins推送代码上线. 我们这里测试的是一个html ...
- devops持续集成,Centos7.6下gitlab+jenkins(pipeline)实现代码自动上线
持续集成 gitlab+jenkins(pipeline)实现代码自动上线 环境准备:Centos7.6版本ip:192.168.0.13 主机名:gitip:192.168.0.23 主机名:jen ...
- Jenkins获取git tags代码
配置Jenkins获取git tag代码的方式其实方法很多,目前我使用比较多的主要是通过Git Parameter 来配置动态的获取最新tags代码,主要我们首先需要安装一下Git Parameter ...
- 持续集成①安装部署jenkins从git获取代码
持续集成①安装部署jenkins从git获取代码 一:持续集成的概念: 1.1:总体的概括 持续集成Continuous Integration 持续交付Continuous Delivery 持续部 ...
- 【CentOS】安装部署jenkins从git获取代码[转]
持续集成①安装部署jenkins从git获取代码 一:持续集成的概念: 1.1:总体的概括 持续集成Continuous Integration 持续交付Continuous Delivery 持续部 ...
- Jenkins进阶-获取git tags代码(2)
配置Jenkins获取git tag代码的方式其实方法很多,目前我使用比较多的主要是通过Git Parameter 来配置动态的获取最新tags代码,主要我们首先需要安装一下Git Parameter ...
- git jenkins 介绍
1.什么是持续集成?2.什么是持续交付?3.什么是持续部署?4.版本控制工具? git 1.git基本操作 2.git 分支 3.git 标签tag 4.gitlab git ...
- jenkins代码自动部署
jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的"自动化"编译.打包.分发部署.jenkins可以很好的支持各种语言(比如:java, ...
- git jenkins 基本部署
git jenkins 本地仓库基础 1.安装git [root@gitlab ~]# yum install git -y 2.配置git [root@gitlab ~]# git config ...
- Android Studio +git+jenkins+gitHub
之前做的jenkins+gitlab的jmeter,,,其实已经记不太清楚了. 最近又在搞Android学习,就试一下AndroidStudio+jenkins自动打包apk看看. step1: An ...
随机推荐
- WordPress发布文章/页面时自动添加默认的自定义字段
如果你每篇文章或页面都需要插入同一个自定义字段和值,可以考虑在WordPress发布文章/页面时,自动添加默认的自定义字段.将下面的代码添加到当前主题的 functions.php 即可: 1 2 3 ...
- 程序员还在用360,腾讯电脑管家清理注册表,清理垃圾?只能说你太low
首先明明电脑上,就有清理垃圾和无用注册表的功能,只是我么缺少发现美的眼睛. 为什么不用360,腾讯全家桶. 那玩意固然香,而且真香,但是后台占用率太高,作为一个有洁癖的我,实在是不想看到自己右下角多一 ...
- muduo网络库源码学习————线程池实现
muduo库里面的线程池是固定线程池,即创建的线程池里面的线程个数是一定的,不是动态的.线程池里面一般要包含线程队列还有任务队列,外部程序将任务存放到线程池的任务队列中,线程池中的线程队列执行任务,也 ...
- 题目分享L
题意:n个人围成一个环,每个人初始有一些金币,每个人可以把金币递给相邻的人,问最少传递多少金币使每个人金币数相同? 分析:首先在保证最优的情况下不可能会出现相邻的两个人互相送金币,因为这样他们公共的部 ...
- 服务器安装JDK
1.卸载OpenJDK, 安装OracleJDK a.一般的LINUX发行版内置OpenJDK, 相当于JDK的开源版本(我们平时使用的JDK特指OracleJDK) b.OpenJDK 不能使用ja ...
- Edge Weight Assignment(树-异或-贪心)
大意: 给定一棵无根树,要求你任意设置n-1条边的边权. 使得任意叶子节点间边权的XOR值为0: 此时,令f为所有边权数值不同的个数,求最小的f和最大的f. \(\color{Red}{------- ...
- (一只小白)对private,final关键字的一些认知
1.private: private是私有的意思,在Java中可以用来修饰类里面的成员变量或者成员方法(注:不能修饰一个类,因为一个类如果外部无法访问的话,面向对象的编程思想将毫无意义),顾名思义,被 ...
- 【FPGA篇章五】FPGA函数任务:对讲解函数与任务专题展开详解
欢迎大家关注我的微信公众账号,支持程序媛写出更多优秀的文章 任务和函数也属于过程块,多用于仿真文件设计中,使用两者的目的有所区别: 函数(function):对输入的值执行一些处理,返回一个新的值. ...
- MySQL——关于索引的总结
索引的优缺点 首先说说索引的优点:最大的好处无疑就算提高查询效率.有的索引还能保证数据的唯一性,比如唯一索引. 而它的坏处很明显:索引也是文件,我们在创建索引时,也会创建额外的文件,所以会占用一些硬盘 ...
- matlab 调用C程序进行simulink仿真
文章目录 simulink仿真 创建C程序 编译C程序 运行结果 simulink仿真 simulink仿真中需要使用S-Function模块,可以实现调用C程序进行仿真,下面先建立一个简单的仿真: ...