为Toolforge基础设施组件共享Python代码
项目描述
python3-toolforge-weld
为Toolforge基础设施组件共享Python代码。
本地开发环境(指南)
在debian上使用tox进行测试
克隆仓库(说明见此处 https://gitlab.wikimedia.org/repos/cloud/toolforge/toolforge-weld)。
安装tox(这是唯一的debian特定部分)
~:$ apt install tox
移动到您克隆的仓库目录,并运行tox
/path/to/repo/toolforge-weld:$ tox
这将运行测试并创建一个虚拟环境,您可以使用它手动调试您需要的任何内容,进入它
/path/to/repo/toolforge-weld:$ source .tox/py3-tests/bin/activate
构建Debian软件包
过程将是
- 创建新分支
- 增加版本号
- 构建和部署软件包
- 将软件包上传到toolforge仓库
- 合并PR和创建版本
让我们开始吧!
创建新分支
要开始,从main创建一个新分支
~:$ git checkout -b <new-branch-name>
增加版本号
更新变更日志和setup.py
-
为此,您可以运行脚本
~:$ utils/bump_version.sh
这将
- 从上一个标签的git日志中在
debian/changelog
中创建一个条目 - 在
setup.py
中增加版本号 - 创建所需的提交和标签。
- 从上一个标签的git日志中在
-
一旦完成,您应该推送新的提交和标签以供审查
git push -u origin <new-branch-name> git push origin <new_version>
您可以通过查看终端输出或运行
git tags --list
来查找新创建的标签的值
创建补丁并获取审查
在gitlab上,您应该基于上述PR创建一个补丁,然后审查changelog
和setup.py
的更改,确保这是您想要的(它使用您的姓名、电子邮件等),并请求审查。
构建和部署软件包
使用cookbook构建和部署(推荐)
注意:当前创建的PR必须处于打开状态,您才能使用此cookbook。如果您选择使用下面的更复杂的方法,则无需保持PR打开。
-
使用cookbook构建和部署已经大大简化。要这样做,只需运行
~:$ cookbook wmcs.toolforge.component.deploy --cluster-name toolsbeta --component toolforge-weld --git-branch bump_version
上面的命令将构建软件包,将其上传到toolsbeta软件包仓库,并在所有toolsbeta堡垒上安装它。要为tools做同样的事情,请使用
--cluster-name tools
。有关cookbook的详细信息,请参阅https://wikitech.wikimedia.org/wiki/Spicerack/Cookbooks
使用容器构建和部署
注意:这将不允许您签名您的软件包,因此如果您需要这样做,请尝试使用手动过程。
-
您可以使用以下命令构建软件包
path/to/repo/toolforge-weld:$ utils/build_deb.sh
第一次可能需要更多时间,因为它将构建核心镜像以构建软件包,并下载许多依赖项。下一次运行时,它不需要下载所有这些依赖项,因此会更快。
注意:如果安装软件包失败,请尝试传递
--no-cache
以强制重建缓存的层。 -
构建后,您还需要将构建的软件包上传到toolforge软件包仓库。有关详细信息,请参阅
上传到toolforge仓库
-
上传完成后,您还需要登录到工具和toolsbeta上的各种堡垒,手动安装该软件包。例如,要在toolsbeta堡垒6上安装
~:$ ssh toolsbeta-bastion-6.toolsbeta.eqiad1.wikimedia.cloud ~:$ sudo apt-get update && sudo apt-get install python3-toolforge-weld
检查我们为工具和toolsbeta有多少个堡垒非常重要,并且要对所有这些进行此操作。如果您没有这些信息,可以询问toolforge团队。
使用wmcs-package-build脚本的构建和部署
-
另一种选择是使用在operations/puppet仓库的modules/toolforge/files中找到的wmcs-package-build.py脚本。
$ ./wmcs-package-build.py --git-repo https://gitlab.wikimedia.org/repos/cloud/toolforge/toolforge-weld -a buster-toolsbeta -a bullseye-toolsbeta --git-branch main --build-dist=bullseye --backports --toolforge-repo=tools
该脚本将SSH到构建服务器,在那里构建软件包,并将其发布到两个仓库:
buster-toolsbeta
和bullseye-tooslbeta
。额外的参数
--backports, --toolforge-repo=tools --build-dist=bullseye
是必要的,因为构建需要Poetry和其他构建工具,这些工具在buster仓库中不可用。 -
如果该命令成功,然后您应该从“toolsbeta”复制软件包到“tools”发行版。有关详细信息,请参阅
上传到toolforge仓库
-
上传完成后,您还需要登录到工具和toolsbeta上的各种堡垒,手动安装该软件包。例如,要在toolsbeta堡垒6上安装
~:$ ssh toolsbeta-bastion-6.toolsbeta.eqiad1.wikimedia.cloud ~:$ sudo apt-get update && sudo apt-get install python3-toolforge-weld
检查我们为工具和toolsbeta有多少个堡垒非常重要,并且要对所有这些进行此操作。如果您没有这些信息,可以询问toolforge团队。
有关wmcs-package-build脚本的附加文档可在以下链接找到:https://wikitech.wikimedia.org/wiki/Portal:Toolforge/Admin/Packaging#wmcs-package-build
上传到toolforge仓库
如果您使用任何手动方法构建了软件包,您可以按照以下步骤上传:https://wikitech.wikimedia.org/wiki/Portal:Toolforge/Admin/Packaging#Uploading_a_package
合并PR和创建版本
根据您选择的部署方法,PR可能仍然开放。如果是这种情况,请记住合并PR并创建新的Gitlab版本。
项目详情
下载文件
下载您平台对应的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。