【问题标题】:How to log deployments in Deployer?如何在 Deployer 中记录部署?
【发布时间】:2020-04-28 08:59:45
【问题描述】:

我正在使用Deployer 并享受它。

有一件事我还没想好怎么做,就是写一个我的部署日志文件。

我正在尝试将提交哈希和日期附加到 revisions.txt:

task('log_the_deployment', function () {//https://stackoverflow.com/a/4546755/470749
    $selectedStage = Deployer::get()->getInput()->getArgument('stage'); //https://github.com/deployphp/deployer/blob/6180366acff3ca5b2ec511a84e671321c02e7af1/recipe/config/hosts.php#L15
    runLocally('set -e'); //https://deployer.org/docs/api.html#runlocally
    runLocally('commit_short_hash=$(git rev-parse --short HEAD)');
    runLocally('commit=$(git log -1 --pretty="%H%n%ci")');
    runLocally('commit_hash=$(echo "$commit" | head -1)');
    runLocally('commit_date=$(echo "$commit" | head -2 | tail -1)');
    runLocally('branch_name=$(git symbolic-ref -q HEAD)');
    runLocally('branch_name=${branch_name##refs/heads/}');
    runLocally('branch_name=${branch_name:-HEAD}');
    runLocally('echo -e "$commit_date ' . $selectedStage . ' $commit_short_hash branch=\'$branch\' $commit_hash" >> releases.txt');//TODO: prepend instead https://stackoverflow.com/questions/10587615/unix-command-to-prepend-text-to-a-file
});

结果应该类似于:2020-01-09 22:07:00 -0500 staging 146f012d branch='master' 146f012d28d866105aa12605cec6f374d45aec75

不幸的是,我的任务目前只将这个写入文件:-e staging branch=''

我对 Deployer、runLocally、git 或 Unix 有什么误解?

如果有更好的方法来实现我的目标,我很乐意走一条完全不同的道路。

【问题讨论】:

    标签: git shell unix deployment php-deployer


    【解决方案1】:

    将它们组合成一行似乎可以使其工作:

    task('log_the_deployment', function () {
        $selectedStage = Deployer::get()->getInput()->getArgument('stage');
        runLocally('set -e && deployed_moment=$(date +\'%Y-%m-%d %H:%M:%S UTC\') && commit_short_hash=$(git rev-parse --short HEAD) && commit=$(git log -1 --pretty="%H%n%ci") && commit_hash_and_date=$(echo $commit | head -1) && commit_date=$(git show -s --format=%ci) && symbRefHead=$(git symbolic-ref -q HEAD) && echo "Deployed $deployed_moment to ' . $selectedStage . ' from branch \"$symbRefHead\"; Commit: $commit_hash_and_date $commit_short_hash" >> " >> releases.txt');
        upload('releases.txt', '{{release_path}}/releases.txt');
    });
    

    然后我创建了这样的路线:

    Route::get('release', function () {
        $publicDir = getcwd();
        $deployments = file($publicDir . "/../releases.txt", FILE_IGNORE_NEW_LINES);
        return response()->json(['folder' => $publicDir, 'deployments' => array_reverse($deployments)], 200, [], JSON_PRETTY_PRINT);
    });
    

    这些帖子有帮助:

    【讨论】:

      猜你喜欢
      • 2017-05-20
      • 2022-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-25
      相关资源
      最近更新 更多