CDash to report Peforce update

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

CDash to report Peforce update

Dominique Ledit

Hi

 

I’ve tried for some time now, to figure out how to configure properly my CDash project to get in the “Update” column of the Dashboard something else than 0, using P4Web as Repository Viewer.

First let me give you some details.

Our build system is based on cmake 3.9.4. We use ctest to run a set of unit tests (on Both Linux and Windows platforms) in our Continuous Integration system.

Our SCM is Perforce

I installed some time ago a CDash 2.5.0 Linux server to display the results of the Update, configure, build steps of our Continuous integration.

 

A CtestConfig.cmake is generated in the build directory.

## The following are required to uses Dart and the Cdash dashboard.

set(CTEST_PROJECT_NAME "<our_project_name>")

set(CTEST_NIGHTLY_START_TIME "01:00:00 UTC")

set(CTEST_DROP_METHOD "http")

set(CTEST_DROP_SITE "<our cdash server>")

set(CTEST_DROP_LOCATION "/submit.php?project=<our_project_name>")

set(CTEST_DROP_SITE_CDASH TRUE)

# Maximum time allowed before CTest will kill the test.

set(CTEST_TEST_TIMEOUT 600)

 

A CTestTestfile.cmake contains the list of Unit Tests to run

 

Finally the ctest script I passed to ctest using the -S option to proceed with the update, the build and run the tests:

 

ctest -D Continuous -S MyCtest.cmake,Continuous --verbose --output-on-failure --timeout 900 -C Release

 

Set:

  • CTEST_SITE
  • CTEST_BUILD_NAME
  • CTEST_PROJECT_NAME
  • CTEST_NOTES_FILE
  • CTEST_P4_CLIENT
  • CTEST_P4_COMMAND to the full path of the p4 command
  • CTEST_UPDATE_COMMAND to ${ CTEST_P4_COMMAND}
  • CTEST_SOURCE_DIRECTORY
  • CTEST_BINARY_DIRECTORY
  • CTEST_BUILD_COMMAND

And run

  • ctest_start (${CTEST_SCRIPT_ARG})
  • ctest_update (SOURCE "${CTEST_SOURCE_DIRECTORY}" RETURN_VALUE update_code)
  • ctest_build (BUILD "${CTEST_SOURCE_DIRECTORY}/library" RETURN_VALUE build_code)
  • ctest_test  (BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE test_code)
  • ctest_submit ()

 

I got all what I wish in the CDash Dashboard for my Project excepted for the “Update” “Files” column that systematically contains “0”

 

Clicking on the “0” link open a page containing:

Files changed on <ctest_site>  (Build_name ) as of <date>

Revision:  (<URL of the P4Web server>/@md=d&cd=<Perforce depot path>&rt=s&thv=d&c=igy@/epos/?ac=43&mx=50&sr=<Perforce ChangeList number>
Prior Revision: 
(<URL of the P4Web server>/@md=d&cd=<Perforce depot path>&rt=s&thv=d&c=igy@/epos/?ac=43&mx=50&sr=<Perforce ChangeList number>

Show Activity Graph

Expand All | Collapse all

<a href="javascript:reload()">http://vm-pau-cdash/img/Minus.gifhttp://vm-pau-cdash/img/Open.gif  DMP Updated files (0)
<a href="javascript:reload()">http://vm-pau-cdash/img/Minus.gifhttp://vm-pau-cdash/img/Open.gif  Modified files (0)
<a href="javascript:reload()">http://vm-pau-cdash/img/Minus.gifhttp://vm-pau-cdash/img/Open.gif  Conflicting files (0)


Expand All | 
Collapse All

 

But to get this result I had to modify the <CDash_Install_dir>/include/repository.php file

to make the two “Revision” and “Prior Revision” html links open a page on the P4Web.

I modified the get_p4web_revision_url function (use the action code 43 instead of the 64 one and set a max number of CL to 50)

function get_p4web_revision_url($projecturl, $revision, $priorrevision)

{

    //$revision_url = $projecturl . '?ac=64&sr=' . $revision;

    $revision_url = $projecturl . '?ac=43&mx=50&sr=' . $revision;

    return make_cdash_url($revision_url);

}

And

The  get_p4web_diff_url function where the action code 207 leads to an incorrect link

function get_p4web_diff_url($projecturl, $directory, $file, $revision)

{

    $diff_url = rtrim($projecturl, '/') . ($directory ? ('/' . $directory) : '') . '/' . $file;

 

    if ($revision != '') {

        $prev_revision = get_previous_revision($revision);

        if ($prev_revision != $revision) {

            //$diff_url .= '?ac=207&sr1=' . $prev_revision . '&sr2=' . $revision;

            $diff_url .= '?ac=64&sr=' . $prev_revision . '&sr2=' . $revision;

        } else {

            $diff_url .= '?ac=64&sr=' . $revision;

        }

    }

    return make_cdash_url($diff_url);

}

 

I really would like to succeed in setting correctly my CDash project, but still don’t find how to set properly for a P4Web Repository Viewer, the  following text fields:

  • Repository Viewer URL
  • The Repository
  • The branch
  • The Username
  • Password

And to fix this always “0” result in the Update column

 

This will be great if someone could give me some advices or tell me what I miss to correctly set the Update column in CDash and have access to the modified files when clicking on the number in the Update column

 

Thank you

 

Dominique

 

Dominique Ledit | Sr. DevOps, Paradigm | Exploration and Production Software
Emerson Automation Solutions | 2 av. Président Pierre Angot | 64000 | Pau | France
T 011-33-(0)5-59-72-79-14
[hidden email]
cid:image001.jpg@01D374EE.E75BD4F0

 

------------------- This e-mail, including any attached files, may contain confidential and privileged information for the sole use of the intended recipient. Any review, use, distribution, or disclosure by others is strictly prohibited. If you are not the intended recipient (or authorized to receive information for the intended recipient), please contact the sender by reply e-mail and delete all copies of this message.
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake