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

82 Коммитов

Автор SHA1 Сообщение Дата
Rolf Bjarne Kvinge 0075415c39
[xharness] Add support for GitHub authentication, and use it in Jenkins. (#5380)
This makes it much less probable to hit any rate limits, because authenticated
rate limits are much higher (5000 requests/hour vs 60 requests/hour).
2019-01-11 15:48:16 +01:00
Rolf Bjarne Kvinge 61bf0db817
[tests] Run tests-docs using xharness. (#5372)
Jenkins has a limitation where you can't mark a step a failure, it has to
*fail* to be reported as such.

This means that running multiple tests, and reporting a failure if any of
those tests fail is not possible.

We run into this with the normal test run + the docs tests; where we currently
don't show a red result in the UI if any of those fail.

So incorporate the test-docs step into xharness, so that we only have one
thing to in the Jenkinsfile, which makes it possible for us to fail the test
run step properly.

This also required a few upgrades to xharness to get more info for pull
requests, since the logic to enable the docs tests is a bit more complicated
than anything else we have (if the current branch (or the target branch for a
PR) is 'master' AND xamarin mode is enabled).
2019-01-10 16:43:02 +01:00
Rolf Bjarne Kvinge 03d2b7d0b7
[jenkins] Add links to the packages in the GitHub comment. (#5301) 2018-12-20 07:34:57 +01:00
Rolf Bjarne Kvinge b21eb28b72
[jenkins] Improve rendering of failures on older macOS bots. (#5304)
Improve rendering of failures on older macOS bots by showing which bot things
failed on in the commit comment.
2018-12-20 07:34:23 +01:00
Rolf Bjarne Kvinge fc51fa887d
Enable the device build correctly when mono/llvm is bumped. (#5294)
This allowed #5252 to pass the PR build: the device build was disabled for the
PR test run.
2018-12-19 16:56:12 +01:00
Rolf Bjarne Kvinge 7360d4f7a7
[jenkins] Specify repo manually for GitHub statuses to fix maccore#898. (#5269)
Fixes https://github.com/xamarin/maccore/issues/898.
2018-12-13 16:38:08 +01:00
Rolf Bjarne Kvinge c8aa44beff
[jenkins] Print out the environment for debug purposes. (#5261)
This can be quite useful when writing new CI logic.
2018-12-12 15:01:03 +01:00
Rolf Bjarne Kvinge 49cd1923de
[CI] Add scripts to set github status from Azure DevOps. (#5246) 2018-12-11 09:00:35 +01:00
Rolf Bjarne Kvinge 0999bbaf48
[xharness] Fix retry-download-on-error-56 logic to actually work. (#5206)
Fix retry-download-on-error-56 logic to not fail forever if the first time
failed by resetting the EC variable after each try.

Fixes https://github.com/xamarin/maccore/issues/1098 (third time's the charm!)
2018-11-30 15:42:18 +01:00
Rolf Bjarne Kvinge 82634c088a
[jenkins] If provisioning an old mono fails with error 56, try again a few more times. Fixes maccore#1098. (#5200)
It seems curl can randomly fail with error 56, so if that happens, try again a
few more times before giving up.

Fixes https://github.com/xamarin/maccore/issues/1098.
2018-11-29 18:37:04 +01:00
Rolf Bjarne Kvinge ecb1081e23
[jenkins] Fix path to api diff in commit comment. (#5173) 2018-11-23 16:23:03 +01:00
Rolf Bjarne Kvinge b059252473
[jenkins] If provisioning fails with error 56, try again a few more times. Fixes maccore#1098. (#5168)
It seems curl can randomly fail with error 56, so if that happens, try again a
few more times before giving up.

Fixes https://github.com/xamarin/maccore/issues/1098.
2018-11-22 10:42:24 -05:00
Rolf Bjarne Kvinge 94d87ddba6
[jenkins] Don't execute the packaged XM tests on the main macOS version. (#5165)
* [jenkins] Don't execute the packaged XM tests on the main macOS version.

Don't execute the packaged XM tests on the main macOS version, since it's redundant.

It also prevents a potential test deadlock if all main bots are busy.

* Rework to make it show better in the Jenkins UI.
2018-11-21 12:21:57 -05:00
Rolf Bjarne Kvinge 6f54cb7c28
Bump maccore to get fix for test-docs. (#5163)
* Bump maccore to get fix for test-docs.

Commit list for xamarin/maccore:

* xamarin/maccore@6e9b63e537 Merge pull request #1162 from rolfbjarne/docfixer-fixes
* xamarin/maccore@4cf1d63b7b [docfixer] Create project files and fix a few issues. Fixes #1118.
* xamarin/maccore@714bd73a55 [docfixer] Avoid declaring the same target twice.
* xamarin/maccore@34f4bfa339 [populate] Directories need to call Directory.Exists for existence checks.
* xamarin/maccore@341333db88 [docs] Remove truly ancient and outdated targets to publish updated docs.

Diff: 7ba9c5a962...6e9b63e537

* [jenkins] Make it possible to force docs testing by applying a label to pull requests.
2018-11-21 10:11:55 -05:00
Rolf Bjarne Kvinge abbc4698d6
[jenkins] Improve failure reporting slightly by listing 'Test docs' and 'Test run' as failing stages in the commit comment. (#5150) 2018-11-21 01:45:39 -05:00
Rolf Bjarne Kvinge 5761691c21
[jenkins] Fix slack reporting, and make it more resilient against failures. Fixes maccore#1160. (#5142)
* [jenkins] Fix getting author name+email for Slack reporting.

* [jenkins] Make slack reporting more resilient against failures. Fixes maccore#1160.

Fixes https://github.com/xamarin/maccore/issues/1160.
2018-11-20 02:55:57 -05:00
Rolf Bjarne Kvinge e3f97c56dd
[jenkins] Run the 'Test docs' step even if the 'Run tests' step failed. (#5106)
This is done by preventing the 'Run tests' failure from throwing exceptions, and instead manually set failure modes.
2018-11-08 16:24:56 +01:00
Sam Schwarz d0d28f8200 Without this added the azure links in the side panel won't work. This step can also be updated to the new pipeline syntax using the pipeline syntax generator. (#5081) 2018-11-05 19:22:24 +01:00
Rolf Bjarne Kvinge fdc691d771 [jenkins] Remove any system versions of XI/XM to make absolutely sure nothing in our build requires them. (#5059) 2018-10-31 17:47:28 -04:00
Rolf Bjarne Kvinge 904be25c25
[xharness] Generate a system variant of dont link, and run it using the oldest mono version we support in Jenkins. Fixes #4121. (#4968)
This is an addition to the tests we already run on older macOS bots (and as such will not execute on our PR bots).

Fixes https://github.com/xamarin/xamarin-macios/issues/4121.
2018-10-15 16:51:46 +02:00
Rolf Bjarne Kvinge 3684204f5a
Improve generator diff to ignore changes we don't care about. (#4947)
This means we'll get an empty diff if there are no generator changes, so
update the logic that detects/reports empty generator diffs.

Also there's no need to ignore mdbs anymore, since we don't create mdbs.
2018-10-09 07:35:00 +02:00
Connor Adsit fc0de6dee6 Report updateinfo for xamarin.ios and xamarin.mac in artifacts.json (#4871)
Expose the productId and versionId in artifacts.json to autofill this information in while publishing so it's less of a manual process.
2018-10-03 08:25:46 +02:00
Rolf Bjarne Kvinge 832f9a3a5a
[builds] Adjust ifdefs to fix not building device architectures. Fixes maccore#1074. (#4903)
* [builds] Adjust ifdefs to fix not building device architectures. Fixes maccore#1074.

Fixes https://github.com/xamarin/maccore/issues/1074.

* [jenkins] Running configure and then cleaning everything is kind of useless, so reverse the order.
2018-10-03 08:18:11 +02:00
Vincent Dondain 0038fdfbdf [jenkins] Fix double API diff printf (broken merge) 2018-09-19 11:10:31 -04:00
Vincent Dondain 2174ec41a2 Merge branch 'xcode10' 2018-09-18 14:12:39 -04:00
Rolf Bjarne Kvinge 985547bd1e
[jenkins] Bump the keychain lock timeout from 2h to 6h. Fixes maccore#973. (#4733)
Our tests can take quite a while to run sometimes, and this makes sure we
don't get random failures when the tests that access the keychain are executed
at the end of the test run.

Bump maccore to get the same fix there.

Fixes https://github.com/xamarin/maccore/issues/973.

Commit diff for maccore bump: 9937926f56...07fde84362
2018-08-31 14:39:42 +02:00
Rolf Bjarne Kvinge 7e8ffdf2ec
Document how to run API comparison locally. (#4699) 2018-08-27 16:46:22 +02:00
Rolf Bjarne Kvinge 1d5c334a89
[jenkins] Don't give VSTS a fake branch. (#4667)
Something in VSTS changed, and now fake branch names don't work anymore.

So instead use real branch names (and for pull requests I've created a
'pull-request' branch we can use).
2018-08-21 23:31:42 +02:00
Sebastien Pouliot d99be7a03e
Merge d15-8 into xcode 10 2018-08-21 09:29:35 -04:00
Rolf Bjarne Kvinge 347f472b03
[jenkins] Improve error reporting a bit. (#4646)
We keep track of the current stage by using the 'currentStage' variable, so that we can properly report what failed.

There were a couple of problems with this:

* The 'Package Xamarin.Mac tests' is not a fatal step, which means that the
  pipeline will continue executing even if it fails. In this case the previous
  code would assign any failure to package the XM tests to the last stage
  ('Test docs').

* Something similar seems to happen if there are failures in the Xamarin.Mac
  tests executed in parallel (on other bots), where any failure would be
  reported as a failure in the last stage ('Test docs').

* No support for reporting failure in multiple stages.

So do a couple of things:

* Clear out the 'currentStage' variable at the end, and handle it being empty
  when reporting results. This should solve at least some of the problems
  where blame as being assigned incorrectly (we'll probably run into cases
  where blame isn't assigned at all, but this is still half the way of getting
  it right).

* Add a 'failedStages' variables where we can keep track of (and report)
  multiple failed stages.
2018-08-21 09:55:07 +02:00
Vincent Dondain eec95e881c Merge branch 'd15-8' into xcode10-rebase-15.8 2018-08-13 21:04:56 -04:00
Rolf Bjarne Kvinge 0ede8b07bc
[jenkins] Implement support for slack notifications. (#4369)
Implement support for slack notifications.

Notifications will only be sent when something fails, and unfortunately I wasn't able to make notifications ping due to https://github.com/jenkinsci/slack-plugin/issues/353.
2018-08-03 11:37:54 +02:00
Rolf Bjarne Kvinge 0181606fce
[jenkins] Skip any executing builds on internal jenkins when new builds are scheduled for pull requests. (#4518) 2018-08-02 09:53:46 +02:00
Rolf Bjarne Kvinge a125bcce4a Rewrite a bit to get around sandbox. 2018-07-05 08:52:01 +02:00
Rolf Bjarne Kvinge 1a76ef7419 Fix typos. 2018-07-04 20:57:42 +02:00
Rolf Bjarne Kvinge 1ee5aae8b7 [jenkins] Create a blacklist of macOS versions to skip testing on, and add some documentation. 2018-07-04 18:43:25 +02:00
Rolf Bjarne Kvinge badfc700bb [jenkins] Run more tests on additional macOS versions (introspection, linksdk, linkall and xammac_tests).
Also add Mojave (10.14) to the additional macOS versions.
2018-07-03 16:53:29 +02:00
Rolf Bjarne Kvinge 38ac83a43f
[jenkins] Make it possible to run internal jenkins tests on pull requests. (#4334)
Add support for the 'run-internal-tests' label on pull requests to indicate
that the internal jenkins should run tests when that label is applied.

Also make it so that either the 'run-internal-tests' or the 'build-package'
label will actually make the internal jenkins execute (otherwise the 'run-
internal-tests' label would also require the 'build-package' label, which
wouldn't be very obvious/user-friendly).
2018-06-28 14:58:30 +02:00
Rolf Bjarne Kvinge 3dcfdd47dd
[jenkins] Add support for completely skipping the public jenkins job using a label. (#4333)
This can be useful when working on the support for private jenkins, since many
of those changes can only be tested as a pull request, and they also tend to
include a lot of commits (because nothing can be tested locally).

So until whatever needs implementing for private jenkins is complete and
working, there's no need for the public bots to do anything for such pull
requests.
2018-06-26 15:50:54 +02:00
Rolf Bjarne Kvinge 5e40325917
[jenkins] Make the Jenkins-built packages the official ones. (#4287) 2018-06-19 07:20:28 +02:00
Rolf Bjarne Kvinge 345ccdec9c
[jenkins] Make the Jenkins-built packages the official ones. (#4283) 2018-06-18 17:15:57 +02:00
Rolf Bjarne Kvinge 2aaee04e56
[Jenkins] Publish bundle.zip and msbuild.zip as GH statuses as well. (#4238) (#4280)
This also requires a maccore bump.

* xamarin/maccore@30c28d1469 [release] Rename bundlefull.zip to bundle.zip. (#848)

Diff: f274834136...30c28d1469
2018-06-18 07:54:42 +02:00
Rolf Bjarne Kvinge 68e8696dc8
[Jenkins] Publish bundle.zip and msbuild.zip as GH statuses as well. (#4238) (#4279)
This also requires a maccore bump.

Diff: 76ab6a58ff...347ba77a16
2018-06-15 23:47:17 +02:00
Rolf Bjarne Kvinge dccbc5a74b [jenkins] Skip docs testing unless on master. 2018-06-14 10:31:24 +02:00
Rolf Bjarne Kvinge 4b707d961e
[jenkins] Use different emojiis depending on the result of the api/generator diffs. (#4240)
Makes it harder to accidentially skip reviewing changes.
2018-06-13 05:28:31 -07:00
Rolf Bjarne Kvinge d39c1469b7
[Jenkins] Publish bundle.zip and msbuild.zip as GH statuses as well. (#4238)
This also requires a maccore bump, commit list for xamarin/maccore:

* xamarin/maccore@443e956edc [release] Rename bundlefull.zip to bundle.zip. (#848)
* xamarin/maccore@5020593b3e Remove jenkinsfile from d15-8, tom-swifty doesn't track normal release branches. (#849)

Diff: a0a9c45942...443e956edc
2018-06-13 05:25:52 -07:00
Rolf Bjarne Kvinge 3334d54a47
[jenkins] Allow codesign without permission dialogs as well. (#4220) (#4223) 2018-06-12 09:03:30 -07: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