码云项目托管之自动化部署

Posted spydxk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了码云项目托管之自动化部署相关的知识,希望对你有一定的参考价值。

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

  技术分享图片

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

  技术分享图片

三、到webHooks下添加webHooks设置

  技术分享图片

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

  技术分享图片

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

git clone [email protected]: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

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

 








以上是关于码云项目托管之自动化部署的主要内容,如果未能解决你的问题,请参考以下文章

webhook 自动部署代码

持续集成与自动化部署 - gitlab部署

Git Git 第九章 国内代码托管中心 码云 -- 码云(简介 & 码云帐号注册和登录 & 码云创建远程库 & IDEA 集成码云 & 导入GitHub项目)

使用码云gitee.com托管代码

将本地项目托管到码云上

代码管理git托管到码云(github)开源中国