diff --git a/deploy/composer.json b/deploy/composer.json index 360a7f8..996a077 100644 --- a/deploy/composer.json +++ b/deploy/composer.json @@ -1,6 +1,7 @@ { "require": { "workerman/workerman": "^4.1", - "vlucas/phpdotenv": "^5.4" + "vlucas/phpdotenv": "^5.4", + "monolog/monolog": "^2.9" } } diff --git a/deploy/composer.lock b/deploy/composer.lock index 679daa9..002944b 100644 --- a/deploy/composer.lock +++ b/deploy/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "cd4ea50f549a10cff3e9dd372d344680", + "content-hash": "6357126a1380521e0a5719dce93ce048", "packages": [ { "name": "graham-campbell/result-type", @@ -74,6 +74,108 @@ ], "time": "2022-07-30T15:56:11+00:00" }, + { + "name": "monolog/monolog", + "version": "2.9.1", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f259e2b15fb95494c83f52d3caad003bbf5ffaa1", + "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2@dev", + "guzzlehttp/guzzle": "^7.4", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "phpspec/prophecy": "^1.15", + "phpstan/phpstan": "^0.12.91", + "phpunit/phpunit": "^8.5.14", + "predis/predis": "^1.1 || ^2.0", + "rollbar/rollbar": "^1.3 || ^2 || ^3", + "ruflin/elastica": "^7", + "swiftmailer/swiftmailer": "^5.3|^6.0", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/2.9.1" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2023-02-06T13:44:46+00:00" + }, { "name": "phpoption/phpoption", "version": "1.9.1", @@ -155,6 +257,56 @@ ], "time": "2023-02-25T19:38:58+00:00" }, + { + "name": "psr/log", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.4" + }, + "time": "2021-05-03T11:20:27+00:00" + }, { "name": "symfony/polyfill-ctype", "version": "v1.27.0", @@ -585,5 +737,5 @@ "prefer-lowest": false, "platform": [], "platform-dev": [], - "plugin-api-version": "2.1.0" + "plugin-api-version": "2.0.0" } diff --git a/deploy/start.php b/deploy/start.php index efb3bbf..ea5bd13 100644 --- a/deploy/start.php +++ b/deploy/start.php @@ -4,19 +4,22 @@ use Workerman\Worker; use Workerman\Connection\TcpConnection; use Workerman\Protocols\Http\Request; use Dotenv\Dotenv; +use Monolog\Logger; +use Monolog\Handler\StreamHandler; require_once __DIR__ . '/vendor/autoload.php'; // 加载.env文件 $dotenv = Dotenv::createImmutable(__DIR__); $dotenv->load(); +// 创建日志记录器 +$log = new Logger('workerman'); +// 添加日志处理程序,将日志写入文件 +$log->pushHandler(new StreamHandler(__DIR__ . '/workerman.log', Logger::INFO)); $worker = new Worker('http://0.0.0.0:8787'); -$worker->onConnect = function ($connection) { - echo "New connection\n"; -}; - -$worker->onMessage = function (TcpConnection $connection, Request $request) { +$worker->onMessage = function (TcpConnection $connection, Request $request) use ($log) { + $log->info('Received POST data', $request->post()); $work_dir = isset($_ENV['WORK_DIR']) ? $_ENV['WORK_DIR'] : null; $branch = isset($_ENV['BRANCH']) ? $_ENV['BRANCH'] : null; $git_url = isset($_ENV['GIT_URL']) ? $_ENV['GIT_URL'] : null; @@ -28,11 +31,14 @@ $worker->onMessage = function (TcpConnection $connection, Request $request) { if ($git_url === $ssh_url || $git_url === $clone_url) { chdir($work_dir); shell_exec("sh auto_build.sh > /dev/null &"); - $connection->send("Deployment finished\n"); + $connection->send("finished\n"); $connection->close(); + return; } } } + $connection->send("done\n"); + $connection->close(); }; // 运行worker