Jenkins实现html代码上线与回滚

一、案例环境
二、部署Gitlab
1)部署Gitlab
2) 配置免密登录
3)测试免密登录
三、部署Jenkins
四、Jenkins集成Gitlab
五、部署Nginx
六、Jenkins实现代码自动上线
七、Jenkins实现代码自动部署与回退及重复构建

一、案例环境

系统 IP地址 主机名 所运行的服务
Centos 7 192.168.1.6 gitlab gitlab
Centos 7 192.168.1.7 Jenkins jenkins
Centos 7 192.168.1.8 Nginx nginx

二、部署Gitlab

1)部署Gitlab

[[email protected] ~]#  yum -y install  epel-release curl openssh-server openssh-clients postfix cronie policycoreutils-python patch
#安装所需依赖
[[email protected] ~]#  wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.3.5-ce.0.el7.x86_64.rpm
#对gitlab的版本并没有什么特殊的限制
[[email protected] ~]# yum -y localinstall gitlab-ce-12.3.5-ce.0.el7.x86_64.rpm
[[email protected] ~]# vim /etc/gitlab/gitlab.rb                #便于使用URL路径访问
external_url ‘http://192.168.1.6‘
#下载 中文补丁包
[[email protected] ~]# head -1 /opt/gitlab/version-manifest.txt           #查看gitlab的版本
gitlab-ce 12.3.5
[[email protected] ~]# git clone https://gitlab.com/xhang/gitlab.git -b v12.3.5-zh
[[email protected] ~]# cd gitlab/
[[email protected] gitlab]#  git diff v12.3.5 v12.3.5-zh > /root/v12.3.5-zh.dif
[[email protected] gitlab]# patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 <  ../v12.3.5-zh.diff
 #将刚才的diff文件做为补丁导入到gitlab中
#该命令执行过程中,一路回车跳过即可
[[email protected] ~]# gitlab-ctl  start                 # 启动gitlab
[[email protected] ~]# gitlab-ctl reconfigure      #重新配置gitlab

web页面访问测试



可以看出gitlab的网站页面已经汉化!

2) 配置免密登录

[[email protected] ~]# ssh-keygen
[[email protected] ~]#  cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCuWnEReFVhIiODuTO/NzdjuvPMY0tQ89NuYGtMxDJJAXnbChK8dbe0Iu4GNHY9zeSP0OaYJvVV9Nu/qtcZqgg+zKgLohdoI5QKXWcZ1JT/kNpIbnVnUYE0/AYZ8nMbjNiUsSD5BaDy+t9uuRxh+QCOrZDkYZw1EZioDpDoSR1XzrOac69QIag2XUU04rmWkR9/fbfwGzusTzfO2thk3vcZn+DzLqJqYy9ufkZeTGlqJnVC6//caakMtY475NSUKnGT+YoRsStXXI/9CVrpY8cPZ5eiFs34xGZWU1uhsx9UQ50pNeA7iqM6CIKpb4MPtqKDLIb83Bztz1VsfBJRMxer [email protected]
#本地生成密钥对,便于ssh登录


3)测试免密登录



[[email protected] ~]# git clone [email protected]:root/web-demo.git
#确认无需输入密码

三、部署Jenkins

[[email protected] ~]# wget https://mirrors-i.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.172-1.1.noarch.rpm
[[email protected] ~]# yum -y localinstall jenkins-2.172-1.1.noarch.rpm
#获取Jenkins软件包,并安装
[[email protected] ~]# systemctl start jenkins            #启动Jenkins

web页面访问






由于刚才跳过了插件安装,,所以需要自己手动安装,下载本人提供的插件软件包,下载链接:https://pan.baidu.com/s/16fxH1J0WO6tW1bhPwmd60w
提取码:432n

[[email protected] ~]# rm -rf /var/lib/jenkins/plugins/           #将安装产生的插件目录进行删除
[[email protected] ~]# tar zxf jenkins-plugins.tar.gz -C /var/lib/jenkins/
#将插件软件包解压到指定的位置
[[email protected] ~]# sed -i ‘s/http:\/\/updates.jenkinsci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g‘ /var/lib/jenkins/updates/default.json && sed -i ‘s/http:\/\/www.google.com/https:\/\/www.baidu.com/g‘ /var/lib/jenkins/updates/default.json
#将jenkins下载插件的路径,更改为国内源
[[email protected] ~]# systemctl restart jenkins          #重新启动Jenkins

