jenkins 中的 allure 和 email 問題梳理

难以怀瑾發表於2024-10-10

一、allure 相關

1、我安裝了 jenkins 之後需要再安裝 allure 嗎?在 jenkins 外掛中心直接安裝 allure

1.Allure Jenkins Plugin 只是一個整合外掛,它要求你在 Jenkins 伺服器上安裝 Allure 命令列工具(Allure Commandline)來實際生成報告。
Dashboard>Manage Jenkins>Plugins>Available plugins安裝allure-jenkins-plugin之後重啟 jenkins。
然後進入Dashboard>Manage Jenkins>Tools 勾選自動安裝來安裝allure,名字自己取一個

2 allure 路徑問題

在一個freestyle裡的專案中的Configure,allure 報告位置是透過什麼決定的呢?
Build Steps>Execute shell執行

cd /python_project/everyday_check/
/usr/local/python3.9/bin/pytest -sv -m pro testcase_everyday_check/web_site_everyday_check.py 

由於上面程式碼沒有alluredir相關資訊,這裡將會去pytest.init找用例執行的結果
pytest.ini

# pytest.ini
addopts = -sv --alluredir ./report/temp_jsonreport --clean-alluredir

pytest.init中用例結果alluredir和下圖填的用例結果路徑(allure-result)不一致會產生空的報告

那麼需要將用例結果複製過來解決空報告問題

mkdir -p ${WORKSPACE}/allure-results_${BUILD_NUMBER} 
# 這與pytest.ini檔案定義的addopts = -sv --alluredir ./report/temp_jsonreport --clean-alluredir有關這是allure的目錄我將其複製過來
cp -r /python_project/everyday_check/report/temp_jsonreport ${WORKSPACE}/allure-results_${BUILD_NUMBER}

3 報告歸檔問題

生成報告時都是採用-c -o /var/lib/jenkins/workspace/everyday_check/allure-report那麼為何每個構建的報告不一樣呢?都是該次構建的報告
下圖可見每次的報告路徑均是allure-report

這是因為每次構建生成的報告 jenkins 都會進行歸檔,如
/var/lib/jenkins/jobs/everyday_check/builds/1/archive中的1就是第一次構建生成的報告

二、Extended E-mail Notification

1 在Dashboard>Manage Jenkins>Plugins>Available plugins安裝Email Extension Plugin之後重啟 jenkins。
然後進入Dashboard>Manage Jenkins>system 中的 Extended E-mail Notification進行配置
如下所示 其餘可以全部使用預設值

注意上圖3需要需要郵箱地址和授權碼,相當於郵箱的傳送伺服器。注意 password 中需要輸入郵箱的授權碼而不是密碼

在 Default Content 中可以使用下列模板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
       .logo {
            float: left;
            min-width: 40px;
            height: 40px;
        }
        .title{
            text-align: center;
            color: rgb(235, 30, 15);
        }
        .desc{
            text-align: left;
        }
    </style>
</head>
<body>
    <div>
        <h1 class="title">每日巡檢自動化測試報告</h1>
    </div>
    <div class="desc">
        <p><font color="red">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Jenkins自動傳送的測試報告郵件,無需回覆!</font></p>
        <h4>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;各位同事,大家好,以下為${PROJECT_NAME}自動化測試構建資訊</br><h4/>
        <h4>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;線上測試報告直達連結:<a href="${PROJECT_URL}/${BUILD_NUMBER}/allure">${PROJECT_URL}/${BUILD_NUMBER}/allure</a></h4>
    </div>
    <br/>
    <div>
        <table width="900" cellpadding="8px" cellspacing="8px" class="table"> 
            <tbody>
                <tr>
                    <td><br/>
                    <b><font color="#0B610B">專案描述:${JOB_DESCRIPTION}<br></font></b>
                    <hr size="2" width="100%" align="center" /></td>
                </tr>
                <tr>
                    <td>專案名稱 : ${PROJECT_NAME}</td>
                </tr>
                <tr>
                    <td>構建編號 : 第${BUILD_NUMBER}次構建</td>
                </tr>
                <tr>
                    <td>觸發原因: ${CAUSE}</td>
                </tr>
                <tr>
                    <td>構建狀態: ${BUILD_STATUS}</td>
                </tr>
                <tr>
                    <td>構建日誌: <a href="${PROJECT_URL}${BUILD_NUMBER}/console">${PROJECT_URL}${BUILD_NUMBER}/console</a></td>
                </tr>
                <tr>
                    <td>構建Url : <a href="${BUILD_URL}">${BUILD_URL}</a></td>
                </tr>
                <tr>
                    <td>工作目錄 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></td>
                </tr>
                <tr>
                    <td>專案Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></td>
                </tr>
                <tr>
                    <td>allure線上測試報告:<a href="${PROJECT_URL}/${BUILD_NUMBER}/allure">${PROJECT_URL}/${BUILD_NUMBER}/allure</a></td>
                </tr>
            </tbody>
        </table>

    </div>


</body>

2 郵件老是傳送失敗時可以將Jenkins LocationSystem Admin e-mail address填一下,實測有用

相關文章