精品推荐!Git服务器端代码自动部署

作者:欧宝体育app发布时间:2022-04-13 01:03

本文摘要:实现原理及相关知识Git钩子Git能在特定的重要行动发生前触发自界说剧本,这个触发历程叫做钩子。有两组这样的钩子划分是:服务端客户端对于客户端钩子可以在提交合并的时候使用;对于服务端的钩子可以在被推送的时候使用,正如本文要说的一样,当客户端push以写内容时,服务端的Git触发相应的剧本,在剧本中使用Git相关下令举行内容的拉取,实现自动部署功效。Git钩子所在目录Git钩子被存放在hooks的子目录中。 即一般在.git/hooks中。

欧宝体育官网

实现原理及相关知识Git钩子Git能在特定的重要行动发生前触发自界说剧本,这个触发历程叫做钩子。有两组这样的钩子划分是:服务端客户端对于客户端钩子可以在提交合并的时候使用;对于服务端的钩子可以在被推送的时候使用,正如本文要说的一样,当客户端push以写内容时,服务端的Git触发相应的剧本,在剧本中使用Git相关下令举行内容的拉取,实现自动部署功效。Git钩子所在目录Git钩子被存放在hooks的子目录中。

即一般在.git/hooks中。当初始化一个Git堆栈时,Git会在这个目录中存放一些样例剧本,是以.sample后缀末端的,要是用的话需要赋予正确的权限而且去掉.sample后缀。这些剧本基本上是以shell剧本,可以使用其他语言编写的剧本。

如下面详细的hooks文件夹的目录结构及内容。# 客户端hooks文件夹下hooks/|-- applypatch-msg.sample|-- commit-msg.sample|-- post-update.sample|-- pre-applypatch.sample|-- pre-commit.sample|-- pre-push.sample|-- pre-rebase.sample|-- prepare-commit-msg.sample|-- update.sample#服务端hooks文件夹下hooks/|-- applypatch-msg.sample|-- commit-msg.sample|-- post-update.sample|-- pre-applypatch.sample|-- pre-commit.sample|-- pre-push.sample|-- pre-rebase.sample|-- prepare-commit-msg.sample|-- update.sample客户端钩子客户端钩子有多种,可以分为:提交事情流钩子,电子邮件事情流钩子和其他钩子pre-commit钩子在键入提交信息前运行。可以用于检查代码气势派头是否一致。

prepare-commit-msg钩子在启动提交信息编辑器之前,默认信息建立之后运行。post-commit钩子在整个提交历程完成后运行。常用于通知的事情。服务端钩子服务端钩子可以对项目执行种种类型计谋。

可以再推送到服务器之前运行也可以推送到服务器后在运行。pre-receive处置惩罚来自客户端的推送时触发post-receive在客户端push完成后运行,可以用来更新其它系统服务或者通知消息;本文通过这post-receive举行代码自动部署更多钩子内容可以参考官网书籍相关下令Git操作下令在现有目录中初始化堆栈:git init克隆堆栈:git clone [url]添加文件到暂存区:git add [name]提交文件到堆栈:git commit [name] -m [comment]从远程堆栈中拉取:git pull [remote-name]推送到远程堆栈:git push [origin] [master]建立一个裸堆栈(没有事情区):git init --bare [repname.git]需要注意的是:如果使用git clone下令克隆远程堆栈,会把远程服务器名设置为origin主分支设置为masterLinux下令修改文件或文件夹所属用户及组:chown -R [groupname]:[username] [filename/dirname]给文件添加可执行权限:chmod +x [filename]详细操作本文以web代码为例建立服务器端代码托管堆栈(远程毗连堆栈)第一步:建立git用户:adduser git第二步:添加要登任命户的公钥:cd /home/gitmkdir .sshtouch authorized_keys#使用vim将公钥添加到authorized_keys文件中,一行一个公钥文件在~/.ssh文件加下;本文以Windows下的目录为例C:Users用户名.ssh如下图所示第三步:选定目录作为服务器端代码托管文件夹:cd /opt/codegit init --bare blog.git第四步:添加钩子文件cd /opt/code/blog.gittouch post-receive#使用vim打开post-receive将如下shell写入文件中#!/bin/bashIS_BARE=$(git rev-parse --is-bare-repository)if [ -z "$IS_BARE" ]; thenecho >&2 "fatal: post-receive: IS_NOT_BARE"exit 1fiunset GIT_DIRDeployPath="/var/www/blog"#这里写项目实际部署的目录cd $DeployPathgit fetch --allgit reset --hard origin/master#修改post-receive文件权限chmod +x post-receive服务器端建立部署项目的文件夹这个目录是实际运行的线上代码cd /var/www/git clone /opt/code/blog.git克隆后会有一个空堆栈的提示Git客户端设置(本文是在Windows下使用Git举行操作)第一步:将远程堆栈举行克隆git clone git@IP:/opt/code/blog.git第二步:建立测试文件,上传到远程堆栈#进入blog目录建立一个测试文件index.htmlgit add .git commit -m 'create new file'git push第三步:测试是否自动部署在浏览器中输入对应的IP地址即可遇到的问题错误一错误详情在客户端克隆代码时泛起Permission denied, please try again错误发生原因ssh相关设置文件没有设置解决方式#将/etc/ssh/sshd_config文件中下面几个选项的注释去掉PubkeyAuthentication yesAuthorizedKeysFile yes%h/.ssh/authorized_keys在Ubuntu下如果将/etc/passwd中的git:x:1000:1000:,,,:/home/git:/bin/bash修改为git:x:1000:1000:,,,:/home/git:/bin/git-shell后将无法克隆,即会报上述的错误有关ssh的文章错误二错误详情fatal: 'opt/code/blog.git' does not appear to be a git repositoryfatal: Could not read from remote repository.发生原因堆栈目录地址写错,应该写绝对路径解决方式修改堆栈地址$ git clone git@IP:/opt/code/blog.git本文说明本文对于下令多数使用的是绝对路径,若没有则先会以绝对路径先进入对应的目录,在举行操作对于可以部门名称设置可以凭据自己的需要举行自界说设置本文实际操作的情况云主机Ubuntu 12.04Git版本 1.7.9.5希望大家多多支持,小编致力推荐精品,共享给大家学习交流。接待大家随时留言回复,谢谢大家!Ps:如果此文为您带来欢喜,那就关注小编吧。

天天精品准时推送!。


本文关键词:欧宝体育官网,精品推荐,Git,服务器,端,代码,自动,部署,实现

本文来源:欧宝体育app-www.syfuqi.com