复活 GitStats:让 Git 历史分析焕发新活力

最近的晚上的时间(一般要等到孩子睡了)我正在做一件事:复活已经沉寂多年的 GitStats 项目。

此前,我曾写过两篇关于 GitStats 的文章,如果感兴趣,可以查阅了解。

Read More

pip vs pipx 的区别

pip vs pipx 的区别

在 Python 的生态中,pippipx 都是用于管理包的软件工具,但它们有不同的设计目标和使用场景。有些同学可能会疑惑,两者到底有什么区别?该如何选择?


Read More

用于 DevOps 的 Nix 和 NixOS

当 CI 或更糟的是生产发生灾难性故障时,“在我的计算机上工作”一直是毫无帮助的答案。除其他外,Nix 是一种通过提供可重复、声明性和可靠的系统来解决此问题的方法。这使得它成为通常称为 DevOps 的两个方面的绝佳工具:操作系统的开发和流程。这篇文章将通过一个实际示例展示这两个方面,但首先,让我们从鸟瞰的角度看看这些承诺到底意味着什么。

Read More

Commit Check 更新:新增两个实用功能提升代码质量保障

最近有用户提出两个需求:一是支持在 Pull Request 中增加评论,二是检查 Pull Request 是否已经 rebase。

经过几晚的努力,现在正式宣布在最新的 commit-check 以及 commit-check-action 中新增两个重要功能:pr-commentsbase-merge

这两个功能旨在进一步提升 Pull Request (PR) 的检查能力。

Read More

PowerShell is not recognized as an internal or external command

Recently, while setting up a new Windows Server 2022, I encountered an issue where my Ansible playbook, which previously worked without problems, failed to execute.

Here’s the configuration I used for the Windows host in my Ansible inventory:

Read More

从早到晚,我的 DevOps 一天

很多人可能会好奇,作为一名 DevOps 工程师,每天究竟忙些什么呢?今天就来简单聊聊,作为 DevOps/Build/Release 工程师,我的日常工作节奏是怎样的。

工作准备

每天早上九点半到公司,第一件事就是打开 Slack 和邮箱,优先处理那些紧急或容易回复的消息。遇到比较复杂的内容,就会设置提醒,以防漏掉。之后,会把当天的任务列入 To-Do List,再检查 Jenkins 上是否有失败的任务需要关注。这一系列动作大概会花半小时左右。

Read More

What Optimizations I Made During the Jenkins Upgrade

Background

Recently, I’ve been working on migrating and upgrading Jenkins. The main motivation is the vulnerability CVE-2024-23897.

Jenkins 2.441 and earlier, LTS 2.426.2 and earlier does not disable a feature of its CLI command parser that replaces an ‘@’ character followed by a file path in an argument with the file’s contents, allowing unauthenticated attackers to read arbitrary files on the Jenkins controller file system.

To address this, Jenkins needs to be upgraded to at least version 2.442 or LTS 2.426.3 or above. This was also an opportunity to rework parts of the setup that weren’t initially optimized.

Read More

从 Jenkins 升级,我做了哪些优化

背景

我最近在做的一件事情是迁移并升级 Jenkins。主要动机是因为这个漏洞 CVE-2024-23897

Jenkins 2.441 及更早版本、LTS 2.426.2 及更早版本未禁用其 CLI 命令解析器的一项功能,该功能会将参数中文件路径后的“@”字符替换为文件内容,从而允许未经身份验证的攻击者读取 Jenkins 控制器文件系统上的任意文件。

因此需要将 Jenkins 至少升级到 2.442 或 LTS 2.426.3 及以上版本,也趁此机会重新重构之前没有做满意的部分。

Read More

选择往往比努力更重要

偶尔深夜躺下时,我常常在想,我是怎么就走到这了?这都是源于毕业后的一系列选择吧!

也时常感慨,选择往往比努力更重要。回顾过去十余年,这几个决定对我走到今天起到了至关重要的影响。

Read More

DevOps进阶:揭秘首席DevOps工程师的职责与技能

想象一下,你是一名 DevOps 工程师,不论初级、中级还是高级,老板总有一天拍拍你的肩膀说:“加油干,兄弟,未来你就是我们的首席 DevOps 工程师了!”你可能会心想:“啥是首席 DevOps?这是个什么新饼?”

今天就带你了解一下,所谓的“首席 DevOps 工程师”到底干啥,职责是什么?

我们一起看看,顺便找准未来的职业发展方向。毕竟,谁都希望能进阶到高级角色嘛,对吧?

Read More

约定式分支规范中文版正式发布!

上周正式发布《约定式分支规范》后,受到了广泛关注,不少人询问何时推出中文版。

经过一周末的努力,中文版已正式上线,详情请访问:**https://conventional-branch.github.io/zh/**。

此外,我们对原始版本进行了部分细微调整。以下为《约定式分支规范》中文版的完整内容。

Read More

Conventional Branch Specification Released!

Summary

Conventional Branch refers to a structured and standardized naming convention for Git branches which aims to make branch more readable and actionable. We’ve suggested some branch prefixes you might want to use but you can also specify your own naming convention. A consistent naming convention makes it easier to identify branches by type.

Read More

初步了解 PyPA(Python Packaging Authority)下的知名项目和关系

PyPA(Python Packaging Authority)是管理和维护 Python 包相关工具的一个社区组织。PyPA 管理的知名项目包括 pip、packaging、setuptools、wheel、twine、build 等等。了解这些项目的关于有助于我们更好的了解 Python 的生态系统。

以下是这些项目的介绍以及它们之间的关系:

Read More

我记得

最近开车的时候我总爱听赵雷的歌,尤其是那首《我记得》。

我觉得这首歌就是回忆的交响曲,每每听到就仿佛看到了一部老电影。它像是一种声音,一种触动人心的触感,让我们回忆起那些已经消逝的时光,反思我们的生活方式和人生的方向。

Read More

告别Rocket中国,回连十年再启程

​今天(6月28日)是我在Rocket中国分公司的最后一天,也是效力的第十个年头。这是我职业生涯中效力过最长的一家公司,想借此机会写下一些文字,为这十年画上一个句号。

光阴似箭,岁月如梭。转眼间,十年悄然逝去。唯有认真努力地生活,才能不被时光的流逝所感叹。我一直很喜欢的一句话是:“种一棵树最好的时间是十年前,其次是现在。

Read More