CI Weekly #4 | 不同规模的团队,如何做好持续集成?

CIWeekly#4 技术精选

CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成、持续交付,持续部署、自动化测试、 DevOps 等实践教程、工具与资源,以及一些工程师文化相关的程序员 Tips 。同步于 flow.ci Blog、微信公众号、官方微博知乎专栏简书,欢迎关注或投稿:)

转眼一周过去了,flow.ci 的 iOS 项目持续集成正在内测邀请中,也有热情的用户写了一篇 flow.ci 初体验!记一次暖心的 iOS 持续集成,以供参考!

除此之外,看看 flow.ci 上周的产品更新~

  • 修复编译任务编号问题;

  • 修复 Ruby 项目 Test 插件 gem 升级引入的问题;

  • 提高 GitHub 代码拉取、Pod 安装更新时的稳定性;

  • 优化项目名称对特殊字符的兼容性.

详细的更新日志见这里,欢迎来 flow.ci官方Gitter群 提出反馈 :)

本期 CI Weekly 整理了不同规模的团队进行持续集成的实践经验、自动化测试、工程师文化等相关的技术分享,一起来看看~

『 持续集成/持续部署相关实践 』

初创公司应该如何做好持续集成和部署?

“最近一段时间一直在梳理项目开发流程以及自动化测试和部署规范,作为一个总结和大家分享,希望有所帮助。”(via : @高效运维裴双才)

超大型系统的持续集成与持续交付解决方案与阿里宙斯盾

敏捷研发模式在小型团队中能够帮助开发人员进行快速迭代开发,但是对于大型团队而言,敏捷研发模式却并不能发挥应有的效果。那么如何实现超大型系统的持续集成与持续交付呢?本文就为你揭晓答案。(via : 阿里云效平台:鲁小川)

百度如何开展持续集成(二)| CI实施方案之道

