承接 novaway/deployer-release-check-list 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

novaway/deployer-release-check-list

Composer 安装命令:

composer require novaway/deployer-release-check-list

包简介

Release check-list for Deployer

README 文档

README

A simple recipe for Deployer to manage a release check-list using Gitlab issues.

The idea is to handle a list of mandatory (and non-blocking) tasks for a release.
This is made possible using a Gitlab issue (with its tasks system), with specific title and label (customisable).

Installation

composer require novaway/deployer-release-check-list

Configuration

// deploy.php
<?php

//...

require 'recipe/release_check_list.php';

set('rcl_gitlab_host', 'https://gitlab.example.com');
set('rcl_gitlab_api_key', 'MY_API_TOKEN');
set('rcl_gitlab_project_id', 'MY_PROJECT_ID');

Usage

First, create a Gitlab issue with:

  • a label named "Release check-list" (can be customized, see options below)
  • a title following the format "[MAJOR.MINOR.x] My awesome check-list".

For example: "[1.8.x] My awesome check-list".

This issue will match all deployments based on a git tag beginning with 1.8:

bin/dep deploy prod --tag=1.8.6

Within the issue, you need to create a (one-level) task list:

Gitlab issue

Each task accepts two types of optional flags:

  • one for the targeted Deployer host: prod, staging, ...
  • one for tasks that need to be done after the deployment: post-release (non-flagged tasks will be mandatory for the deployment and throw an error if not marked as done)

Example:

- [ ] Task 1 [prod,staging]
- [ ] Task 2 [prod,post-release]
- [ ] Task 3
  • Task 1 will be mandatory before the deployment on prod and staging hosts
  • Task 2 will be non-blocking for the deployment on prod host, but will be reminded once the deployment is successful
  • Task 3 will be mandatory before the deployment on all hosts

Options

Customizing the Gitlab label

set('rcl_gitlab_label', 'Foo list');

Customizing how to get the release version

By default, rcl_release_version is based on input()->getOption('tag').

set('rcl_release_version', get('my_release_version'));

Examples

In case of an uncompleted mandatory task:
Uncompleted task

Reminder for post-release tasks:
Post-release task

Bonus

Get a slack notification for uncompleted post-release tasks (considering you already configured the slack recipe):

// deploy.php
use Deployer\Task\Context;
use Deployer\Utility\Httpie;

task('rcl:post-release-slack-reminder', function() {
    if (!get('slack_webhook', false)) {
        return;
    }

    $pendingPostReleaseTasks = get('rcl_pending_post_release_tasks', []);
    if (count($pendingPostReleaseTasks) === 0) {
        return;
    }

    $text = implode(PHP_EOL, array_map(function($item) {
       return '- '.$item[1];
    }, $pendingPostReleaseTasks));

    $host = Context::get()->getHost()->getHostname();

    $attachment = [
        'title' => sprintf('[%s][%s] Pending post-release tasks:', $host, get('release_version')),
        'text' => $text,
        'color' => get('slack_color'),
        'mrkdwn_in' => ['text'],
    ];

    Httpie::post(get('slack_webhook'))->body(['attachments' => [$attachment]])->send();
});

after('success', 'rcl:post-release-slack-reminder');

novaway/deployer-release-check-list 适用场景与选型建议

novaway/deployer-release-check-list 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2.38k 次下载、GitHub Stars 达 1, 最近一次更新时间为 2020 年 01 月 16 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「release」 「deployer」 「check-list」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 novaway/deployer-release-check-list 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 novaway/deployer-release-check-list 我们能提供哪些服务?
定制开发 / 二次开发

基于 novaway/deployer-release-check-list 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 2.38k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 14
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 8
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2020-01-16