Proposal: Windows support policy for Jenkins

107 views
Skip to first unread message

Oleg Nenashev

unread,
Apr 10, 2020, 8:26:51 AM4/10/20
to JenkinsCI Developers, Jenkins Platform SIG
Dear all,

As you probably know, Jenkins core and some plugins contain native code, and hence they rely on operating systems and platforms. In principle Jenkins can run everywhere where you can run Java 8 or Java 11, but in practice there are some limitations. Notably we use Java Native Access  and Java Native Runtime libraries which provide wide support for platforms, but there are other components. In the case of Windows platforms we use Windows Service Wrapper (WinSW) and Windows Process Management Library (WinP), which depend on Windows versions and, in the case of windows services, on .NET Framework.

In the Jenkins Platform SIG we have an open topic about Windows support policy in Jenkins. Currently we have no documented support policy for Windows, and it becomes an obstacle for maintainers of Windows-focused components and plugins in the Jenkins project. As a maintainer of WinSW and WinP, I have to be very conservative about Windows support. But it comes at a cost to users, not just maintenance overhead. At the end of the day it also blocks us from adopting new Windows features and making Jenkins more stable/maintenable on modern Windows platforms.

I know for sure that there are Jenkins users running on Windows XP, but IMHO it becomes more and more legacy use-case. Last popular industry version had EoL in 2019 (WinXP Exmbedded POSReady), and IMO it is time to drop WinXP support in new Jenkins releases. Same goes to 32bit systems and non-mainstream architectures like Itanium, we could at least reduce the support level there.

I suggest the following policy:
  • All installers and service wrappers require Windows 7 / Windows Server 2012 or above (and .NET framework 4.0+). They support 64bit platforms only. Support for other platforms are provided via manual jenkins.war deployment
  • Jenkins master runtime requires Windows 7 / Windows Server 2012 or above. It may work on older versions, but we do not guarantee compatibility
  • Jenkins agent runtime requires Windows 7 / Windows Server 2012 or above. It may work on older versions, but we do not guarantee compatibility
  • For all Windows service installations .NET Framework 4.0 or above is required. It is a default version in Windows versions specified above
  • Jenkins master and agent Docker images are not required to provide images for the supported platforms. They can move ahead as maintainers prefer
  • Plugins can define their own support policy, but they are strongly advised to align their Windows support policy with the Jenkins Core versions.
    • We have no way to communicate potential Windows support issues via update center at the moment, so following the Jenkins core requirements is what we can recommend as the best option
  • Custom Jenkins packaging may have different requirements (Jenkinsfile Runner, WARs built by Custom WAR Packager)
Would appreciate feedback from maintainers and Windows users! Any comments and change suggestions are welcome.

If other Plaftorm SIG folks agree with me, I would suggest to add this area to the Jenkins Roadmap. I also created a JENKINS-61865 EPIC to track changes there. I will create tasks in the EPIC once there is a consensus in this thread.

Best regards,
Oleg Nenashev
Platform SIG





 



Tim Jacomb

unread,
Apr 10, 2020, 8:48:16 AM4/10/20
to Jenkins Developers
Sounds reasonable to me +1,
I speak as someone who barely ever touches Windows and never for Jenkins though

Thanks
Tim

Ben Castellucci

unread,
Apr 10, 2020, 9:04:28 AM4/10/20
to Jenkins Developers
Are you mis-matched in your pairing? Windows Server 2012 is in the Windows 8 family. Windows Server 2008 is the 'mate' to Windows 7, isn't it?

--
You received this message because you are subscribed to the Google Groups "Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-de...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/c755618e-b046-44b9-b155-38fdaba6d214%40googlegroups.com.

slide

unread,
Apr 10, 2020, 9:04:37 AM4/10/20
to Jenkins Developers
Hi Oleg,

I think this sounds completely reasonable. If we are supporting these versions, does that mean we are testing Jenkins components (master and agent) on all of the supported platforms? How do we determine that we are maintaining compatibility with those platforms? I assume these types of things will be in a support policy document of some sort?

Regards,

Alex

Jesse Glick

unread,
Apr 10, 2020, 12:43:07 PM4/10/20
to Jenkins Dev
On Fri, Apr 10, 2020 at 9:04 AM slide <slide...@gmail.com> wrote:
> does that mean we are testing Jenkins components (master and agent) on all of the supported platforms?

I suppose at this point we only really test on 2019, right?

Slide

unread,
Apr 10, 2020, 12:51:00 PM4/10/20
to jenkin...@googlegroups.com

> does that mean we are testing Jenkins components (master and agent) on all of the supported platforms?

I suppose at this point we only really test on 2019, right?


Yes, we currently only build and test on Windows Server 2019. To be fair though, we only really test Linux stuff on Ubuntu 18.04 on ci.j.io, so maybe that is ok.
 
--
You received this message because you are subscribed to the Google Groups "Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-de...@googlegroups.com.

Oleg Nenashev

unread,
Apr 10, 2020, 3:11:27 PM4/10/20
to Jenkins Developers
Hi all,

