美文网首页
阿里云代码托管服务之webHooks,node前端服务器自动拉取

阿里云代码托管服务之webHooks,node前端服务器自动拉取

作者: Axmine | 来源:发表于2020-05-26 16:40 被阅读0次
    1. 解析一个域名到服务器,如 hooks.abc.com
    2. 在hooks站点根目录创建 index.js 用于执行shell脚本,内容如下:
    const http = require('http');
    const { exec } = require('child_process');
    
    const server = http.createServer((req, res) => {
      // 接收get请求参数
      const query = req.url.slice(2)
      const params = { repo: '', task: '' }
      if (query) {
        const arr = query.split('&')
        arr.forEach(e => {
          const item = e.split('=')
          params[item[0]] = item[1]
        })
      }
      // 创建命令行
      let command = ''
      if (params.repo) {
        // 进入站点所在目录 并 从仓库中拉取最新代码
        command = `cd /data/wwwroot/${params.repo} && git pull`
      } else {
        res.statusCode = 404
        res.end('Not found')
      }
      // 执行命令
      if (command) {
        command && exec(command, (error, stdout, stderr) => {
          if (error) {
            res.statusCode = 400
            res.end(`Error: ${error}`)
          } else {
            res.statusCode = 200
            res.end('')
          }
        })
      } else {
        res.statusCode = 404
        res.end('Are you ok?')
      }
    })
    
    server.listen(4444, '127.0.0.1')
    

    3、在服务器端安装pm2, 安装完成后,使用pm2启动index.js

    pm2 start index.js --name hooks.abc.com
    

    4、设置nginx反向代理

    server {
      listen 80;
      server_name hooks.abc.com;
      access_log off;
      index index.html index.htm index.php;
      root /data/wwwroot/hooks.abc.com;
      include /usr/local/nginx/conf/rewrite/none.conf;
      #error_page 404 /404.html;
      #error_page 502 /502.html;
      # nginx反向代理
      location / {
        expires                             $expires;
        proxy_redirect                      off;
        proxy_set_header Host               $host;
        proxy_set_header X-Real-IP          $remote_addr;
        proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto  $scheme;
        proxy_read_timeout                  1m;
        proxy_connect_timeout               1m;
        proxy_pass                          http://127.0.0.1:4444;
      }
    }
    

    5、最后,只要在阿里云代码托管服务的webhooks中事件中设置为相应链接即可
    如我这里只设置了推送最新代码后服务器自动拉取,所以我设置了发生推送事件后触发链接: http://hooks.abc.com?repo=www.abc.com
    这里仅使用了自动拉取,它可以做的其实更多,唯一限制你的只有想象力。

    相关文章

      网友评论

          本文标题:阿里云代码托管服务之webHooks,node前端服务器自动拉取

          本文链接:https://www.haomeiwen.com/subject/morvahtx.html