* [jenkins] State all the time where we're working on. (#8447)
It's annoying to have to track it down all the time when something goes wrong.
* [jenkins] Make it possible to skip running packaged Xamarin.Mac tests by setting the 'skip-packaged-xamarin-mac-tests' label. (#9170)
Diff is best viewed by ignoring whitespace.
* [jenkins] Don't try to run the packaged Xamarin.Mac tests if none were built.
* [jenkins] Add support for specifying custom labels using a file.
This is a partial backport of #8549.
Fix version logic with macOS 11.0 so that we don't compute all versions by
doing a range computation on the minor version only.
This makes it so that we run on older macOS bots again.
There are also a few other fixes for macOS 11.0.
Also clean the package directory before creating any packages, otherwise we
might end up trying to upload packages from the previous build.
Diff best viewed by ignoring whitespace.
* Fix links that point to master to point to main instead.
* Implement support in the sample tester for specifying the default branch for
each sample repo.
* Fix various text / documentation to say 'main' instead of 'master.'
* Push to 'main' instead of 'master' in xamarin-macios-data.
* Fix xharness to make 'main' the special branch with regards to documentation tests as opposed to 'master'.
* Fix various CI to use 'main' instead of 'master'.
* Bump maccore
New commits in xamarin/maccore:
* xamarin/maccore@ed6d146822 Rename 'master' to 'main'. (#2233)
Diff: 424fa26148..ed6d146822
* The current directory doesn't have to be the script directory, so only
execute 'make' after we've changed the current directory to a known
directory.
* 'make ...' can output extra lines, depending on other circumstances, so
change logic to filter to just the line we're interested in:
DOTNET_NUPKG_DIR='Found ccache on the system, enabling it
Detected the maccore repository, automatically enabled the Xamarin build
Downloading mono archives
/Users/rolf/work/maccore/msbuild/xamarin-macios/_build/nupkgs'
* [jenkins] Hide the list of packages by default.
The list of packages got big with the NuGet packages, and we usually don't
want to see the whole thing, so hide it by default.
* Add newline to fix markdown parsing.
Create the various NuGet packages to support .NET 5+. The packages are
currently empty (and not very useful), but the actual content will come later.
The current set of NuGet packages are (this list is duplicated for each
platform: iOS, tvOS, watchOS and macOS):
* Microsoft.iOS.Sdk: currently contains the basic MSBuild targets files for an
MSBuild Project SDK. Will eventually contain all the build logic. Might also
eventually contain other tools (mlaunch, bgen, etc.), but these might also
end up in a different package.
* Microsoft.iOS.Ref: will contain the Xamarin.iOS.dll reference assembly.
* Microsoft.iOS.Runtime.[RID]: will contain architecture-specific files
(libxamarin*.dylib, the Xamarin.iOS.dll implementation assembly, etc.):
The NuGets built on CI are automatically published to a NuGet feed.
The versioning for the NuGet packages required a few changes: OS bumps are now
changed in Make.versions instead of Make.config (this is explained in the
files themselves as well).
* [system-dependencies] Add support for provisioning .NET 5 separately.
Add support for provisioning .NET 5 separately, and by default install it
locally (into builds/downloads) to avoid consuming a lot of disk space with
the various preview versions we'll need. A system install is still detected
and used if available.
* Use full path to the dotnet binary, since it might not be in PATH.
* [jenkins] Clean first, then provision.
Otherwise we'll clean whatever we provision locally.
This makes it possible to select what should be done on CI when building a
commit on internal Jenkins (as opposed to when building a pull request, in
which case labels can be set on the pull request).
* Set the 'currentStage' variable upon entry so that reporting reports any
problems in the correct stage.
* Rewrite the 'getRedirect()' exception message to not use an undefined
variable (content).
This makes it so that if something goes wrong when publishing results and it
ends up stuck, the job won't stay hung for days until we realize what's
happening.
On old macOS bots we only want to provision Mono, so change the logic so that
we first ignore everything, then re-enable Mono.
This way we don't have to add new ignore flags here every time we add
something new to the provisioning script.
This fixes an issue where the script detects that dotnet isn't installed, and
shows an error, when trying to run tests on older macOS bots in CI.
* [configure] Add --[enable|disable]-dotnet.
And make it enabled by default on CI and disabled by default elsewhere for now
(because it makes the build significantly slower).
* [system-dependencies] Add support for provisioning .NET.
Also write a global.json in the root directory which is how we select which
.NET version to use.
Move to use a template for the DDFun pipeline. Copy the current pipeline
to a template, set some parameters and recreate the pipeline importing
the template.
* Fix fetching author's name + email for failure reporting by running git in
the directory where the repo actually is.
* Don't fail the build if we fail to generate/upload artifacts.json, instead
show the failure everywhere and continue as if nothing happened. There seems
to be a random issue with GitHub where a network request fails, and there's
no need for that to fail the entire build.
Bump maccore so that a status is posted when the device tests cannot be
scheduled. Update the JenkinsFile to make sure that the required token
is passed to the launch.sh script.
In the DDFun pipeline case `cat: tmp.p: No such file or directory` so the `P` variable cannot be set and that's failing vsts-device-tests-set-status.sh
- We had `./jenkins/vsts-device-tests-set-status.sh: line 88: HTML_REPORT: unbound variable` in the `Report results to GitHub as comment / status` step. Now that the HTML_REPORT is set this shouldn't happen anymore.
- The `Add summaries` task is reporting errors but it's working regardless. I believe this might be due to -x being set instead of the original +x (I changed that by mistake).
- Needed for the DDFun migration of our tests
- Don't use SSH because it's restricted on the new bots
- Use brand new DevOps feature to clone multiple repos via HTTPS
- Update names of all tasks (clearer)
- Simplify and re-use code
- Update all paths because our cloning strategy is different compared to old pipeline
- Update xharness to print "experimental" titles in GitHub comments
- Update xharness to not add the Html link for tests from the DDFun pipeline
- Fix all timeouts to be relevant to the tests length
- Split in multiple jobs (for GitHub status)
- Move longer scripts to independant files
- Make inline bash prettier
- Use a variable for the pool name
- Fix single space alignment
- Remove unused variable in `vsts-device-tests-set-status.sh` that broke it
- Bump maccore to use the right certificates and profiles
- Bump maccore to target the right pipeline
- Bump maccore to not use ssh in scripts
- Bump maccore and use persistCredentials
Notes:
- Right now the xharness test output can only be seen when downloading the zip file locally (better output soon)
* [tests] Add make target to manually launch a device test run for the current commit.
* Upload a manifest that can be found using only the hash, and use it to find the packages.
* Only notarize CI builds; timeout after 90 min
* Update jenkins/Jenkinsfile
Co-Authored-By: Rolf Bjarne Kvinge <rolf@xamarin.com>
* Don't upload notarized pkgs if it fails
* Update jenkins/Jenkinsfile
Co-Authored-By: Manuel de la Pena <mandel@microsoft.com>