• 如何用Baas快速在腾讯云上开发小程序-系列2:搭建Phabricator开发管理平台


    版权声明:本文由贺嘉  原创文章,转载请注明出处: 
    文章原文链接:https://www.qcloud.com/community/article/905333001487424158

    来源:腾云阁 https://www.qcloud.com/community

    一、搭建Phabricator开发管理平台

    1.1 上传 SSL/TLS 证书

    第一步:下载证书并解压

    第二步:将证书和私钥上传到开发管理平台服务器

    1. sftp buntu@123.207.229.22
    2. put 1_dev.*
    

    第三步:将证书和私钥复制到 /host/crt 文件夹
    登录云主机 ssh ubuntu@123.207.229.22 ,运行以下命令

    1. mkdir -p /host/crt
    2. cp ~/1_dev.appcook.cn_bundle.crt /host/crt/https.cert
    3. cp ~/1_dev.appcook.cn.key /host/crt/https.cert.key
    

    1.2 创建 Phabricator 容器

    登录云主机 ssh ubuntu@123.207.229.22 ,使用 docker run 命令, 创建一个名为 pha
    的容器。

    1. docker run -d --restart=always --name=pha 
    2. -p 80:80 -p 443:443 -p 2222:22 
    3. --env PHABRICATOR_HOST=dev.appcook.cn 
    4. --env MYSQL_HOST={{数据库内网地址}} 
    5. --env MYSQL_USER={{数据库用户名(有建库权限)}} 
    6. --env MYSQL_PASS={{数据库密码}} 
    7. --env PHABRICATOR_VCS_PORT=2222 
    8. --env PHABRICATOR_REPOSITORY_PATH=/repos 
    9. --env PHABRICATOR_HOST_KEYS_PATH=/hostkeys/persisted 
    10. --env PHABRICATOR_STORAGE_TYPE=disk 
    11. --env PHABRICATOR_STORAGE_PATH=/files 
    12. --env SSL_TYPE=manual 
    13. --env SSL_CERTIFICATE=/crt/https.cert 
    14. --env SSL_PRIVATE_KEY=/crt/https.cert.key 
    15. -v /host/hostkeys:/hostkeys 
    16. -v /host/repo:/repos 
    17. -v /host/files:/files 
    18. -v /host/crt:/crt 
    19. hachque/phabricator
    

    1.3 解析域名

    将域名 dev.appcook.cn 解析到 123.207.229.22
    第一步: 登录腾讯云域名解析控制台

    第二步: 进入主域名管理面板

    第三步:添加 A记录 ( 建议以关联主机方式解析 )

    1.4 安装配置

    使用浏览器访问 https://dev.appcook.cn ,根据提示完成 Phabricator 配置。
    第一步: 创建管理员账号

    创建成功返回控制面板

    第二步: 配置网页登录鉴权方式
    进入auth应用

    选择用户名密码认证

    配置登录选项
    配置成功

    第三步: 添加公钥 (用于代码仓库)
    进入设置面板

    上传公钥

    上传成功

    第四步: 更新代码仓库所有者

    1. #进入容器
    2. docker exec -it pha /bin/bash
    3.
    4. #更改代码仓库所有者
    5. chown git:wwwgrp-phabricator /repos
    

    第五步: 配置 feed.http-hooks ( 自动部署 )
    进入容器,使用 ./bin/config 命令配置 Feed hook

    1. sudo docker exec -it pha /bin/bash
    2. cd /srv/phabricator/phabricator
    3. ./bin/config set '''feed.http-hooks''' '''[ "http://10.141.133.180:8090/1/feed/receive" ]'''
    

    访问 https://dev.appcook.cn/config/edit/feed.http-hooks/ 检查配置

    自动部署脚本 feed.php

    1. <?php
    2. function get() {
    3. $args = func_get_args();
    4. $return = "
    ";
    5. foreach ($args as $arg ) {
    6.
    7. if ( is_string($arg) ) {
    8. $return .= $arg;
    9. } else {
    10. $return .= json_encode($arg,
    11. JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES );
    12. }
    13. }
    14.
    15. return $return . "
    ";
    16. }
    17.
    18. function pull( $repo, $version, $user, $commit ) {
    19.
    20. file_put_contents("/data/web/auto.pull.log", get([
    21. 'repo'=>$repo,
    22. 'version'=>$version,
    23. 'commit'=>$commit,
    24. 'user'=>$user
    25. ]), FILE_APPEND);
    26. }
    27.
    28.
    29.
    30. // = "trheyi committed R2:69733891ae4f: Feed.Hook {{pull}} (authored by trheyi).";
    31. $story = $_POST['storyText'];
    32. if ( preg_match("/([0-9a-zA-Z]+) committed (R[0-9]+):([0-9a-zA-Z]+):(.+)({{pull}})/", $story, $match ) ){
    33.
    34. $user = $match[1];
    35. $repo = $match[2];
    36. $version = $match[3];
    37. $commit = $match[4];
    38.
    39. pull( $repo, $version, $user, $commit );
    40. }
    41.
    42.
    43.
    44. $string = get([$_REQUEST, $_POST, $_GET]);
    45. file_put_contents("/data/web/phabricator.feed.log", $string, FILE_APPEND);
    46. echo "COMPLETE";
  • 相关阅读:
    postgresql小纪
    Java的大内存分页支持
    GCViewer / MAT
    js给数组去重写法
    解决mybatis foreach 错误: Parameter '__frch_item_0' not found
    JSON字符串和JS对象之间的转换
    使用IntelliJ IDEA搭建多maven模块JAVA项目
    jstl中的sql:query标签获取的结果如何格式化输出
    Label控件如何根据字符串自定义大小
    winform/窗体鼠标事件编程中的几个问题
  • 原文地址:https://www.cnblogs.com/purpleraintear/p/6486148.html
Copyright © 2020-2023  润新知