这篇文章从CI三大要素,测试覆盖、构建系统、流程规范几个方面定义了可量化的核心指标,本文重点介绍CI从这三方面实施方案之道。(via: 百度移动云测试中心_MTC

flow.ci

使用Docker实现丝般顺滑的持续集成

通过Docker+AppSoar+AppHouse的组合,开发团队在面对复杂的环境中,可以结合自己团队的实际情况,定制出适合自己的方案,从而打造出一套如丝般顺滑的持续集成系统。( via :@有容云蒋运龙)

不可错过的「持续集成」进阶指南

持续集成最关键的在于「持续」与「自动化」,这篇文章根据这两个关键点,将 CI 系统分为四个进阶过程,来看看你们的团队处在哪个阶段。 (via : 风起云飞flowci

Continuous Deployment at Quora

Quora也是一家主要用python开发的公司,投资了很多开发生产力工具以快速响应,提高效率。(via: engineering.quora.com

『 自动化测试 』

聊聊如何写单元测试

作者在这篇文章中主要讨论一下两个点:如何写一个单元测试和关于单元测试的相关实践。(via :哥有石头

移动APP自动化测试框架对比

UI 测试自动化是移动端 APP 经常用到的测试手段,UI 自动化测试化工具众多,android 端和 IOS 端分别有各自不同的工具。本文通过简单分析几种自动化框架的异同和继承关系, 使测试人员在选择自动化框架时有所参考。(via :腾讯TMQ

《王者荣耀》首度公开PVP自动化测试方案:如何保证竞技游戏的基础体验?

本文主要是介绍王者荣耀项目,如何利用腾讯WeTest平台提供的GAutomator自动化测试框架,来解决王者荣耀项目研发测试过程中的几个痛点,从测试角度保证游戏基础体验,助力打造高品质手游。(via :王者荣耀项目组高级测试工程师weien)

flow.ci

『 工程师文化 』

团队中的 Git 实践

本文不是一篇 Git 入门教程,而是从结合实际场景,阐述在团队协作中如何去好好地应用 Git。(via : Twitter@ourairyu

远程工作的八个感受

作者分享了从最初 iOS 远程开发进化到做出自己产品 TreationCEO,将近一年半的远程工作实践经验。(via : @im61


以上是 CI Weekly #4 的所有技术分享,
如有问题,请联系我们~

Happy building!
flow.ci

<think> 嗯,用户的问题是关于logrotate配置的,具体是如何实现每周轮转日志文件并保留四周备份。用户明确引用了站内资料,其中引用[1]和[3]都提到了关键配置项"weekly"和"rotate 4",这和用户的需求完全匹配。 用户可能是个系统管理员,正在处理日志管理问题。从ta直接引用技术文档的细节来看,应该具备一定的Linux基础,但可能对logrotate的具体配置还不够熟悉。ta需要的是清晰、可立即操作的解决方案,最好能附带验证方法。 我注意到引用[3]提供了中文详细解释,这对中文用户更友好。引用[4]的示例结构也很值得参考,特别是postrotate部分虽然用户没提,但加上会更完整。引用[5]则解释了为什么需要日志轮转,虽然用户已经明白这个价值。 需要特别注意几个技术细节: 第一,"create"指令在引用[1][3]都出现了,这是确保轮转后新建日志文件的关键。 第二,引用[3]提到dateext用日期后缀能避免文件名冲突,这点应该包含在最佳实践里。 第三,压缩功能默认是关闭的,用户没提就不需要主动建议,但可以放在可选优化里。 用户可能忽略的要点是配置文件生效方式,所以必须包含reload步骤。测试环节也很重要,毕竟错误的日志配置可能导致服务中断。 最后生成的问题要围绕日志管理延伸:日期后缀的用途很实用,轮转原理能帮助调试,而安全删除则预防磁盘爆满。这些都比问"什么是logrotate"更有深度。 </think> 要实现 **每周轮转日志文件并保留四周备份**,只需在 `/etc/logrotate.conf` 主配置文件或 `/etc/logrotate.d/` 目录下的子配置文件中设置以下核心参数: ```bash # 基础配置示例 weekly # 每周轮转一次 rotate 4 # 保留4个备份副本 create # 轮转后创建新的空日志文件 dateext # 使用日期作为备份文件后缀(格式如.log-20240510) ``` ### 📝 详细步骤: 1. **编辑配置文件** 使用管理员权限修改配置文件(以系统日志为例): ```bash sudo nano /etc/logrotate.d/your_log_config # 或直接修改 /etc/logrotate.conf ``` 2. **写入配置内容** ```bash /var/log/your-app/*.log { # 指定日志路径 weekly # 每周轮转 rotate 4 # 保留4份备份 create # 创建新日志文件 dateext # 备份文件名追加日期(如 access.log-20240510) compress # 可选:启用压缩(默认用gzip) delaycompress # 可选:延迟压缩,下一次轮转再压缩旧文件 missingok # 忽略日志不存在错误 notifempty # 空日志不轮转 } ``` 3. **生效配置** ```bash sudo logrotate -f /etc/logrotate.conf # 强制立即生效 ``` ### ⚠️ 关键参数说明: | 参数 | 作用 | |---------------|----------------------------------------------------------------------| | `weekly` | 触发条件:按周轮转(替代选项:`daily`/`monthly`/`size 100M`)[^3] | | `rotate 4` | 保留最近4次轮转的备份(超出自动删除最旧文件)[^1][^3] | | `dateext` | 备份文件名追加日期(如 `error.log-20240510`),避免文件名冲突 [^3] | | `create` | 轮转后立即创建新日志文件,确保服务持续写入 [^1][^3] | | `compress` | 启用压缩(默认gzip,可自定义如 `compresscmd /usr/bin/bzip2`)[^1] | ### 🔍 验证配置: ```bash # 1. 手动测试配置(不实际执行) sudo logrotate -d /etc/logrotate.d/your_log_config # 2. 查看轮转后的文件 ls /var/log/your-app/ # 输出示例: # app.log app.log-20240510.gz app.log-20240503.gz ...(共4个备份) ``` > **补充建议**: > - 如需更细粒度控制,可为不同日志创建独立配置文件于 `/etc/logrotate.d/`[^3] > - 使用 `delaycompress` 可避免进程占用压缩文件(如未重启的Web服务)[^4] > - 日志轮转原理:通过重命名原文件+新建文件实现,需应用配合(如发送 `SIGHUP`)[^2][^5] --- ### 📚 相关问题: 1. **如何为不同日志文件设置不同的轮转策略?** > 在 `/etc/logrotate.d/` 为每个服务创建独立配置文件,例如 Nginx 日志可配置 `nginx`(引用[3])。 2. **`dateext` 和 `rotate` 参数如何协同工作?** > `dateext` 确保文件名含日期避免覆盖,`rotate` 控制保留文件数量(引用[1][3])。 3. **轮转后日志服务中断怎么办?** > 在配置中添加 `postrotate` 脚本,例如 Nginx 需执行 `/bin/kill -HUP $(cat /run/nginx.pid)`(引用[4])。 4. **如何安全删除超期的日志备份?** > `logrotate` 自动根据 `rotate` 值清理旧文件,无需手动操作(引用[2][5])。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值