Thanks for the feedback! Please find some responses below

Are you mis-matched in your pairing? Windows Server 2012 is in the Windows 8 family. Windows Server 2008 is the 'mate' to Windows 7, isn't it?

Well, I do not mind to put Windows Server 2008 into the list. My assumption was that the enterprise users have already moved to newer server OS versions, and hence supporting Win Server 2008 is and overkill. Windows 7 is still at ~30% of Windows installations according to some resources. I definitely know a company with hundreds on Jenkins masters which still uses Windows 7 agents, so I would prefer to keep it. Last but not least, I would not like to put Windows 8 into the policy...

If we are supporting these versions, does that mean we are testing Jenkins components (master and agent) on all of the supported platforms? How do we determine that we are maintaining compatibility with those platforms? I assume these types of things will be in a support policy document of some sort?
Ideally we should be doing so, but practically we have no capacity to run wide integration testing right now (FTR Azure and AWS Infra costs for those who follow the Jenkins Infrastructure topics). So, I would not tie the support policy to test coverage.It would be a great follow-up though. If you look for a precedent, we have such one. Our Web browser support policy documents 4 browsers as Level 1 support while we actually run Acceptance Test Harness with 1-2 browsers depending on the test suite.

To address this comment, we could also add support levels to the Windows support policy, with Level 1 for the versions we actually test with. Note that it is going to be tricky for modern OS versions, we know about limitations on some platforms like Windows Server Nano.

Best regards,
Oleg



 



On Friday, April 10, 2020 at 6:51:00 PM UTC+2, slide wrote:

> does that mean we are testing Jenkins components (master and agent) on all of the supported platforms?

I suppose at this point we only really test on 2019, right?


Yes, we currently only build and test on Windows Server 2019. To be fair though, we only really test Linux stuff on Ubuntu 18.04 on ci.j.io, so maybe that is ok.
 
--
You received this message because you are subscribed to the Google Groups "Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkin...@googlegroups.com.

Daniel Beck

unread,
Apr 10, 2020, 8:05:40 PM4/10/20
to Jenkins Developers


> On 10. Apr 2020, at 14:26, Oleg Nenashev <o.v.ne...@gmail.com> wrote:
>
> I know for sure that there are Jenkins users running on Windows XP

That's no reason to enable this insanity.

I would advocate for just going with what's generally supported by Microsoft: Extended support would be in, "throwing bags of money at Microsoft" support is out, i.e. Windows 7 would have been unsupported since January.

This approach would also address the problem of not having to manually keep the policy up to date. As we've seen with the browser support policy, nobody will update it.
Additionally, this has the benefit of being fairly objective criteria, and would also save us from having to have this conversation again in two years.

(And TBH I would just ignore Windows Embedded Industry, seems like a lot of effort for very few users.)

Note also that this doesn't mean that Jenkins on these OSes would necessarily immediately break. If there's a new enough .NET Framework or whatever on Windows 7, and there's no reason to go with something newer, then Windows 7 will just continue to work. But users would know that they cannot indefinitely rely on it.

Obviously I'm +1 for whatever makes it easier for you to support these components, even if it's just small steps.

Oleg Nenashev

unread,
Apr 14, 2020, 6:42:01 AM4/14/20
to JenkinsCI Developers
Taking the feedback, should we introduce support levels like we do with the browser support policy?

* Level 1 - full support. We run automated testing for these platforms 
  - amd64 versions of latest Windows and Windows Server versions, with the latest GA update pack (we will need to specify editions in the final policy)
  - versions in our soon-to-be-official Docker packages (at the moment: windowsservercore and nanoserver 1809)
* Level 2 - generally supported. We do not actively test it, but we intend to keep compatibility, and we are happy to accept patches
  - Windows and Windows Server 64bit versions which are generally supported by MS
* Level 3 - Best effort - We will consider patches if they do not put Level 1/2 support at risk and if they do not create bug maintenance overhead. Support may have limitations and extra requirements. We do not test compatibility, and we may drop support if there is a need
  - x86 and other non-amd64 architectures
  - "exotic" windows versions like Windows Embedded
  - Preview releases and updates by Microsoft
  - Windows API emulation systems like Wine or ReactOS
* Level 4 - Unsupported
  - Platforms and OS versions which are known to be incompatible or which have severe limitations

Best regards,
Oleg




--
You received this message because you are subscribed to a topic in the Google Groups "Jenkins Developers" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jenkinsci-dev/oK8pBCzPPpo/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jenkinsci-de...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/C643B021-1451-4E76-921B-CD9543BA2C86%40beckweb.net.

Olblak

unread,
Apr 14, 2020, 9:02:04 AM4/14/20
to Jenkins Developers ML
I like Oleg proposition very much as it clarifies the different levels of support, and it solves Daniel concerned.
We won't run any tests on deprecated infrastructure like XP.
You received this message because you are subscribed to the Google Groups "Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-de...@googlegroups.com.

Oleg Nenashev

unread,
May 19, 2020, 9:13:10 AM5/19/20
to Jenkins Developers
Hi all,

