一觉醒来,我的 PR 已经被 Merge 到 CPython 主分支了!

昨晚,哄完女儿睡觉已经是午夜十二点了。我回到自己的屋里,打开 GitHub,看看当晚有没有什么可以贡献的项目。

这次,我决定去 CPython 的 Issue 区找找有没有适合自己的贡献机会。

CPython 就是大名鼎鼎的 Python 编程语言的官方代码仓库。

其实,早就想找机会为 CPython 贡献代码,但一直没能迈出第一步。这次,我想用自己的方式寻找突破口。

这种想法的启发,来自 Tian Gao(GitHub ID:gaogaotiantian),他是 Python 的 Core Developer(核心开发者),专注于维护 pdb,并曾跻身 Python 贡献排行榜 #94 名。他可能是唯一一个前 100 名的中国开发者。

于是,我筛选了一些自己感兴趣的类别,当然就是 Infra 和 DevOps 相关的问题。很快,我找到了一张合适的 Issue,修改代码、测试、提交 Pull Request,然后就去睡觉了。

今天早上醒来,我发现我的 PR 已经被 Merge 到 CPython 主分支了!

第一个 CPython PR

虽然这算不上什么了不起的成就,但却是一个很好的学习过程。比如,通过参与优秀的开源项目,了解他们是如何管理 Issue 和 Pull Request 的,学习他们做得好的地方。这些经验都有可能应用到自己的工作或项目中。

在贡献优秀开源项目的过程中,不仅能提升相关技能,还能与这些优秀的开发者交流,学到新的知识。

从短期来看,或许不会带来直接的收益,但如果这是你真正热爱的事情,那么长期投入一定是值得的。

假如拥有 Python Core Developer 这样的身份认可,在国内可能有助于获得更理想的工作机会。然而,并非所有公司都青睐这种“双时区开发者”(白天工作,晚上开源)。

但如果你的目标是寻找远程工作,或者申请欧美国家的签证,这样的经历无疑会成为一个重要的加分项。


转载本站文章请注明作者和出处,请勿用于任何商业用途。欢迎关注公众号「DevOps攻城狮」

为什么我选择参与 EuroPython 2025 评审?

最近工作之余没怎么贡献代码,主要把时间都用在了评审 EuroPython 2025 (欧洲 Python 2025 大会)的提案上了。

EuroPython 2025

在国内的时候,我从未想过去参与某个活动,并当志愿者服务大家。但是来到欧洲,我突然想多参加点这样的活动。

下面就说说我为什么选择参加志愿者工作,以及最近一周的支援活动有哪些收获和感悟。

Read More

🚀 gitstats 升级来袭:支持 JSON 输出、多平台兼容、代码重构!

大家好!自从上次发文宣布开始维护 gitstats 以来,我一直在不断地改进这个项目,下面是这两个月的主要更新内容:

✨ 新增功能与改进

Read More

How to use Jenkins Docker Cloud

Recently, I am working on Jenkins instance migration, this time I started to use Jenkins Docker Cloud insead of use docker { ... } in Jenkinsfile.

Jenkins cloud plugin

First you need to install Jenkins Docker Cloud plugin https://plugins.jenkins.io/docker-plugin/

Jenkins Docker Cloud is a plugin that allows Jenkins to use Docker containers as build agents.

So you need to config a Docker Host with remote API as follows.

Read More

CPython 停止更新 Copyright 了,为什么?

最近逛 CPython 的仓库发现了这个 Issue gh-126133:

Hugo van Kemenade 他作为 Python 3.14 & 3.15 发布经理提出是否可以停止更新 Copyright。

在工作中,我其中的职责之一也是发布,因此我这个想法的提出也非常感兴趣,跟 CPython 项目一样,我们的项目在每年的年初都要更新 Copyright。

下面我们就一起来看看 Hugo 提出的理由以及最终这个想法被 Python 项目法律团队采纳并最终合并到 CPython 的主分支的过程。

Read More

2024 年终总结

时间过得很快,2024 年即将过去。如果不记录下在这一年里发生的事情,过不了多久就很难回想起这一年都发生了什么。按照惯例,这篇年终总结如期而至。

回看自己年初写下的 Flag,有些实现了,有些做了但不是很好,还有一些没有做到。

Read More

我的女儿

女儿已经两岁七个月了,我还没有单独写过一篇关于她的文章。

我的女儿是个好动的小姑娘,每天充满活力,以至于经常我从下班到家六点半一直陪她到半夜十二点多才能停下来睡觉。

今天是周五晚上,十二点半了还是蹦蹦跳跳不想睡觉,终于在凌晨一点钟熄灯睡觉了。但她突然下床要吃苹果。

Read More

复活 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