JustQJ / Inula-mid-server

关于CS7354课程项目的用于同步gitee仓库到github仓库的中间服务器配置说明文档

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

中间服务器部署

构建webhook server

  1. 首先需要安装python环境(建议使用miniconda环境),并安装flask库:pip install flask
  2. 使用WSGI服务器进行托管Flask程序,安装Gunicorn:pip install gunicorn
  3. 使用 Nginx 作为反向代理服务器:
    • 首先安装Nginx,ubuntu使用 sudo apt-get install nginx
    • 编写Nginx配置文件,到/etc/nginx/sites-available/文件夹下,创建一个新的文件,这里叫做inula_app.conf
      server {
          listen 80;
      
          server_name your_server_ip;
      
          location / {
              proxy_pass http://localhost:5000; 
              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;
          }
      }
      
      上面的server_name为自己服务器的地址,proxy_pass的端口号由自己指定,这里为5000,后面启动的服务也要和这里一致
    • 将该文件链接到/etc/nginx/sites-enabled/文件夹下:ln -s /etc/nginx/sites-available/inula_app.conf /etc/nginx/sites-enabled/
    • sudo nginx -t && sudo systemctl restart nginx 检查配置并重启服务
  4. 修改gitee-webhook-server\server_app.py文件中的request_password为自己需要的字符串; 修改gitee-webhook-server\trigger.sh脚本中的repository_name为需要同步的github仓库名,github_token为仓库授权的用户的认证token,可以在https://github.com/settings/tokens 中创建。
  5. gitee-webhook-server文件夹下启动服务:gunicorn -w 4 -b 0.0.0.0:5000 server_app:app 这里的5000为和上面步骤3配置中的对应的端口。
  6. 在gitee仓库的webhooks中添加需要的WebHook,填写步骤4中设置的密码和服务器的地址,并勾选需要的触发事件,我们的实现中是Push和Tag Push事件。如下图所示 gitee Webhook
  7. 至此,就可以对push和push tag操作进行同步了。

配置测试覆盖率展示网站

  1. 配置 Nginx 作为反向代理服务器:
    • 编写Nginx配置文件,到/etc/nginx/sites-available/文件夹下,创建一个新的文件,这里叫做coverage.conf

      server {
          listen 8088;
          server_name your_server_ip;
      
          location / {
              root path_to/test-coverage;
              index main.html;
          }
      
          location /figs/ {
              alias path_to/test-coverage/figs/;
          }
      
          location /inula-packages/ {
              alias path_to/test-coverage/inula-packages/;
          }
      }
      

      上面的listen为自己指定的端口,server_name为自己服务器的地址,path_totest-coverage文件夹所在的路径。

    • 将该文件链接到/etc/nginx/sites-enabled/文件夹下:ln -s /etc/nginx/sites-available/coverage.conf /etc/nginx/sites-enabled/

    • sudo nginx -t && sudo systemctl restart nginx 检查配置并重启服务。

  2. 需要在自己的服务器中加入ssh公钥,并把ssh私钥、服务器地址、用户和对应的文件目录加入到需要同步的github仓库的secrets中去,才能通过ssh将覆盖率的结果传输到该服务器上面。
  3. 然后通过your_server_ip:8088就可以访问到main.html,并通过点击访问不同的子页面看到每个子目录的覆盖率(:如果访问403,可能是test-coverage文件夹的权限引起的,需要修改该文件夹的权限使得nginx能够访问,例如直接chmod 777 test-coverage)。 Coverage page

参考

https://github.com/Yikun/hub-mirror-action https://jasonkayzk.github.io/2020/10/23/%E4%BD%BF%E7%94%A8Github-Actions%E5%90%8C%E6%AD%A5github%E5%92%8Cgitee%E4%BB%93%E5%BA%93/ https://www.chenshaowen.com/blog/how-to-trigger-github-action-remotely.html https://p3terx.com/archives/github-actions-manual-trigger.html http://www.likehide.com/blogs/python/hugo_webhook_at_gitee/

About

关于CS7354课程项目的用于同步gitee仓库到github仓库的中间服务器配置说明文档


Languages

Language:HTML 97.8%Language:JavaScript 1.4%Language:CSS 0.8%Language:Python 0.0%Language:Shell 0.0%