再次访问web页面:


再次访问Jenkins,可以发现已经变成中文了,因为插件中包含了中文插件!

四、Jenkins集成Gitlab

[[email protected] ~]# ssh-keygen     #Jenkins服务生成密钥对
[[email protected] ~]# cat ~/.ssh/id_rsa.pub      #查看公钥信息
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDbcFk7tkBes+S6BIVLxzLVj8X7bThDYscpY6uBeauHp+tPTL6CRVQDOlUcMRsyaX7o+a26iPd+yhJUaB+qT4iW1cVjhEiuKiR2NJSJdnEqccgcXWPJzIe+Owj76ofBtIhKqLGzwnYj6Lj0KmjUhn7tASu1bZ8hWubJ2ZQUottOW8KqjvHIb7q8OsGty9tsLVV3gD1XF1cE1s9rXY7XUFxDwtu1kfiA2XhSyJ3EmTWFlFlvaqzhQDBELWSVBz/4CihAfIp2eW7nx8TPXG0d0j+OwQYcccsarwkjHuc2IYRv4gVAhtRyXj8VQ7+LBsjYjfIMBTw4CFwQSTfZnWaa6Fcf [email protected]

将公钥信息存放在gitlab上:

[[email protected] ~]# cat ~/.ssh/id_rsa
#查看Jenkins服务器的私钥信息,需要将私钥信息存放在Jenkins的web页面上
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA23BZO7ZAXrPkugSFS8cy1Y/F+204Q2LHKWOrgXmrh6frT0y+
gkVUAzpVHDEbMml+6Pmtuoj3fsoSVGgfqk+IltXFY4RIriokdjSUiXZxKnHIHF1j
ycyHvjsI++qHwbSISqixs8J2I+i49Cpo1IZ+7QErtW2fIVrmydmUFKLbTlvCqo7x
yG+6vDrBrcvbbC1Vd4A9VxdXBNbPa12O11BcQ8LbtZH4gNl4UsidxJk1hZRZb2qs
4UAwRC1klQc/+AooQHyKdnlu58fEz1xtHdI/jsEGHHHLGq8JIx7nNiGEb+IFQIbU
cl4/FUO/iwbI2I3yDAU8OAhcEEk32Z1mmuhXHwIDAQABAoIBAQDXcb6qeY1JbaWr
XLTiaXjnZHklGV6cCmcvo8PHIwXd8md9PAPvMtIBOUxGmY/yNtF7O2fuNHuJ6CuG
45PzSpL4RHm/8yjIlmemBomvTLJe0cd+0dIfVsgPZTa03tbav7zwUB/oNYx4RQ0R
7HFv93y2hOe9ARuzS+Q7WXuhpyNaEbvsqQGaeyw0xnBZyopv12CJRtT5PoITeEgv
0meaDiXttkUZd1r3MLutAHsBpvuAUypoOppsUvbJ6Gsv3j4pd6aOHVEomEMaTZf7
hRLNihnTfbj0t3yz/wKZ1FfamHbjRNnML1R+vnv4zEdPFmCJG3mAABQOgja2vwvk
Rxq3/L5BAoGBAO3/ar7ClBgFc09cqz8+jbIOI9pXdP5SoZh9S8B61qi6Nxie192C
nHLc7qjFNCudOBV25+l98ZLCElWjiMcpAD/AH125dE15K+U0qBn0fJvegMWAiTHV
9Av9m39oSnnuu8tVW/AbWjV86EzCRLcpQ+Q5i45HK+d/UIUv8BHGxqG9AoGBAOwJ
juWRuh/+KSw6jJa52sZjkg6m0VAQB7dsQssIhQhQbZvgaLur2bQlf6iJPOHGLnPs
ZVe/LP3VwVgd6+hWo3uPVwjgHyblfLQva7rRXyilv84UMDVHrP1dsg9bEEuckit2
1A9ZMzqdUlAkFZ8aSDq4DRAjggIzf7SnoMt1aTQLAoGAFi116f7BxBdF7oBJKOSQ
WaY9qwv5R/W1Pzt1wqLvu9tWZQHwRaD1KTLzPmDaArJs1ns1Eyn8R9uzz60kgsKM
VmR1x8sPTmTbNUmZ3IlOz0uFnmHi5vTz/+YLBm1We1RGxaTXo2E5H8Da+MQlmRfM
TskZ+xEgwzq26yJTcaSfP9UCgYBwbzUkYcBZUQZnzRP/EFUIP5HpbMkz7A7g7q76
a/qCtV0g7Uq2auvvBhXDQGxB19d03NyBac2StGm/AbHIIM0LJIJ+9dOhAZvfcN9O
REGh6SJuletI1fWvUxxoeCZQ/ioajiYBkan3d80n46hw+2IApn+CeoeJaOKiOV88
y5brdQKBgQCZ3pDpf4wKfR2IYDRLHXsxG4s8Td25HNtIt/ejmnGPWYQgDHl2dLpU
RzTTI6lIFaLTEPAVc4VhlfoltFvLSbm8fUoQfHhPEaGJeDzKSLq52oOQtYMZ/iIR
P6KH210ZgZjuJHQOUqeA954epRnbIosgrWz0G7qNjrpoHZkPcWXxmQ==
-----END RSA PRIVATE KEY-----






