Categorygithub.com/nnsay/devops-tools
modulepackage
0.1.9
Repository: https://github.com/nnsay/devops-tools.git
Documentation: pkg.go.dev

# README

1. Devops-TOOLS

本项目编写一些日常运维的小工具, 本项目使用spf13/cobra为命令行开发开发, 目前支持的工具如下

  • AWS 类
  • Monorepo 类

2. AWS 类

该类型的工具需要具有 aws 访问权限, 如果需要发送通知, 还需要配置 Slack:

2.1 删除过期的 IAM 证书

作用: 删除已经过期的 IAM 证书

使用方法:

# use alias command
devops-tools iam dec
# use fullname command
devops-tools iam delete-expired-certification

参数说明:

参数名称别名描述默认值
expiratione指定过期时间, 格式为时间戳time.Now()
path-prefixp证书路径/cloudfront/
TIME_OFFSET_HOURS时区偏移小时数0

2.2 检查临期 IAM 证书

作用: 检查即将过期的证书并提醒, 提醒消息发送到 Slack(需配置 SLACK_HOOK)

使用方法:

# use alias command
devops-tools iam ccd
# use fullname command
devops-tools iam check-certification-date

参数说明:

参数名称别名描述默认值
expire-hourse剩余过期小时数72
path-prefixp证书路径/cloudfront/
channelcSlack Channel#devops
SLACK_TOKEN必选, Slack 自定义应用 Auto Token 地址环境变量
ENV_NAME可选, 如果有多个环境可以指定环境名称环境变量
TIME_OFFSET_HOURS时区偏移小时数0

提醒消息: 提醒消息

2.3 检查未变更的 Cloudformation

作用: 检查超过指定天数的未变更的 Cloudformation Stack 并发送提醒消息

使用方法:

# use alias command
devops-tools cloudformation cec
# use fullname command
devops-tools cloudformation checkExpirationCloudformation

参数说明:

参数名称别名描述默认值
daysd多少天未更新10
channelcSlack Channel#devops
SLACK_TOKEN必选, Slack 自定义应用 Auto Token 地址环境变量
ENV_NAME可选, 如果有多个环境可以指定环境名称环境变量
WHITE_STACK_NAMES可选, stack 白名单,多个以逗号分隔环境变量
TIME_OFFSET_HOURS时区偏移小时数0

提醒消息: 提醒消息

3. Monorepo 类

Monorepo 基于Nx的实践, 不过该类工具设计时与具体哪种 Monorepo 无关, 主要是解决 Monorepo 中的痛点问题.

3.1 代码覆盖率报告

依赖前提:

测试覆盖率报告需要是json-summary格式, Istanbul 是事实上的代码测试覆盖率标准, 其支持产生的代码覆盖率报告格式有很多种, 常见的如 json, json-summary, text, lcov 等, 详情可以查看这里

作用:

  • 基于 Monorepo 的多项目的代码覆盖率报告, 覆盖率报告以项目分组
  • 支持检测代码覆盖率阈值检查, 目前检查的是 statement 指标, 如果有低于阈值的覆盖率则会产生.exit 文件

使用方法:

# use alias command
devops-tools monorepo ccr
# use fullname command
devops-tools monorepo codeCoverageReport

参数说明:

参数名称别名描述默认值
coverageDird覆盖率报告目录, 一般层级是: 覆盖率报告目录/应用目录/覆盖率报告文件{tmp/packages}
limitTargetlstatement 最低覆盖率阈值-1
reportPathr自定义覆盖率报告产生位置tmp/report.md
ignoreProjectsi需要忽略的项目, 多个的话使用逗号分隔""

报告展示:

展示结果以默认参数为例, 聚合的自定义覆盖率报告./tmp/report.md 内容如下:

# Coverage report

| App  | Lines      | Statements | Branches   | Functions  |
| ---- | ---------- | ---------- | ---------- | ---------- |
| app1 | 🟢 100.00% | 🟢 100.00% | 🟢 100.00% | 🟢 100.00% |
| app2 | 🟢 90.13%  | 🟢 89.90%  | 🟡 66.06%  | 🟢 90.61%  |
| app3 | 🟢 100.00% | 🟢 100.00% | 🟢 100.00% | 🟢 100.00% |
| lib1 | 🟢 89.22%  | 🟢 87.82%  | 🟡 66.66%  | 🟢 93.33%  |

如果指定了覆盖率阈值, 且任意 Monorepo 项目中有低于阈值的项目会被另外统计且产生与自定义覆盖率报告同名但是结尾是.exit的文件, ./tmp/report.md.exit 内容如下:

app2 statements coverage 90.36 is lower than the limition target 100 !
civil-toolkit statements coverage 87.82 is lower than the limition target 100 !
lib1 statements coverage 84.44 is lower than the limition target 100 !

扩展使用:

该工具可以结合 gh 一起使用, 可以在流水线中显示覆盖率报告或者让低覆盖流水任务失败, 这部分技巧可以参考: 3. 配合 Github Workflow 使用

# Packages

Copyright © 2023 Jimmy Wang <[email protected]> */.
No description provided by the author