I have submitted a pull request with a draft policy: https://github.com/jenkins-infra/jenkins.io/pull/3295 .
I will appreciate any feedback from those who is running Jenkins on Windows.

Best regards,
Oleg
To unsubscribe from this group and all its topics, send an email to jenkin...@googlegroups.com.


--
You received this message because you are subscribed to the Google Groups "Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkin...@googlegroups.com.

Oleg Nenashev

unread,
May 28, 2020, 3:14:55 PM5/28/20
to Jenkins Developers
The policy draft was approved at the last governance meeting. After it there were some changes in the plull request, mostly spelling ones. The only notable change is moving Windows 10 amd-64 support from Tier 1 to Tier 2, because we do not actually test it in our CICD flows.

Tier 2 still means "supported", so I think we are fine. Is everyone fine with merging the support policy?

Thanks in advance,
Oleg

Mark Waite

unread,
May 28, 2020, 3:46:10 PM5/28/20
to Jenkins Developers
+1 from me.  I test Windows 10 more than I test any other Windows version.  I'm quite fine with it being Tier 1 or Tier 2.  Either is fine with me.

On Thursday, May 28, 2020 at 1:14:55 PM UTC-6, Oleg Nenashev wrote:
The policy draft was approved at the last governance meeting. After it there were some changes in the pull request, mostly spelling ones. The only notable change is moving Windows 10 amd-64 support from Tier 1 to Tier 2, because we do not actually test it in our CICD flows.

Slide

unread,
May 28, 2020, 4:25:46 PM5/28/20
to jenkin...@googlegroups.com
It's possible we could test on a Windows 10 VM on Azure/AWS. I could look into that.

To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-de...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/59b6074d-f484-4afc-bb7f-8f768200a59a%40googlegroups.com.


--

Tim Van Holder

unread,
Jun 1, 2020, 11:17:56 AM6/1/20
to Jenkins Developers
I only started working on a sort-of-Windows-oriented plugin (dotnet-sdk-plugin), so I did not see this earlier. Going to add my EUR0.02 anyway.

While dropping support for XP seems perfectly sensible to me, I'm not as sure about dropping support for x86.
There, I would take guidance from what Microsoft still supports for the .NET SDKs (given that those are used for building, they seem a relevant data point for a CI server).
Looking at the most bleeding-edge versions, and discounting ARM for now, they support only x64 for Linux and macOS, but both x64 and x86 for Windows.
That would suggest that there is enough of a user/install base to make that relevant for them, which in turn seems like it should make it relevant for Jenkins.

Note: I would see less of an issue having different support levels for a master node and slave nodes; requiring x64 for master may not be unreasonable, but almost dropping support for x86 slaves seems eminently less so.

Disclaimer: I'm personally running only x64 machines, and I'm not sure the company I work for has any x86 slaves left, nor whether we've had recent customers using x86 Windows.
I'm only going off what Microsoft continues to support.

Oleg Nenashev

unread,
Jun 1, 2020, 11:26:18 AM6/1/20
to JenkinsCI Developers
Hi Tim,

Thanks for your feedback! One thing to mention is that we are not dropping support for x86, at least for the time being. Latest edition of the policy in https://github.com/jenkins-infra/jenkins.io/pull/3295 says that it is "Level 3 - Patches considered". Support may have limitations and extra requirements. We do not test compatibility, and we may drop support if there is a need. We will consider patches if they do not put Level 1/2 support at risk and if they do not create maintenance overhead. So we will be still supporting x86, to some extent.

Splitting the policy to masters and agents would make sense, but unfortunately all key features have to run on both of them. I was unable to identify any use-case where "supporting only on an agent" would make difference w.r.t the maintenance overhead.

Best regards,
Oleg


--
You received this message because you are subscribed to a topic in the Google Groups "Jenkins Developers" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jenkinsci-dev/oK8pBCzPPpo/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jenkinsci-de...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/63f4cfe7-c9a8-44ec-9021-c2f3caa93d86%40googlegroups.com.

James Nord

unread,
Jun 3, 2020, 5:11:33 PM6/3/20
to Jenkins Developers
I'm not sure it's just a technical issue.

last I was working in this area there where licensing issues around running Windows 10 in VMs (when you run the windows Amis in Aws you also pay the license for the software, same for GCP Azure etc). Thus we would need to have our own licenses for all these VMS and could not scale on demand.
Then there is the question if which windows 10, the just released 2004, or any of the earlier but still supported versions. They all have their quirks (esp SSH for agents).

I'm one of the minority that develops and tests on Windows, and normally a big advocate for putting windows in CI so it's not me finding all the build issues, but as far as win10 in the build farm is concerned I think we're on the path of diminishing returns.

Oleg Nenashev

unread,
Jun 3, 2020, 5:34:03 PM6/3/20
to Jenkins Developers
Anyway, at the governance meeting we agreed to keep the Windows 10 support as Level 2 for now.
Later we can move it to Level 1 if/when we have enough test coverage there.
Reply all
Reply to author
Forward
0 new messages