安装jenkins集成gitlab所需的插件,下载链接:https://pan.baidu.com/s/1p_jh8X3ma46SEV_tKLKYbw
提取码:zoej
安装插件,如图:



依次上传我提供的包,顺序如下:gitlab-oauth——>gitlab-plugin ——> windows-slaves ——>ruby-runtime ——>gitlab-hook即可!

清华大学Jenkins源:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

gitlab服务器提交代码到gitlab,测试拉取代码:

[[email protected] ~]# cd web-demo/
[[email protected] web-demo]# git config --global user.email "[email protected]"
[[email protected] web-demo]# git config --global user.name "Your Name"
[[email protected] web-demo]# echo "123" >> 123.txt
[[email protected] web-demo]# git add .
[[email protected] web-demo]# git commit -m ‘123‘
[[email protected] web-demo]# git push origin master

Jenkins服务器进行构建:




构建成功!

五、部署Nginx

使用Nginx来模拟上线环境!

[[email protected] ~]# yum install -y gcc gcc- c++ autoconf pcre pcre-devel make automake wget httpd-tools vim tree
#由于是最小化安装的系统,所以安装一些必要的软件
[[email protected] ~]# vim /etc/yum.repos.d/nginx.repo
#配置nginx的yum源,Nginx官方也有相应的配置信息
[nginx]
name=nginx_repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
#该yum源默认情况下安装的是nginx最新的、稳定版
[[email protected] ~]# yum -y install nginx              #安装nginx
#对nginx的版本没有要求,只是为了使用访问效果而已
[[email protected] ~]# rm -rf /etc/nginx/conf.d/default.conf
#删除默认的配置文件
[[email protected] ~]# vim /etc/nginx/conf.d/server.conf
#新建配置文件
server {
        listen 80;

        location / {
                root /code/web;
                index index.html index.htm;
        }
}
[[email protected] ~]# mkdir -p /code/web
[[email protected] ~]# nginx -t
[[email protected] ~]# systemctl start nginx

六、Jenkins实现代码自动上线

1)Jenkins服务编写上线脚本

[[email protected] ~]#mkdir /scripts && cd /scripts/
[[email protected] scripts]# vim html_deploy.sh
#!/bin/bash
DATE=$(date +%Y-%m-%d-%H-%M-%S)
web_server="192.168.1.8"
Sdir=/opt
Ddir=/code

