限制容器在 Docker 输出的日志大小

默认情况下,Docker 容器如果不被销毁的话,那么它的日志会一直保留。如果我们有一个连续运行一年的 NGINX 服务容器,那么它的日志文件就会非常大。 Docker 容器的日志都会挂在到 /var/lib/docker/containers/ 文件夹下,并且以下面的格式进行命名。

1
/var/lib/docker/containers/<container id>/<container id>-json.log

有三种方式限制日志大小,默认情况是全局设置,这样设置的话会对所有容器进行应用。

使用 NGINX 转发 Github Pages 站点

背景

新的 Blog 是基于 Hugo 搭建的,原始博客内容和生成的静态资源,都是托管在 Github 仓库里面的。但 Github Pages 有时候会抽风,并且访问速度并不是很稳定,因此萌生了使用 NGINX 反向代理 Github Pages 的想法。

解决

基本原理就是将目标站点(Github Pages) 作为一个 upstream 服务,然后 NGINX 负责将所有流量都转发到 upstream 即可。因此,我们的配置文件编写就比较简单了,只需要注意 Host 等信息需要使用 upstream 站点的信息(Github Pages)。

使用 ssl on 时,NGINX 提示 Warn

现象

部分站点配置启用了 SSL 证书,启动站点的时候提示 warn。

default.conf

1
2
3
4
5
6
7
8
server{
    listen 443 ssl http2;
    server_name something.example.com;

    ssl on;
    
    # ...
}

Shell 输出

1
2022/09/27 09:39:10 [warn] 1#1: the "ssl" directive is deprecated, use the "listen ... ssl" directive instead in /etc/nginx/conf.d/default.conf:5

原因

C# 使用 AltCover 获得代码覆盖率 - E2E Test 和 Unit Test

背景

在 CI/CD 流程当中,测试是 CI 中很重要的部分。跟开发人员关系最大的就是单元测试,单元测试编写完成之后,我们可以使用 IDE 或者 dot cover 等工具获得单元测试对于业务代码的覆盖率。不过我们需要一个独立的 CLI 工具,这样我们才能够在 Jenkins 的 CI 流程集成。

端到端测试(End to End Test) 是在 Preview 版本部署完成之后,需要对 Preview 版本进行自动化测试,测试完成之后输出对应的覆盖率报告。根据代码覆盖率报告,我们可以了解 QA 编写的测试用例,是否完整覆盖了所有分支流程。

实现

工具选型

单元测试框架我选择的是 xUnit,它对于 .NET Core 与 .NET Framework 的支持都不错,并且也提供了独立于 IDE 之外的 Console Runner,可以很方便地同 Jenkins 集成。

覆盖率收集工具我选择的是 AltCover,因为它能够收集到部署在 IIS 的 ASP.NET MVC 程序覆盖率指标,这样我们就能够对一些 .NET Framework 老项目进行测试覆盖率汇总计算。AltCover 可以生成多种格式的覆盖率报告,默认格式是 OpenCover。

AltCover 生成的覆盖率报告并不是直接可读的,我们需要一个工具来生成人类可以阅读理解的报告。这里我选择的是 ReportGenerator ,它支持 OpenCover 格式的覆盖率报告,并生成对应的 HTML 文件方便查看。

Built with Hugo
主题 StackJimmy 设计