Граф коммитов

21 Коммитов

Автор SHA1 Сообщение Дата
Rolf Bjarne Kvinge dccbc5a74b [jenkins] Skip docs testing unless on master. 2018-06-14 10:31:24 +02:00
Rolf Bjarne Kvinge 9cdaf2b753 [jenkins] Cherry-pick a series of fixes for internal jenkins support from the d15-8 branch (#4195)
* [Jenkins] Create artifacts.json and set a GH status as 'Jenkins: Artifacts'.

* [jenkins] Include the url in artifacts.json

* [jenkins] Add sha256 checksum to artifacts.json as well.

* [Jenkins] Enable xamarin before provisioning so that we auto-provision Xcode.

* [jenkins] Fix passing flags to configure.

Quoting empty CONFIGURE_FLAGS ends up doing this:

    ./configure "" --disable-ios-device

and since configure parses arguments until it finds an empty argument, it
would stop parsing at the first argument, effectively not disabling the device
build.

So don't quote CONFIGURE_FLAGS when invoking configure. shellcheck doesn't
quite like this, but the better code is much more complex, and not really
needed, so just add an exception.
2018-06-12 14:37:03 +02:00
Rolf Bjarne Kvinge ae7c72cba8 Add support for building on Jenkins. (#4159)
Add support for building on internal Jenkins.

Jenkins has been configured to build every branch on xamarin/xamarin-macios that contains a `jenkins/Jenkinsfile`, which means it will start working as soon as this PR is merged.

Results will be posted as statuses on each commit, which can be viewed using the url `https://github.com/xamarin/xamarin-macios/commits/<branch>`:

![screenshot 2018-06-01 11 12 57](https://user-images.githubusercontent.com/249268/40832932-c3b05eb0-658c-11e8-9670-8de5fcc23407.png)

* The `continuous-integration/jenkins/branch` status links to the jenkins job.
* The other two are XI and XM packages (the `Jenkins-` prefix will be removed once we officially switch from Wrench to Jenkins).

More detailed information will be added as a comment to each commit, which can be seen by clicking on the commit and scrolling to the bottom (url of the format `https://github.com/xamarin/xamarin-macios/commit/<sha1>`)

![screenshot 2018-06-01 11 14 33](https://user-images.githubusercontent.com/249268/40833014-fd8772f4-658c-11e8-8a35-5df46bfb16c7.png)

Unfortunately GitHub does not display the commit statuses when viewing a single commit, so to view those statuses you'll have to view the list of commits (the `/commits/` url). Tip: it's possible to use `<sha1>` instead of `<branch>` (and vice versa for that matter) if you're interested in the statuses of a particular commit.

Pull requests will also be built (only from contributors with write access), but by default nothing will be done (the job will exit immediately, although a green check mark will still show up). Jenkins will **not** add a comment in the pull request in this case.

However, if the label `build-package` [1] is set for a pull request, the internal jenkins job will run (it will do everything except the local xharness test run: this includes creating and publishing packages, creating various diffs, run tests on older macOS versions, test docs, etc). A detailed comment will also be added to the pull request (see below for multiple examples), which means that there will be two Jenkins comments: one for the public Jenkins which builds every PR, and one for the internal Jenkins [2].

[1] I don't quite like the name of the label, because it doesn't get even close to explain all that will actually happen, but `run-on-internal-jenkins-and-create-package` is a bit too long IMHO... Also it's non-obvious that this is the label to apply if the reason for executing on the internal jenkins is some other reason (for instance to test a maccore bump). Other ideas:

* `run-internal-jenkins`: doesn't make it obvious that a package will be created (which is probably the most common reason to want to run on internal jenkins)
* We could have multiple labels that mean the same thing: `build-package`, `internal-build`, `run-internal-jenkins`, etc, but it's redundant and I don't quite like it either.
* Any other ideas?

[2] I'm noticing now that these two look quite similar and this might end up confusing (the main difference is that the comment from the public jenkins will say **Build success/failure** and **Build comment file:** at the top. If something goes wrong the failure will also show up differently). Should this be made clearer?
2018-06-12 14:37:03 +02:00
Rolf Bjarne Kvinge fa7f52dab0 [jenkins] Improve api/generator diff reporting to say if there were changes, and if they were breaking or not. (#4138)
For the api diff for this PR we now show:

* `🔥 breaking changes 🔥`: If there are any breaking changes in the api diff (for this PR).
* `please review changes`: If there are any non-breaking changes in the api diff.
* `no change`: If the api diff is empty.

For the generator diff we show:

* `only version changes`: If there were only changes related to version numbers (since the XI/XM version number is added to the generator, that version number will always show up as a diff when comparing the generated source code)
* `please review changes`: If anything other that version numbers changed in the generated source code.
2018-06-12 14:37:03 +02:00
Rolf Bjarne Kvinge f7527aaba2 [jenkins] Revert unintended change that prevents the keychain from unlocking properly. (#4158) 2018-06-12 14:37:03 +02:00
Rolf Bjarne Kvinge e0e2f93176 [jenkins] Fix scripts to be shellcheck-happy. (#4148)
A few general categories of fixes:

* Sprinkle lots of quotes everywhere.
* Don't use environment variables in the format string to printf, instead pass them as arguments.
* Don't use backticks to execute commands (it's deprecated), use the new "$(...)" syntax instead.
2018-06-12 14:37:03 +02:00
Rolf Bjarne Kvinge 96d3445ccf [tests] Make sure accessing the keychain doesn't make macOS show any dialogs. (#4141) 2018-06-12 14:37:03 +02:00
Rolf Bjarne Kvinge bece50d6bb [jenkins] Don't treat API/Generator diff failures as errors. (#4127)
This way such failures won't make the build show up as failed, which may cause
other tooling to behave differently (and non-optimal).
2018-06-12 14:37:03 +02:00
Rolf Bjarne Kvinge c35adef145 [jenkins] Update the urls for html reports. (#4119)
* [jenkins] Update the urls for html reports.

The urls for html reports changed as a consequence of a Jenkins update [1], so
update how we construct the links accordingly.

See also:

* https://xamarinhq.slack.com/archives/C03CCJNR7/p1526646040000120
* https://xamarinhq.slack.com/archives/C03CCJNR7/p1526653512000249

[1] https://wiki.jenkins.io/display/JENKINS/HTML+Publisher+Plugin (update to v1.16)

* Remove extra closing parenthesis.
2018-06-12 14:37:03 +02:00
Rolf Bjarne Kvinge ccb2f59ca1 [jenkins] Make it possible to skip API comparison by applying a label to a pull request. (#3994)
Implement support for skipping API comparison by applying a label to a pull
request.

This also required some refactoring to move existing code to fetch the labels
for a pull request to a separate script.
2018-06-12 14:37:03 +02:00
Rolf Bjarne Kvinge d7efd346ee [tools] Improve error reporting when trying to create API/generator diff for a pull request with conflicts. (#3966)
We can't create an API/generator diff for a pull request with conflicts, so
detect this scenario and show a better error than this (from #3961):

    Comparing the changes between origin/pr/3961/merge^1 and HEAD:
    fatal: ambiguous argument 'origin/pr/3961/merge^1..HEAD': unknown revision or path not in the working tree.
    Use '--' to separate paths from revisions, like this:
    'git <command> [<revision>...] -- [<file>...]'
    fatal: ambiguous argument 'origin/pr/3961/merge^1': unknown revision or path not in the working tree.
    Use '--' to separate paths from revisions, like this:
    'git <command> [<revision>...] -- [<file>...]'
2018-06-12 14:37:03 +02:00
Sebastien Pouliot fb322c4d15 [jenkins] Clean keystore on bots before running tests (#3754)
Because if invalid data gets into the store then some unit tests
will always fail on that particular bot.

Fix https://github.com/xamarin/maccore/issues/640
2018-06-12 14:37:03 +02:00
Rolf Bjarne Kvinge 15e3bf39ce
[d15-7] [jenkins] Create comment file for PR builds. (#3799) (#3859)
* [jenkins] Create comment file for PR builds. (#3799)

* [jenkins] Create comment file for PR builds.

* [tools] Create stamp file after doing things that might modify files we care about. (#3864)

We have consistency checks to verify that no unexpected files are modified
done when comparing APIs in for a pull request.

Unfortunately the check didn't take into account that checking out the
revision to do the API check against might modify some of the files in the
consistency check itself, thus triggering the consistency check.

Fix this by only verify timestamps of files modified after checkout out the
revision, which is the only thing we care about anyway.

For examples see PR #3855 or PR #3850.

* [jenkins] Don't succeed if something went wrong when creating API or generator diff. (#3865)

Ref: https://github.com/xamarin/xamarin-macios/pull/3855#issuecomment-378441993
2018-04-05 07:37:08 +02:00
Rolf Bjarne Kvinge da7fbcb2df
Add scripts to calculate API diffs and generated code diff between the current build and another revision. (#3447) 2018-02-13 07:47:47 +01:00
Sam Schwarz 098011f67d Update run-tests to use file. (#2789) 2017-09-27 19:31:19 +02:00
Rolf Bjarne Kvinge 8a156eaf82 [tests] Fix missing information in test reporting on Jenkins. Fixes #51661. (#2246)
Improve test reporting using xml by adding custom information printed during
the test run into the xml, and then extract this information when reporting
test results in xharness (which is much easier than re-constructing the
information from the xml, which caused information to get lost since not
everything piece of interesting is in the xml).

https://bugzilla.xamarin.com/show_bug.cgi?id=51661
2017-06-26 17:34:32 +02:00
Rolf Bjarne Kvinge 8b0c75c590 [xharness] Improve translation from xml to log file. Partially fixes #51661. (#2147)
This makes the failed tests show up in the html report itself, and it will
also show the failure message and stack trace in the produced log.

https://bugzilla.xamarin.com/show_bug.cgi?id=51661
2017-05-31 17:34:03 +02:00
Rolf Bjarne Kvinge a4dde7de39 [jenkins] Automatically detect mono bumps and enable device build. (#1298)
* [jenkins] Automatically detect mono bumps and enable device build.

And do this before fetching labels, so that we can skip fetching labels if we
know we're already enabling the device build.

* [tests] Bumping LLVM merits enabling device build and running mtouch + BCL tests.
2016-12-03 01:52:24 +01:00
Rolf Bjarne Kvinge 66f82d1f94 [jenkins] Add support for enabling device builds using labels. (#1184)
* [jenkins] Add support for enabling device builds using labels.

* [xharness] Give the iOS MSBuild tests 30 minutes to finish.

* [mtouch tests] Give the BuildTestProject 10 minutes to compile each test case.

Wrench bots build the dontlink test in ~3m40, but that's apparently not enough
for the Jenkins bots (slower bots?), which time out the test after 5 minutes.

So double the timeout to 10 minutes, which will hopefully give the Jenkins
bots enough time to run the test to completion.
2016-11-17 10:22:26 +01:00
Manuel de la Pena aa38ab68ac [Jenkins] Add nuint xml logs (#883)
* [Jenkins] Make test to write output as an xml file so that it can be parsed by the jenkins bot.

* Point to the correct Touvh.Unit repo.

* Use the available property to determine if we are being ran in Jenkins.

* Log where are test results stored.

* Add @MonkeyWrench: prefix.

* Ensure that we do set the build env in jenkins/run-tests.sh

* Do not mix Wrench with Jenkins. The reports in jenkins can be Xml, in Wrench we prefer the old style.

* Ensure that the main node of the unit tests does contain the target, that will improve the tests results reporting.

* Revert "Fix binding project LinkWithAttributes generation to prevent rebuilds" (#1018)

* Added xslt to be used to keep the old Test Reports until we move to only Jenkins reports.

* Add an extra log for the xslt transformation.

* Point to the correcto dir in jenkins.

* Deal with the xslt once we have finished rather than in a batch.

* Remove noise.

* Readd case removed in rebase.

* Fix indentation.

* Skip lock keychain.
2016-11-15 19:04:37 +01:00
Manuel de la Pena 009c8a0aa2 [Jenkins] Add different steps to be executed in jenkins. (#856)
* [Jenkins] Add different steps to be executed in jenkins.

* Remove old jenkins.sh
2016-09-21 16:46:00 +02:00