#1)进入项目目录,将内容进行打包,${WORKSPACE}是Jenkins的内置变量,表示构建目录的绝对路径
get_code(){
        cd ${WORKSPACE} &&         tar zcf ${Sdir}/web-${DATE}.tar.gz ./*
}
#2)将内容通过scp复制到web网页目录
scp_web_server(){
for hosts in ${web_server}
do
        scp ${Sdir}/web-${DATE}.tar.gz [email protected]${hosts}:/opt
        ssh [email protected]${hosts} "mkdir -p ${Ddir}/web-${DATE} &&                         tar zxf ${Sdir}/web-${DATE}.tar.gz -C ${Ddir}/web-${DATE}
                        rm -rf ${Ddir}/web &&                         ln -s ${Ddir}/web-${DATE} ${Ddir}/web"
done
}

deploy(){
        get_code
        scp_web_server
}

        deploy
[[email protected] scripts]# chmod +x html_deploy.sh
[[email protected] scripts]# ps -ef | grep jenkins
#可以看出jenkins的运行用户是jenkins
jenkins   58626      1  1 11:23 ?        00:00:39 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkinsjenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
root      61336   2046  0 12:06 pts/0    00:00:00 grep --color=auto jenkins
[[email protected] scripts]# vim /etc/sysconfig/jenkins
JENKINS_USER="root"
#为了防止权限问题,直接将jenkins的运行用户改为root
[[email protected] scripts]# systemctl restart jenkins
#重启jenkins服务
[[email protected] scripts]# ssh-copy-id [email protected]
#配置Jenkins可以免密登录到nginx服务器

2)git服务器编辑网页代码并上传:

[[email protected] web-demo]# echo "lvzhenjiang" >> index.html
[[email protected] web-demo]# git add .
[[email protected] web-demo]# git commit -m "first"
[[email protected] web-demo]# git push origin master








有兴趣可以构建时的控制台输出!

访问nginx进行测试!

确认是刚才gitlab服务器提交的代码信息!

[[email protected] ~]# ll /code                    #查看网页目录实现的具体过程
#可以查看到真正的网页目录是别的目录链接过去的

总用量 0
lrwxrwxrwx 1 root root 29 2月  25 19:37 web -> /code/web-2020-02-25-19-37-13
drwxr-xr-x 2 root root 39 2月  25 19:37 web-2020-02-25-19-37-13

这种方式发布还有很多地方需要完善,比如回退,接下来使用tag的方式发布!

七、Jenkins实现代码自动部署与回退及重复构建

让项目支持tag的方式上线,便于我们进行区分!

1)git服务器创建几个tag标签并上传至gitlab:

[[email protected] ~]# cd web-demo/
[[email protected] web-demo]# echo "<h1>lvzhenjiang-version-v1.1</h1>" > index.html
[[email protected] web-demo]# git add .
[[email protected] web-demo]# git commit -m "v1.1"
[[email protected] web-demo]# git push origin master
[[email protected] web-demo]# git tag -a "v1.1" -m "v1.1"
[[email protected] web-demo]# git push origin v1.1
[[email protected] web-demo]# echo "<h1>lvzhenjiang-version-v1.2</h1>" > index.html
[[email protected] web-demo]# git add .
[[email protected] web-demo]# git commit -m "v1.2"
[[email protected] web-demo]# git push origin master
[[email protected] web-demo]# git tag -a "v1.2" -m "v1.2"
[[email protected] web-demo]# git push origin v1.2
[[email protected] web-demo]# echo "<h1>lvzhenjiang-version-v1.3</h1>" > index.html
[[email protected] web-demo]# git add .
[[email protected] web-demo]# git commit -m "v1.3"
[[email protected] web-demo]# git push origin master
[[email protected] web-demo]# git tag -a "v1.3" -m "v1.3"
[[email protected] web-demo]# git push origin v1.3

2)Jenkins服务器安装插件并配置:

使用该方式就需安装插件:Git Parameter。

安装方式:系统管理——>插件管理——>可选插件——搜索Git Parameter——>直接安装!

[[email protected] ~]# systemctl restart jenkins
#安装完成后,需重启Jenkins!
[[email protected] ~]# cd /scripts/
[[email protected] scripts]# vim html_deploy_tag.sh      #优化脚本
#!/bin/bash
DATE=$(date +%Y-%m-%d-%H-%M-%S)
web_server="192.168.1.8"
Sdir=/opt
Ddir=/code
Name=${DATE}-${git_version}                 #${git_version}是在jenkins界面定义的变量

#1)进入项目目录,将内容进行打包
#${WORKSPACE}是Jenkins的内置变量,表示构建目录的绝对路径
get_code(){
        cd ${WORKSPACE} &&         tar zcf ${Sdir}/web-${Name}.tar.gz ./*
}
#2)将内容通过scp复制到web网页目录
scp_web_server(){
for hosts in ${web_server}
do
        scp ${Sdir}/web-${Name}.tar.gz [email protected]${hosts}:/opt
        ssh [email protected]${hosts} "mkdir -p ${Ddir}/web-${Name} &&                         tar zxf ${Sdir}/web-${Name}.tar.gz -C ${Ddir}/web-${Name}
                        rm -rf ${Ddir}/web &&                         ln -s ${Ddir}/web-${Name} ${Ddir}/web"
done
}

deploy(){
        get_code
        scp_web_server
}

        deploy
[[email protected] scripts]# chmod +x html_deploy_tag.sh 

接下来:







访问nginx:

[[email protected] ~]# ll /code     #这样就可以很清楚的查看构建的是哪个版本
总用量 0
lrwxrwxrwx 1 root root 34 2月  25 20:21 web -> /code/web-2020-02-25-20-21-18-v1.3
drwxr-xr-x 2 root root 39 2月  25 19:37 web-2020-02-25-19-37-13
drwxr-xr-x 2 root root 39 2月  25 20:21 web-2020-02-25-20-21-18-v1.3

部署到此。回退的问题仍没有解决!比如:部署两次v1.3版本就会产生两个v1.3的目录!

3)解决版本回退、重复构建的问题

[[email protected] scripts]# vim html_deploy_tag_rollback.sh     #优化脚本,支持回退
#!/bin/bash
DATE=$(date +%Y-%m-%d-%H-%M-%S)
web_server="192.168.1.8"
Sdir=/opt
Ddir=/code
Name=${DATE}-${git_version}                 #${git_version}是在jenkins界面定义的变量

#1)进入项目目录,将内容进行打包
#${WORKSPACE}是Jenkins的内置变量,表示构建目录的绝对路径
get_code(){
        cd ${WORKSPACE} &&         tar zcf ${Sdir}/web-${Name}.tar.gz ./*
}
#2)将内容通过scp复制到web网页目录
scp_web_server(){
for hosts in ${web_server}
do
        scp ${Sdir}/web-${Name}.tar.gz [email protected]${hosts}:/opt
        ssh [email protected]${hosts} "mkdir -p ${Ddir}/web-${Name} &&                         tar zxf ${Sdir}/web-${Name}.tar.gz -C ${Ddir}/web-${Name}
                        rm -rf ${Ddir}/web &&                         ln -s ${Ddir}/web-${Name} ${Ddir}/web"
done
}

rollback(){
back_file=$(ssh [email protected]${web_server} "find /code/ -maxdepth 1 -type d -name "web-*-${git_version}"")
for hosts in ${web_server}
do
        ssh [email protected]${hosts} "rm -rf ${Ddir}/web &&            ln -s ${back_file} ${Ddir}/web"
done
}

deploy(){
        get_code
        scp_web_server
}
#判断之前是否部署过该版本的commit,如果没有部署则部署,如果有则提示已经部署过然后退出
#如果是回退,则不受限制
if [ ${deploy_env} == "deploy" ];then
        if [ ${GIT_COMMIT} == ${GIT_PREVIOUS_SUCCESSFUL_COMMIT} ];then
                echo "你已经部署过该${git_version}版本"
                exit 1
        else
                deploy
        fi

elif  [ ${deploy_env} == "rollback" ];then
        rollback
fi
[[email protected] scripts]# chmod +x html_deploy_tag_rollback.sh 

接下来配置:




测试:

web页面:

执行回退操作:

有兴趣可以构建时的控制台输出!

web页面:

[[email protected] ~]# ll /code            #可以看出只创建了一次v1.3的目录
总用量 0
lrwxrwxrwx 1 root root 34 2月  25 20:46 web -> /code/web-2020-02-25-20-21-18-v1.3
drwxr-xr-x 2 root root 39 2月  25 19:37 web-2020-02-25-19-37-13
drwxr-xr-x 2 root root 39 2月  25 20:21 web-2020-02-25-20-21-18-v1.3
drwxr-xr-x 2 root root 39 2月  25 20:46 web-2020-02-25-20-46-15-v1.1

重复构建、回退问题解决!

————————本文到此结束,感谢阅读————————

原文地址:https://blog.51cto.com/14157628/2473599

时间: 2024-08-30 12:06:56

Jenkins实现html代码上线与回滚的相关文章

shell脚本实现git快速提交代码与快速回滚

shell脚本实现git快速提交代码与快速回滚 创建一个commit库: [[email protected] cml]# echo "check github" > index.html [[email protected] cml]# cat index.html check github [[email protected] cml]# git add index.html [[email protected] cml]# git commit -m "check

Jenkins代码发布与回滚

一:Jenkins的简介 1.1 Jenkins概念: Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台.这是一个免费的源代码,可以处理任何类型的构建或持续集成.集成Jenkins可以用于一些测试和部署技术.Jenkins是一种软件允许持续集成. 1.2 Jenkins目的: 1.持续.自动地构建/测试软件项目. 2.监控软件开放流程,快速问题定位及处理,提示开放效率. 1.3 特性: 开源的java语言开发持续集成工具,支持CI,CD. 易于安装部署配置:

Jenkins + Gitlab + Ansible--playbook 代码上线流程(文末有免费视频)

jenkins 构建是支持 git 选择分支 安装 Git Parameter 插件在系统管理中的插件管理 然后点击选插件,在右上角输入 Git Parameter,找到 Git Parameter 后点击左下方的的直接安装 . 参数化构建过程 插件安装成功后,在项目配置中后看到多了一个"参数化构建过程" 勾选"参数化构建过程",然后添加 Git Parameter , 配置如下 在源码管理中添加(需要提前将公钥设置好) 参数化构建过程添加 git 参数 Git P

代码上线流程

目录 上线流程 填写申请单 运维人员操作流程 上线流程 填写申请单 填写<系统变更.上线申请单> 顶目名称:顶目名称,如 Linux运维 项目版本:版本号 申请时间:需在工作日13点前作出申请 上线时间:由运维经理指定上线时间(一般是工作日下午17点左右,紧急情况例外) 完成时间:代码上线所有操作完成时间(代码上线.回滚,确认) 变更内容:需申请人对此处上线引起的结构.内容等变化,详细记录 申请人:填写申请代码上线人的姓名 上线人:填写服务器操作人的姓名(由运维经理指定) 技术经理:技术经理亲

粗浅的增量代码上线shell脚本--菜鸟版

1      说明 这个shell脚本是是我编写的第一代版本的增量代码上线脚本,现在代码上线脚本已更新了几个版本,关注的技术重点是可视化对代码版本任意回滚的上线系统(python语言编写),后期将逐步分享这些脚本^_^ .虽然现在看来,这个脚本写的惨不忍睹,但是在当时却改变了公司的上线方式,从交接工作时的手动上线,改变为脚本自动化上线,也算是一个起点和转折点. 2      模块分析 这个上线脚本功能比较简单,先请看上线总体流程: 以下是详细的上线流程图: 3      代码部分 请使用"not

Git撤销&amp;回滚操作

开发过程中,你肯定会遇到这样的场景: 场景一: 糟了,我刚把不想要的代码,commit到本地仓库中了,但是还没有做push操作! 场景二: 彻底完了,刚线上更新的代码出现问题了,需要还原这次提交的代码! 场景三: 刚才我发现之前的某次提交太愚蠢了,现在想要干掉它! 撤销 上述场景一,在未进行git push前的所有操作,都是在"本地仓库"中执行的.我们暂且将"本地仓库"的代码还原操作叫做"撤销"! 情况一:文件被修改了,但未执行git add操作

rails中两种回滚-reversible和revert区别

通常迁移内容写在change方法中 ,但是有些迁移内容不能自动通过执行rake:rollback回滚, 所以在迁移文件里要使用 reversible 方法,告诉rails如何回滚例如下面 class ExampleMigration < ActiveRecord::Migration def change create_table :distributors do |t| t.string :zipcode end reversible do |dir| dir.up do # add a CH

RocketMQ源码分析之RocketMQ事务消息实现原下篇(事务提交或回滚)

本文将重点分析RocketMQ Broker如何处理事务消息提交.回滚命令,根据前面的介绍,其入口EndTransactionProcessor#proce***equest: OperationResult result = new OperationResult();if (MessageSysFlag.TRANSACTION_COMMIT_TYPE == requestHeader.getCommitOrRollback()) { // @1result = this.brokerCont

上线代码、回滚代码

上线脚本 #!/bin/bash FWDIR="$(cd `dirname "${BASH_SOURCE-$0}"`; pwd)" bin=`dirname "$0"` bin=`cd "$bin"; pwd` now=`date "+%Y%m%d_%H%M%S"` tag_release=di.release.${now} [email protected]:bdp-server/bdp-di.git e