Merge pull request #16968 from echesakovMSFT/LimitFeatureUnixAMD64StructPassingWhenTa...
[platform/upstream/coreclr.git] / Documentation / workflow / OfficalAndDailyBuilds.md
1 # Official Releases and Daily Builds of CoreCLR and CoreFX components
2
3 If you are not planning on actually making bug fixes or experimenting with new features, then you probably
4 don't need to build CoreCLR yourself, as the .NET Runtime team routinely does this for you.   
5
6 Roughly every three months, the .NET Runtime team publishes a new version of .NET Core to Nuget.   .NET Core's
7 official home on NuGet is 
8  
9  * <https://www.nuget.org/packages/Microsoft.NETCore.Runtime.CoreCLR/> 
10  
11 and you can expect to see new versions roughly three months.   However it is also the case that the .NET 
12 Team publishes **daily builds** of all sorts of packages including those built by the CoreCLR and CoreFX 
13 repositories.  You can see what is available from
14
15  * <https://dotnet.myget.org/gallery/dotnet-core>, and in particular you can see the builds of 
16  * CoreCLR at <https://dotnet.myget.org/feed/dotnet-core/package/nuget/Microsoft.NETCore.Runtime.CoreCLR>
17  * NETCore.App at <https://dotnet.myget.org/feed/dotnet-core/package/nuget/Microsoft.NETCore.App>
18
19 These builds have a version number that follows the the versioning scheme described below (month number/day of month), 
20 but they also will have a component that indicate which Git Branch the are working from (note these names were
21 correct as of 1/2018 and may change but the concept of a suffix that designates the branch is likely to persist)
22
23  * preview1 - are daily builds from the 'release/\*' branch where \* is the next official version to be released
24  * preview2 - are daily builds from the 'master' branch (where active work happens first (typically))
25
26 Thus if your goal is just to get the latest bug fixes and features, you don't need to build CoreCLR yourself you 
27 can simply add <https://dotnet.myget.org/F/dotnet-core/api/v3/index.json> to your Nuget Feed list and set the
28 `RuntimeFrameworkVersion` in your project file to a `Microsoft.NETCore.App` version. You need to restore
29 and publish your application so it includes the runtime (`self-contained`). This is done by setting the
30 `RuntimeIdentifier` (e.g. `linux-x64`, `win7-x64`).
31
32 ```
33 <?xml version="1.0" encoding="utf-8"?>
34 <configuration>
35  <packageSources>
36     <add key="dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json"/>
37  </packageSources>
38 </configuration>
39 ```
40 ```
41 <Project Sdk="Microsoft.NET.Sdk">
42   <PropertyGroup>
43     <OutputType>Exe</OutputType>
44     <TargetFramework>netcoreapp2.0</TargetFramework>
45     <RuntimeFrameworkVersion>2.0.0-preview2-*</RuntimeFrameworkVersion>
46     <RuntimeIdentifier>linux-x64</RuntimeIdentifier>
47   </PropertyGroup>
48 </Project>
49 ```
50 ```
51 $ dotnet restore
52 $ dotnet publish
53 $ dotnet bin/Debug/netcoreapp2.0/linux-x64/publish/<app>.dll
54 ```
55
56 ## Package Version Numbers
57
58 Version numbers for Nuget packages look like the following
59 ```
60     1.0.24214.01
61 ```
62 Which have the form
63 ```
64     <major>.<minor>.<buildNumberMajor>.<buildNumberMinor>
65 ```
66
67 * The major version number represents a compatibility band.   If the next release of the package is not
68   backward compatible (most apps that run on version N-1 will run on version N) then this number is increased.
69   This number is not likely to change (we care about compatibility alot)  
70
71 * The minor number is increased every time interesting new features are added (not just minor bug fixes).
72   For CoreCLR we tend to update this every time we create a public release (every 3 months).  
73
74 * The Major Build Number is a number that represents a daily build.   The last 2 digits of this build number
75   is the **day of the month** of the GIT commit that is being built.   Thus we know in the example above this 
76   build's last commit to GIT happened on the 14th day of the month.   The most significant digits represents
77   the month count since April 1996.   In the example above 242 represents Jun 2016.   
78
79 * The Minor Build number is something that disambiguates different builds that share the same 
80   commit (or the different commits on the same day).   It is a sequential number and is typically 1 for
81   official builds, and 0 for developer builds.   (You can set the environment variable BuildNumberMinor if
82   you wish to set it for your own builds).  
83
84   
85
86 See the [Package and File Versioning](https://github.com/dotnet/corefx/blob/master/Documentation/building/versioning.md) page
87 for more details on how the build version number is generated.   
88
89
90
91 # Build/Test Status of the repository
92
93 As mentioned we build the CoreCLR repository daily, and as part of that build we also run all 
94 the tests associted with this repository.  Below is a table of the most recent results for all
95 the different operating systems and architectures that we routinely build.  
96
97 If you click on the images below, you can get more details about the build (including the binaries)
98 and the exact test results (in case your build is failing tests and you are wondering if it is 
99 something affecting all builds).    
100
101 |   | X64 Debug | X64 Release | ARM64 Debug | ARM64 Release |
102 |---|:-----:|:-------:|:-------:|:-------:|
103 |**CentOS 7.1**|[![x64 status](https://ci.dot.net/job/dotnet_coreclr/job/master/job/debug_centos7.1/badge/icon)](http://ci.dot.net/job/dotnet_coreclr/job/master/job/debug_centos7.1)|[![x64 status](https://ci.dot.net/job/dotnet_coreclr/job/master/job/release_centos7.1/badge/icon)](http://ci.dot.net/job/dotnet_coreclr/job/master/job/release_centos7.1)|||
104 |**Debian 8.4**|[![x64 status](https://ci.dot.net/job/dotnet_coreclr/job/master/job/debug_debian8.4/badge/icon)](http://ci.dot.net/job/dotnet_coreclr/job/master/job/debug_debian8.4)|[![x64 status](https://ci.dot.net/job/dotnet_coreclr/job/master/job/release_debian8.4/badge/icon)](http://ci.dot.net/job/dotnet_coreclr/job/master/job/release_debian8.4)|||
105 |**FreeBSD 10.1**|[![x64 status](https://ci.dot.net/job/dotnet_coreclr/job/master/job/debug_freebsd/badge/icon)](http://ci.dot.net/job/dotnet_coreclr/job/master/job/debug_freebsd)|[![x64 status](https://ci.dot.net/job/dotnet_coreclr/job/master/job/release_freebsd/badge/icon)](http://ci.dot.net/job/dotnet_coreclr/job/master/job/release_freebsd)|||
106 |**openSUSE 42.1**|[![x64 status](https://ci.dot.net/job/dotnet_coreclr/job/master/job/debug_opensuse42.1/badge/icon)](http://ci.dot.net/job/dotnet_coreclr/job/master/job/debug_opensuse42.1)|[![x64 status](https://ci.dot.net/job/dotnet_coreclr/job/master/job/release_opensuse42.1/badge/icon)](http://ci.dot.net/job/dotnet_coreclr/job/master/job/release_opensuse42.1)|||
107 |**OS X 10.12**|[![x64 status](https://ci.dot.net/job/dotnet_coreclr/job/master/job/debug_osx10.12/badge/icon)](http://ci.dot.net/job/dotnet_coreclr/job/master/job/debug_osx10.12)|[![x64 status](https://ci.dot.net/job/dotnet_coreclr/job/master/job/release_osx10.12/badge/icon)](http://ci.dot.net/job/dotnet_coreclr/job/master/job/release_osx10.12)|||
108 |**Red Hat 7.2**|[![x64 status](https://ci.dot.net/job/dotnet_coreclr/job/master/job/debug_rhel7.2/badge/icon)](http://ci.dot.net/job/dotnet_coreclr/job/master/job/debug_rhel7.2)|[![x64 status](https://ci.dot.net/job/dotnet_coreclr/job/master/job/release_rhel7.2/badge/icon)](http://ci.dot.net/job/dotnet_coreclr/job/master/job/release_rhel7.2)|||
109 |**Ubuntu 14.04**|[![x64 status](https://ci.dot.net/job/dotnet_coreclr/job/master/job/debug_ubuntu/badge/icon)](http://ci.dot.net/job/dotnet_coreclr/job/master/job/debug_ubuntu)|[![x64 status](https://ci.dot.net/job/dotnet_coreclr/job/master/job/release_ubuntu/badge/icon)](http://ci.dot.net/job/dotnet_coreclr/job/master/job/release_ubuntu)|||
110 |**Ubuntu 16.04**|[![x64 status](https://ci.dot.net/job/dotnet_coreclr/job/master/job/debug_ubuntu16.04/badge/icon)](http://ci.dot.net/job/dotnet_coreclr/job/master/job/debug_ubuntu16.04)|[![x64 status](https://ci.dot.net/job/dotnet_coreclr/job/master/job/release_ubuntu16.04/badge/icon)](http://ci.dot.net/job/dotnet_coreclr/job/master/job/release_ubuntu16.04)|||
111 |**Ubuntu 16.10**|[![x64 status](https://ci.dot.net/job/dotnet_coreclr/job/master/job/debug_ubuntu16.10/badge/icon)](http://ci.dot.net/job/dotnet_coreclr/job/master/job/debug_ubuntu16.10)|[![x64 status](https://ci.dot.net/job/dotnet_coreclr/job/master/job/release_ubuntu16.10/badge/icon)](http://ci.dot.net/job/dotnet_coreclr/job/master/job/release_ubuntu16.10)|||
112 |**Windows 8.1**|[![x64 status](https://ci.dot.net/job/dotnet_coreclr/job/master/job/debug_windows_nt/badge/icon)](http://ci.dot.net/job/dotnet_coreclr/job/master/job/debug_windows_nt)|[![x64 status](https://ci.dot.net/job/dotnet_coreclr/job/master/job/release_windows_nt/badge/icon)](http://ci.dot.net/job/dotnet_coreclr/job/master/job/release_windows_nt)|[![arm64 status](https://ci.dot.net/job/dotnet_coreclr/job/master/job/arm64_cross_debug_windows_nt/badge/icon)](http://ci.dot.net/job/dotnet_coreclr/job/master/job/arm64_cross_debug_windows_nt)|[![arm64 status](https://ci.dot.net/job/dotnet_coreclr/job/master/job/arm64_cross_release_windows_nt/badge/icon)](http://ci.dot.net/job/dotnet_coreclr/job/master/job/arm64_cross_release_windows_nt)|