openxtrem/ox-bundle-installer

PHP应用程序,用于安装OX Mediboard应用程序


README

描述

一个用PHP编写的命令行应用程序,用于管理OX Mediboard软件安装。

安装

composer create-project openxtrem/ox-bundle-installer

用法

bin/console [command] [arguments]

可用命令

命令描述
auto-update以非交互模式运行自动更新过程
browse浏览并显示可用的包
build构建包依赖项和资源
config加载并验证配置文件
deploy将包从主目录部署到目标服务器目录
help显示命令的帮助信息
install运行同步、构建和最终部署命令
list列出命令
sync将包内容同步到本地主目录

二进制要求

二进制版本
php7.3
composer2.0
rsync3.1.3
rclone1.56.0

应用程序 config 命令允许检查这些要求。

配置

config 目录下创建一个名为 parameters.yml 的配置文件。

使用 config/parameters.yml-dist 文件作为模板。

远程身份验证

OX-ERP

要获取要安装的包的信息和状态,需要在OX-ERP上进行身份验证。

auth:
  erp:
    url: https://sample-erp.openxtrem.com
    api_token: IdkIfThisIsGood

OX-Deploy

OX-Deploy是托管包的服务器的别名。

要下载本地包内容,需要在OX-Deploy上进行身份验证。

  oxdeploy:
    url: sample.openxtrem.com
    protocol: https
    http_user: user
    http_token: ToKeN
    prefix: /var/www/deployment
    transport_method: rclone

有两种传输方法可用:rclonersync

当使用 rclone 传输方法时,需要 protocolhttp_userhttp_token 参数。

rsync 方法要求本地服务器可以通过SSH协议访问OX-Deploy服务器。

包通过其唯一的ID来标识。

bundle:
  uuid: abcd1234-ef56-gh78-ij90-klmno12345

虽然此参数不是手动安装包所必需的,但它必须设置,以便可以执行自动更新。

目标

master:
  path: /var/master
  name: prod
  server_id: 1
instance:
  name: INSTANCE_NAME
  token_hash: 27dab2832d4568dfa8b60ab389398b893405f543
  servers:
    -
      path: "/var/path_to/instance/a"
      shortname: "Instance A"
      id: 44
      server_id: 1
      web_path: "path_to/instance/a"
      no_webserver: yes
    -
      path: "user@host:/var/path_to/instance/b"
      shortname: "Instance B"
      id: 44
      server_id: 2
      web_path: "path_to/instance/b"

master:path 是将OX-Deploy服务器上的包内容复制到的本地路径。

如果该目录尚未存在,并且权限允许这样做,则将创建此目录。

实例

实例 token_hash 是用于从webservers检索实例状态(有效、过时、损坏)的认证令牌。

服务器

至少必须配置一个服务器。此外,每个配置的路径 必须 存在或手动创建(对于本地和远程目标)。

开发和测试

使用以下命令设置开发用的docker容器

docker-compose up -d
docker exec -it ox-bundle-installer-app-1 bash

项目源代码在容器内挂载到 /var/www/html 目录下的卷。

容器内

# Install dependencies
composer install

运行测试

# Run tests
XDEBUG_MODE=coverage vendor/bin/phpunit