Summary: After this diff, when a user submits a diff from Facebook's VPN network, we'll automatically trigger a jenkins test. Once jenkins test is done, we'll update the diff with test results. Test Plan: Made sure that jenkins build is triggered on `arc diff` and that result is reflected back on the diff Reviewers: sdong, rven, kradhakrishnan, anthony, yhchiang Reviewed By: anthony Subscribers: dhruba Differential Revision: https://reviews.facebook.net/D36555main
parent
f12614070f
commit
de22c7bd1f
@ -0,0 +1,3 @@ |
||||
<?php |
||||
|
||||
phutil_register_library('arcanist_util', __FILE__); |
@ -0,0 +1,32 @@ |
||||
<?php |
||||
// Copyright 2004-present Facebook. All Rights Reserved. |
||||
|
||||
class FacebookArcanistConfiguration extends ArcanistConfiguration { |
||||
|
||||
public function didRunWorkflow($command, |
||||
ArcanistBaseWorkflow $workflow, |
||||
$error_code) { |
||||
if ($command == 'diff' && !$workflow->isRawDiffSource()) { |
||||
$this->maybePushToJenkins($workflow); |
||||
} |
||||
} |
||||
|
||||
////////////////////////////////////////////////////////////////////// |
||||
/* Send off builds to jenkins */ |
||||
function maybePushToJenkins($workflow) { |
||||
$diffID = $workflow->getDiffID(); |
||||
if ($diffID === null) { |
||||
return; |
||||
} |
||||
|
||||
$results = $workflow->getTestResults(); |
||||
if (!$results) { |
||||
return; |
||||
} |
||||
|
||||
$url = "https://ci-builds.fb.com/view/rocksdb/job/rocksdb_diff_check/" |
||||
."buildWithParameters?token=AUTH&DIFF_ID=$diffID"; |
||||
system("curl --noproxy '*' \"$url\" > /dev/null 2>&1"); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,18 @@ |
||||
<?php |
||||
// Copyright 2004-present Facebook. All Rights Reserved. |
||||
|
||||
class FacebookFbcodeUnitTestEngine extends ArcanistBaseUnitTestEngine { |
||||
|
||||
public function run() { |
||||
// Here we create a new unit test "jenkins_async_test" and promise we'll |
||||
// update the results later. |
||||
// Jenkins updates the results using `arc call-conduit |
||||
// differential.updateunitresults` call. If you change the name here, also |
||||
// make sure to change the name in Jenkins script that updates the test |
||||
// result -- they have to be the same. |
||||
$result = new ArcanistUnitTestResult(); |
||||
$result->setName("jenkins_async_test"); |
||||
$result->setResult(ArcanistUnitTestResult::RESULT_POSTPONED); |
||||
return array($result); |
||||
} |
||||
} |
@ -1,19 +0,0 @@ |
||||
#!/bin/bash |
||||
# usage: |
||||
# * trigger_jenkins_test.sh -- without parameters, submits the current patch to Jenkins for testing |
||||
# * trigger_jenkins_test.sh D12345 -- submits diff D12345 |
||||
if [[ $# == 0 ]]; then |
||||
diff=$(git log -1 --pretty=%b | perl -nle \ |
||||
'm!^Differential Revision: https://reviews\.facebook\.net/(D\d+)$! and print $1') |
||||
else |
||||
diff=$1 |
||||
fi |
||||
|
||||
diff_len=`expr length "$diff"` |
||||
if [[ $diff_len < 6 ]] ; then |
||||
echo "I don't think your diff ID ($diff) is correct" |
||||
exit 1 |
||||
fi |
||||
|
||||
echo "Submitting build of diff $diff to Jenkins" |
||||
curl "https://ci-builds.fb.com/view/rocksdb/job/rocksdb_diff_check/buildWithParameters?token=AUTH&DIFF=$diff" |
@ -1,3 +0,0 @@ |
||||
<?php |
||||
|
||||
phutil_register_library('linters', __FILE__); |
Loading…
Reference in new issue