zoukankan      html  css  js  c++  java
  • 搭建Git服务器环境----Git hooks代码自动部署

    引言:自己想搭一套git的服务端环境,不想用github码云等。经多方资料整合,实验总结,以下是亲测有效的方式。可用于公司日常开发

    一.搭建Git环境

    ① 安装 Git

    Linux 做为服务器端系统,Windows 作为客户端系统,分别安装 Git

    服务器端:

    #yum install -y git

    安装完后,查看 Git 版本

    [root@localhost ~]# git --version
    git version 1.7.1

    ② 服务器端创建 git 用户,用来管理 Git 服务,并为 git 用户设置密码

    [root@localhost home]# id git
    id: git:无此用户

    [root@localhost home]# groupadd git
    [root@localhost home]# useradd git 
    [root@localhost home]# passwd git

     注:新增用户,useradd -g git 新用户名(新用户也就是linux的用户)

    ③ 服务器端创建 Git 仓库

    设置 /opt/sample.git 为 Git 仓库

    然后把 Git 仓库的 owner 修改为 git

    [root@localhost home]# mkdir -p /opt/sample.git
    [root@localhost home]# git init --bare /opt/sample.git
    Initialized empty Git repository in /opt/sample.git

    [root@localhost home]# cd /opt
    [root@localhost git]# chown -R git:git sample.git/

     至此git搭建完毕(没有使用RAS认证) 此搭建步骤参考  https://www.cnblogs.com/dee0912/p/5815267.html

    二.利用git hook自动进行部署代码同步

    1.创建项目目录

       mkdir /data/sample

    2.克隆远程仓库

      git clone /opt/sample.git

      

    3.在仓库sample.git hooks目录中,创建post-receive文件,内容如下

    #!/bin/sh
    DEPLOY_PATH=/data/sample
    date | tee log.txt
    unset GIT_DIR #这条命令很重要
    cd $DEPLOY_PATH
    git reset --hard
    git pull | tee log.txt # tee记录脚本日志
    #chown www:www -R $DEPLOY_PATH

    注意:1.若代码不能自动同步,多半是权限问题 

    解决办法:每次脚本执行最后,重新chown或chmod项目目录

               2.若客户端push失败

    解决办法:每次脚本执行最后,重新chmod sample.git/objects/ 权限 

    客户端:

       下载 Git for Windows,地址:https://git-for-windows.github.io/

       安装完之后,可以使用 Git Bash 作为命令行客户端。 

       安装完之后,查看 Git 版本

    $ git --version
    git version 2.8.4.windows.1

      克隆远程仓库 git@Ip:/opt/sample.git(注意 此处git为你的git用户名)
      提交代码测试

      注意:push失败、部署失败注意权限

    sudo 以管理员身份运行脚本--tee方式记录脚本日志

     

    说明:当运行脚本时,常遇到权限不足等,可以用以上方法来以管理员权限运行

    1.编辑/etc/sudoers (注意,这里使用 visudo 而不是 vi 来设置。

    2.visudo或 给与/etc/sudoers写权限 vi方式打开

    3.%wheel        ALL=(ALL)       ALL  ##这行默认是注释掉的。如果取消注释,则群组为 wheel 的人就可以进行root 的身份工作!这个 wheel 是系统预设的 group!因此,如果想要让这部主机里头的一般身份使用者具有sudo 的使用权限,那么就必需将该 user 放入支持 wheel 这个群组里头!

    4.git                 ALL=(ALL)       ALL  

  • 相关阅读:
    【洛谷6620】[省选联考 2020 A 卷] 组合数问题(下降幂)
    【AtCoder】AtCoder Grand Contest 033 解题报告
    【AtCoder】AtCoder Grand Contest 034 解题报告
    【洛谷5445】[APIO2019] 路灯(树套树)
    【LOJ6059】「2017 山东一轮集训 Day1」Sum(倍增优化数位DP+NTT)
    【LOJ6159】「美团 CodeM 初赛 Round A」最长树链(树的直径)
    重新入门的Polya定理
    【洛谷6105】[Ynoi2010] y-fast trie(set)
    【BZOJ4480】 [JSOI2013] 快乐的jyy(回文自动机裸题)
    【LOJ6172】Samjia 和大树(树形DP+猜结论)
  • 原文地址:https://www.cnblogs.com/xiaommvik/p/8556985.html
Copyright © 2011-2022 走看看