Jenkins Ant模式获得带有时间戳的最新修改的XLSX文件

时间:2018-08-18 11:30:51

标签: jenkins ant pattern-matching

如何编写Ant模式以获取带有时间戳的最新修改文件。

我的文件是:

Testcases_Results_dd-mm-yyyy_hh_mm_ss.xlsx
Testcases_Results_dd-mm-yyyy_hh_mm_ss.xlsx
Testcases_Results_dd-mm-yyyy_hh_mm_ss.xlsx

在Jenkins中,我在附件中配置为** / TestResults / Testcases_Results _ *。xlsx 但是我没有最新文件,它正在选择所有文件。

1 个答案:

答案 0 :(得分:0)

如果最新文件的lastmodifieddate最高,则可以使用

<last>
    <sort>
        <date xmlns="antlib:org.apache.tools.ant.types.resources.comparators"/>
        <resources>
            <fileset dir="/path/to/files/">
                <include name="Testcases_Results_*" />
            </fileset>
        </resources>
    </sort>
</last>

here所述。

您可以通过另一种方式定义和使用scriptdef

<scriptdef name="getLatesFile" language="javascript">
    <attribute name="result"/>
    <element name="fileset" type="fileset"/>
    <![CDATA[

    fileset = elements.get("fileset").get(0);
    scanner = fileset.getDirectoryScanner(project);
    scanner.scan();
    files = scanner.getIncludedFiles();

    var latestDate = new Date(1970, 0, 1, 0, 0, 0);

    for( j=0; j < files.length; j++) {

        var filename = files[j];
        var dateSuffix = filename.substring("Testcases_Results_".length, filename.indexOf(".xlsx"));
        //dd-mm-yyyy_hh_mm_ss
        var bits = dateSuffix.split(/\D/);
        var date = new Date(bits[2], --bits[1], bits[0], bits[3], bits[4], bits[5]);
        if(date > latestDate) {
            latestDate = date;
            self.project.setProperty( attributes.get("result"), filename );
        }
    }

  ]]>
</scriptdef>

<target name="init">
    <getLatesFile result="latest_file">
        <fileset dir="/path/to/files/">
            <include name="Testcases_Results_*" />
        </fileset>
    </getLatesFile>
    <echo>${latest_file}</echo>
</target>