簡體   English   中英

python tox,創建rpm virtualenv,作為ci管道的一部分,不確定工作流中的位置

[英]python tox, creating rpm virtualenv, as part of ci pipeline, unsure about where in workflow

我正在研究Python應用程序如何也可以使用CI管道,但是我不確定如何創建標准工作流程。

Jenkins用於進行初始存儲庫克隆,然后啟動tox。 基本上,這是maven和/或msbuild可以獲取依賴包並進行構建的地方。...tox通過pip來完成,因此在這里一切都很好。

但是現在令人困惑的是,管道的最后一部分是創建和上傳軟件包。 開發人員可能會將創建的程序包上傳到本地pip存儲庫,然后可能還會創建部署程序包。 在這種情況下,它將需要是一個包含應用程序虛擬環境的RPM。 我已經使用rpmvenev手動制作了一個,但是不管它是如何制作的,如何將這樣的步驟添加到tox配置中? 在rpmvenv的情況下,它會創建自己的virtualenv,可以說這是一個自包含的命令。

我喜歡使用Unix哲學解決這個問題。 擁有一個可以出色地完成一件事情的工具,然后將其他工具組合在一起。 Tox旨在在一系列不同的python環境中運行測試,因此使用它來為您構建deb / rpm / etc等,我覺得這是對該工具的誤用。 僅使用tox來運行所有測試可能會更容易,然后根據結果在您的管道中又邁出了一步,即為剛剛測試的內容構建程序包。

在撰寫本文時,Jenkins 2.x似乎是最新的,它似乎在構建管道方面要好得多。 BuildBot正在經歷大量的開發,並且已經相當容易為此建立良好的管道。

我們在工作中所做的是

  • AWS中的Buildbot,可從PR的Github接收推送通知
  • 這將啟動一個docker容器,該容器插入當前代碼並運行Tox(py.test,flake8以及量角器和茉莉花測試)
  • 如果毒素步驟恢復正常,請啟動另一個Docker容器以構建一個deb包
  • 將那個deb包推送到S3,讓Salt處理告訴這些機器更新

該deb包也可以作為構建工件使用,類似於Jenkins 1.x所做的事情。 一旦准備好進行登台,我們只需獲取該軟件包並將其手動升級到登台的debian repo。 同上,將其滾動到產品。

我發現所有這些有用的工具:

  • Buildbot,因為它在Python中,因此我們可以更輕松地進行工作,但Jenkins也可以工作。 無論如何,這是整個管道的控制器
  • Docker,因為每個構建都應該與其他所有構建完全隔離
  • 毒打光榮的測試跑步者以處理所有這些細節
  • fpm生成軟件包。 RPM,DEB,tar.gz等。 高度可配置且易於編寫腳本。
  • 使用Aptly可以輕松管理debian存儲庫,尤其是將它們推向S3。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM