簡體   English   中英

Jenkins 使用 Docker:如何運行測試?

[英]Jenkins using Docker: How to run tests?

我正在使用 Docker for CI 創建一個 Jenkins 測試環境。 我有一個安裝了 Jenkins 的容器,所有的工作都從我以前的 Jenkins 中轉移了。 現在我遇到了這個問題,我需要運行需要 DB 和 PHPUnit 的測試。

我不想將這些安裝在我的 Jenkins 容器中,因為我有用於 DB 和 PHPUnit 的專用容器。 所以我的問題是,如何觸發 Jenkins 作業以在包含必要先決條件的 Docker 中執行測試?

我有兩個選擇,但不確定它們是否可行。

選項1:

當您在 Jenkins 中運行作業時,觸發docker run [具有所有依賴項的容器][運行測試的腳本]但我不確定我們是否可以從容器內部觸發 d​​ocker run。

選項 2:

創建一個新容器並在其上安裝 Jenkins slave。 在主 Jenkins 中添加該容器並在從站上運行測試。 確保從站具有到數據庫和 PHPUnit 容器的鏈接。 這可能嗎?

我不確定我會回答您的問題,但在 Jenkins 聲明式管道https://jenkins.io/doc/book/pipeline/syntax/ 中,您可以輕松運行 docker 容器,您可能希望在其上執行您的技術特定步驟,例如

php --version

如果您的 Jenkins 作為 Docker 容器運行,您可能希望使用 Docker 客戶端擴展此映像,並允許連接到主機 Docker 並生成新的 Docker 容器作為 Jenkins 容器兄弟而不是子容器。 為此,您需要將 docker.sock 指向來自主機分配卷的 docker 運行,如下所示:

docker run -v /var/run/docker.sock:/var/run/docker.sock 

您可以在此博客文章中找到此類解決方案的完整說明: https : //jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/

使用 php 運行 docker 並運行php --version簡單管道如下所示。

pipeline {
    agent { docker 'php' }
    stages {
        stage('build') {
            steps {
                sh 'php --version'
            }
        }
    }
}

此處找到的示例https://jenkins.io/doc/pipeline/tour/hello-world/

希望那些對你有幫助。

建議去選項2

使用 jenkins 作業觸發器在 jenkins 從節點而不是 jenkins 容器中運行作業。

並使用jenkins docker plugin來管理你的docker容器,即 DB、phpunit,將它們視為 jenkins 從節點,會容易得多。

暫無
暫無

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

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