zoukankan      html  css  js  c++  java
  • 码云项目托管之自动化部署

    一、首先要到https://gitee.com/注册一个账号,并创建一个项目。

      

    二、把本地和服务器公钥添加到码云公钥管理

     

    三、到webHooks下添加webHooks设置

      

      然后添加一个触发钩子的url,当开发者提交主分支的时候,首先是把版本信息提交到码云,然后码云主动请求该url,并携带版本信息及密码过去,进行验证后触发钩子,钩子再执行版本更新

      

    四、分别在客户端和服务器端克隆项目下来

    git clone git@gitee.com:timelink/project.git
    

     

    五、搭建钩子

      创建第三步配置的url访问的php文件,我在此命名为gitCode.php文件,编辑

    <?php
    
    $post=file_get_contents('php://input');//获取请求携带的参数
    
    $post=json_decode($post ,true);//将json转换成数组
    //验证密码 保证请求安全性
    if($get['password'] == '12345'){
        exec('sudo -u root git pull origin master 2<&1', $output);
        echo json_encode($output);
    }else{
        echo '失败';
    }

    然后再webhooks管理可以进行测试,出现相关成功信息,即说明配置成功

    注意:在此处有个小坑

      (1)如果出现报错:sudo no tty present and no askpass program specified,则因为对于apache,由于其执行权限一般为apache:apache,用户和组都是apache, apache用户的特点是无密码,不能登录,无环境变量等。

      解决方法:

    1. 为sudoer文件开启w权限  

    chmod u+w /etc/sudoers 
    

    2. 执行visudo命令, 给apache用户分配sudo权限

    visudo
    

      a. 注释掉1行:
        #Defaults requiretty
      b. 增加2行:
        Defaults visiblepw
        apache ALL=(ALL) NOPASSWD:/usr/bin/sudo, /usr/local/bin/MP4Box, /usr/local/bin/ffmpeg
      我这里允许在cgi中调用 /usr/bin/sudo, /usr/local/bin/MP4Box, /usr/local/bin/ffmpeg三个命令,您可以根据需要修改
      注意上面这2行的作用至关重要,不可随意修改其格式

      c. 保存退出visudo,退出跟vi命令一样
      :wq

    3. 关闭sudoer文件w权限

      chmod -w /etc/sudoers 
    

    4.重启nginx

    nginx -s reload

    六、在客户端提交版本即可实现项目的自动化部署了

    欢迎关注技术公众号,博客和公众号同步更新,将不断更新各种技术心得


    作者: 苏沛云
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    《软件工程》第八章随笔
    《软件工程》第七章随笔
    《软件工程》第六章随笔
    《软件工程》-第五章随笔
    自动生成小学四则运算题目
    人月神话
    软件工程——理论、方法与实践11
    软件工程——理论、方法与实践⑩
    软件工程——理论、方法与实践⑨
    软件工程——理论、方法与实践⑧
  • 原文地址:https://www.cnblogs.com/spydxk/p/9397405.html
Copyright © 2011-2022 走看看