From 43e4f5c48a888d181b294b9fbc3653a06a6644db Mon Sep 17 00:00:00 2001
From: Jan Faracik <43062514+janfaracik@users.noreply.github.com>
Date: Tue, 17 May 2022 00:29:22 +0100
Subject: [PATCH 01/64] Init
---
war/src/main/less/modules/section.less | 46 +++++++++++--------
.../{modules => pages}/manage-jenkins.less | 2 -
war/src/main/less/styles.less | 2 +-
3 files changed, 28 insertions(+), 22 deletions(-)
rename war/src/main/less/{modules => pages}/manage-jenkins.less (94%)
diff --git a/war/src/main/less/modules/section.less b/war/src/main/less/modules/section.less
index 9bbd02a30dd8..2140b8499796 100644
--- a/war/src/main/less/modules/section.less
+++ b/war/src/main/less/modules/section.less
@@ -57,10 +57,7 @@
&::after {
position: absolute;
content: "";
- top: -10px;
- left: -10px;
- bottom: -10px;
- right: -10px;
+ inset: -10px;
z-index: -1;
border-radius: 10px;
transition: var(--standard-transition);
@@ -110,30 +107,35 @@
align-items: center;
justify-content: center;
margin: 0 1rem 0 0;
- width: 48px;
- height: 48px;
- margin: 0 1rem 0 0;
+ width: 3rem;
+ height: 3rem;
flex-shrink: 0;
color: var(--text-color);
- &::before {
+ &::before,
+ &::after {
content: "";
position: absolute;
- top: 0;
- left: 0;
- bottom: 0;
- right: 0;
+ inset: 0;
border-radius: 100%;
+ pointer-events: none;
+ }
+
+ &::before {
background: currentColor;
opacity: 0.1;
- pointer-events: none;
+ }
+
+ &::after {
+ border: 1px solid currentColor;
+ opacity: 0.015;
}
img,
svg {
position: relative;
- width: 24px !important;
- height: 24px !important;
+ width: 50% !important;
+ height: 50% !important;
color: currentColor;
}
@@ -152,6 +154,7 @@
padding: 0 0.4rem;
box-shadow: 0 1px 1px rgba(black, 0.1);
color: white;
+ animation: animate-in-badge var(--elastic-transition) 0.1s both;
&::after {
content: "";
@@ -171,15 +174,20 @@
dt {
font-size: 0.95rem;
font-weight: 600;
- margin: 0 0 2px 0;
+ margin: 0 0 0.25rem 0;
color: var(--text-color);
}
dd {
color: var(--text-color-secondary);
font-weight: 500;
- margin: 0;
- line-height: 1.66;
- margin-right: 10px;
+ line-height: 1.6;
+ margin: 0 10px 0 0;
+ }
+}
+
+@keyframes animate-in-badge {
+ from {
+ transform: scale(0);
}
}
diff --git a/war/src/main/less/modules/manage-jenkins.less b/war/src/main/less/pages/manage-jenkins.less
similarity index 94%
rename from war/src/main/less/modules/manage-jenkins.less
rename to war/src/main/less/pages/manage-jenkins.less
index c21b66c0a77b..13f7b24c544a 100644
--- a/war/src/main/less/modules/manage-jenkins.less
+++ b/war/src/main/less/pages/manage-jenkins.less
@@ -1,5 +1,3 @@
-/* ----------- Manage Jenkins page ----------- */
-
.manage-messages a,
.manage-messages a:visited {
color: inherit !important;
diff --git a/war/src/main/less/styles.less b/war/src/main/less/styles.less
index e42688bbc720..87ed0040a5b2 100644
--- a/war/src/main/less/styles.less
+++ b/war/src/main/less/styles.less
@@ -41,7 +41,6 @@ html {
@import './modules/content-blocks';
@import './modules/icon-size';
@import './modules/icons';
-@import './modules/manage-jenkins';
@import './modules/page-footer';
@import './modules/page-header';
@import './modules/panes-and-bigtable';
@@ -55,5 +54,6 @@ html {
@import './modules/tooltips';
@import './pages/about';
+@import './pages/manage-jenkins';
@import './pages/plugin-manager';
@import './pages/setupWizardFirstUser';
From d579dc5ae2142c96f47f4de496a8f1c973fb1831 Mon Sep 17 00:00:00 2001
From: Jan Faracik <43062514+janfaracik@users.noreply.github.com>
Date: Tue, 17 May 2022 00:52:29 +0100
Subject: [PATCH 02/64] Update section.less
---
war/src/main/less/modules/section.less | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/war/src/main/less/modules/section.less b/war/src/main/less/modules/section.less
index 2140b8499796..34d8b9e367d2 100644
--- a/war/src/main/less/modules/section.less
+++ b/war/src/main/less/modules/section.less
@@ -70,7 +70,7 @@
}
&::after {
- box-shadow: 0 0 0 10px transparent;
+ box-shadow: 0 0 0 10px currentColor;
}
&:hover,
From 316d9907dea2fa2cf31b238a9f0904932a9ae287 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 26 May 2022 09:48:13 -0700
Subject: [PATCH 03/64] Bump `executable-war` from 2.6 to 2.7 (#6602)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
war/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/war/pom.xml b/war/pom.xml
index bb3cbacc4953..dfc597a0ae46 100644
--- a/war/pom.xml
+++ b/war/pom.xml
@@ -124,7 +124,7 @@ THE SOFTWARE.
org.jenkins-ciexecutable-war
- 2.6
+ 2.7provided
From 80c5e5199760e074649f8df1bf318c65a882f68a Mon Sep 17 00:00:00 2001
From: Basil Crow
Date: Fri, 27 May 2022 08:41:01 -0700
Subject: [PATCH 04/64] Organize Dependabot configuration (#6603)
---
.github/dependabot.yml | 69 +++++++++++++++++++++++++++++-------------
1 file changed, 48 insertions(+), 21 deletions(-)
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 1f7a2eeccb18..095dd5abc415 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -1,3 +1,4 @@
+---
version: 2
updates:
- package-ecosystem: "github-actions"
@@ -9,30 +10,56 @@ updates:
schedule:
interval: "daily"
ignore:
- # see https://github.com/jenkinsci/jenkins/pull/5112#issuecomment-744429487 and https://github.com/jenkinsci/jenkins/pull/5116#issuecomment-744526638
- # it would be good to update it at some point, but requires significant testing
+ # Exclusions in this section have been triaged and determined to be
+ # permanent. We do not anticipate removing exclusions from this section.
+
+ # Provided by Jetty and should be aligned with the version provided by the
+ # version of Jetty we deliver. See:
+ # https://github.com/jenkinsci/jenkins/pull/5211
+ - dependency-name: "javax.servlet:javax.servlet-api"
+
+ # Jetty Maven Plugin and Winstone should be upgraded in lockstep in order
+ # to keep their corresponding Jetty versions aligned.
+ - dependency-name: "org.eclipse.jetty:jetty-maven-plugin"
+ - dependency-name: "org.jenkins-ci:winstone"
+
+ # Log4j 1.2.17 is the final 1.x release.
+ - dependency-name: "log4j:log4j"
+
+
+ # Here lies technical debt. Exclusions in this section have been triaged
+ # and determined to be temporary. Exclusions should be removed from this
+ # section once the remaining action items have been completed.
+
+ # Fails test automation; needs further investigation.
+ - dependency-name: "com.google.inject:guice-bom"
+
+ # Requires Java 11 starting with version 10.0.
+ - dependency-name: "com.puppycrawl.tools:checkstyle"
+ versions: [">=10.0"]
+
+ # Contains incompatible API changes and needs compatibility work.
+ - dependency-name: "jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api"
+
+ # This is a banned dependency, and we have a redundant trick in our POM to
+ # prevent it from being pulled in. If and when the reference is removed in
+ # our POM, this exclusion can also be removed.
+ - dependency-name: "javax.servlet:servlet-api"
+
+ # Needs significant testing. See:
+ # https://github.com/jenkinsci/jenkins/pull/5112#issuecomment-744429487
+ # https://github.com/jenkinsci/jenkins/pull/5116#issuecomment-744526638
- dependency-name: "org.codehaus.groovy:groovy-all"
versions: [">=2.5.0"]
- # see https://github.com/jenkinsci/jenkins/pull/5184 should be updated with groovy-all
+
+ # Consumed by Groovy and should be updated in lockstep with Groovy. See:
+ # https://github.com/jenkinsci/jenkins/pull/5184
- dependency-name: "org.fusesource.jansi:jansi"
- # this is a banned dependency, we have a hack in our pom to prevent anyone else pulling it in
- - dependency-name: "javax.servlet:servlet-api"
- # needs a jakarta upgrade project, imports changed
- - dependency-name: "jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api"
- # Starting with version 2.0.2, this library requires Java 11
+
+ # Requires Java 11 starting with version 2.0.2.
- dependency-name: "org.glassfish.tyrus.bundles:tyrus-standalone-client-jdk"
versions: [">=2.0.2"]
- # see https://github.com/jenkinsci/jenkins/pull/4224 can't be updated without breaking api
+
+ # Contains incompatible API changes and needs compatibility work. See:
+ # https://github.com/jenkinsci/jenkins/pull/4224
- dependency-name: "org.jfree:jfreechart"
- # the dependency is actually provided by the Web container, hence it is aligned with Jetty. See https://github.com/jenkinsci/jenkins/pull/5211
- - dependency-name: "javax.servlet:javax.servlet-api"
- # log4j 1.2.17 is the final 1.x release
- - dependency-name: "log4j:log4j"
- # Must remain within jetty 9.x until Java 8 support is removed, ignore jetty 10.x and jetty 11.x updates
- - dependency-name: "org.eclipse.jetty:jetty-maven-plugin"
- versions: [">=10.0.0"]
- # Winstone upgrades require multiple changes in pom.xml. See https://github.com/jenkinsci/jenkins/pull/5439#discussion_r616418468
- - dependency-name: "org.jenkins-ci:winstone"
- # Starting with version 10.0, this library requires Java 11
- - dependency-name: "com.puppycrawl.tools:checkstyle"
- versions: [">=10.0"]
From fc955acc86e3235b3db05aa80b2c25e85b5f21f4 Mon Sep 17 00:00:00 2001
From: Jan Faracik <43062514+janfaracik@users.noreply.github.com>
Date: Fri, 27 May 2022 18:06:04 +0100
Subject: [PATCH 05/64] Remove polyfills.js (#6605)
---
.../main/resources/lib/layout/layout.jelly | 2 --
war/src/main/webapp/scripts/polyfills.js | 30 -------------------
2 files changed, 32 deletions(-)
delete mode 100644 war/src/main/webapp/scripts/polyfills.js
diff --git a/core/src/main/resources/lib/layout/layout.jelly b/core/src/main/resources/lib/layout/layout.jelly
index d4b9ce47cc51..fb140545b368 100644
--- a/core/src/main/resources/lib/layout/layout.jelly
+++ b/core/src/main/resources/lib/layout/layout.jelly
@@ -143,8 +143,6 @@ THE SOFTWARE.
-
-
diff --git a/war/src/main/webapp/scripts/polyfills.js b/war/src/main/webapp/scripts/polyfills.js
deleted file mode 100644
index d5eb9dddbe2f..000000000000
--- a/war/src/main/webapp/scripts/polyfills.js
+++ /dev/null
@@ -1,30 +0,0 @@
-// polyfill for closest and matches for IE 11
-// https://developer.mozilla.org/en-US/docs/Web/API/Element/closest
-if (!Element.prototype.matches) {
- Element.prototype.matches = Element.prototype.msMatchesSelector ||
- Element.prototype.webkitMatchesSelector;
-}
-
-if (!Element.prototype.closest) {
- Element.prototype.closest = function(s) {
- var el = this;
-
- do {
- if (Element.prototype.matches.call(el, s)) return el;
- el = el.parentElement || el.parentNode;
- } while (el !== null && el.nodeType === 1);
- return null;
- };
-}
-
-// end closest / matches polyfill
-
-// https://developer.mozilla.org/en-US/docs/Web/API/NodeList/forEach#Polyfill
-if (window.NodeList && !NodeList.prototype.forEach) {
- NodeList.prototype.forEach = function (callback, thisArg) {
- thisArg = thisArg || window;
- for (var i = 0; i < this.length; i++) {
- callback.call(thisArg, this[i], i, this);
- }
- };
-}
From d2e3468fb7ec1ab4ae7b98d62e2262834a13cd1f Mon Sep 17 00:00:00 2001
From: Alceu Rodrigues de Freitas Junior
Date: Sun, 29 May 2022 20:11:53 -0300
Subject: [PATCH 06/64] Brazilian Portuguese updates (#6608)
---
.../hudson/model/View/newJobButtonBar_pt_BR.properties | 2 +-
.../resources/hudson/scm/Messages_pt_BR.properties | 7 +++----
.../hudson/slaves/JNLPLauncher/config_pt_BR.properties | 3 +--
.../hudson/slaves/JNLPLauncher/main_pt_BR.properties | 10 ++++------
.../model/Jenkins/fingerprintCheck_pt_BR.properties | 9 ++-------
.../resources/jenkins/model/Messages_pt_BR.properties | 2 +-
.../message_pt_BR.properties | 7 +++++++
.../main/resources/lib/layout/layout_pt_BR.properties | 2 --
8 files changed, 19 insertions(+), 23 deletions(-)
diff --git a/core/src/main/resources/hudson/model/View/newJobButtonBar_pt_BR.properties b/core/src/main/resources/hudson/model/View/newJobButtonBar_pt_BR.properties
index d9f62b5886c7..79fab369af55 100644
--- a/core/src/main/resources/hudson/model/View/newJobButtonBar_pt_BR.properties
+++ b/core/src/main/resources/hudson/model/View/newJobButtonBar_pt_BR.properties
@@ -20,4 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-OK=OK
+OK=Tudo certo
diff --git a/core/src/main/resources/hudson/scm/Messages_pt_BR.properties b/core/src/main/resources/hudson/scm/Messages_pt_BR.properties
index 1853d234d245..fbf89a9023df 100644
--- a/core/src/main/resources/hudson/scm/Messages_pt_BR.properties
+++ b/core/src/main/resources/hudson/scm/Messages_pt_BR.properties
@@ -22,7 +22,6 @@
NullSCM.DisplayName=Nenhum
SCM.Permissions.Title=SCM
-# \
-# This permission allows users to create a new tag in the source code repository \
-# for a given build.
-SCM.TagPermission.Description=Essa op\u00e7\u00e3o permite aos usu\u00e1rios criarem uma nova TAG no reposit\u00f3rio de c\u00f3digo fonte
+SCM.TagPermission.Description=\
+ Permite aos usu\u00E1rios criarem etiquetas no reposit\u00F3rio do c\u00F3digo-fonte para uma dada constru\u00E7\u00E3o.
+
diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/config_pt_BR.properties b/core/src/main/resources/hudson/slaves/JNLPLauncher/config_pt_BR.properties
index 89efc02556bb..06c58a3a56ed 100644
--- a/core/src/main/resources/hudson/slaves/JNLPLauncher/config_pt_BR.properties
+++ b/core/src/main/resources/hudson/slaves/JNLPLauncher/config_pt_BR.properties
@@ -21,6 +21,5 @@
# THE SOFTWARE.
Tunnel\ connection\ through=T\u00FAnel conecta atrav\u00E9s
-JVM\ options=Op\u00E7\u00F5es da JVM
-Enable\ work\ directory=Habilitar\ diret\u00F3rio\ de\ trabalho
+Enable\ work\ directory=Habilitar diret\u00F3rio de trabalho
Use\ WebSocket=Usar\ um\ websocket
diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/main_pt_BR.properties b/core/src/main/resources/hudson/slaves/JNLPLauncher/main_pt_BR.properties
index 60a58aef6466..886bf2225897 100644
--- a/core/src/main/resources/hudson/slaves/JNLPLauncher/main_pt_BR.properties
+++ b/core/src/main/resources/hudson/slaves/JNLPLauncher/main_pt_BR.properties
@@ -1,6 +1,7 @@
# The MIT License
#
-# Copyright (c) 2004-2010, Sun Microsystems, Inc., Cleiber Silva, Fernando Boaglio
+# Copyright (c) 2004-, Kohsuke Kawaguchi, Sun Microsystems, Inc., and a number
+# of other of contributors
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -20,12 +21,9 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-launch\ agent=Lan\u00E7ar agente
slaveAgentPort.disabled=Porta TCP para JNLP est\u00E1 desativada
configure.link.text=V\u00E1 para a p\u00E1gina de configura\u00E7\u00E3o de seguran\u00E7a para alterar
-Or\ if\ the\ agent\ is\ headless\:=Ou\ se\ o\ agente\ for\ do\ tipo\ sem\ interface\ gr\u00E1fica
Agent\ is\ connected.=O\ agente\ est\u00E1\ conectado.
-Run\ from\ agent\ command\ line,\ with\ the\ secret\ stored\ in\ a\ file\:=Executar\ da\ linha\ de\ comando\ do\ agente\ com\ um\ segredo\ armazenado\ em\ um\ arquivo\:
-Launch\ agent\ from\ browser=Lan\u00E7ar\ um\ agente\ de\ um\ navegador
-Connect\ agent\ to\ Jenkins\ one\ of\ these\ ways\:=Conectar\ o\ agente\ com\ o\ Jenkins\ usando\ uma\ das\ seguintes\ maneiras\:
Run\ from\ agent\ command\ line\:=Executar\ da\ linha\ de\ comando\ do\ agente\:
+Or\ run\ from\ agent\ command\ line,\ with\ the\ secret\ stored\ in\ a\ file\:=Ou execute pela linha de comando do \
+ agente com o segredo armazenado em um arquivo:
diff --git a/core/src/main/resources/jenkins/model/Jenkins/fingerprintCheck_pt_BR.properties b/core/src/main/resources/jenkins/model/Jenkins/fingerprintCheck_pt_BR.properties
index 64667db85d28..d1ce2ab4d2dd 100644
--- a/core/src/main/resources/jenkins/model/Jenkins/fingerprintCheck_pt_BR.properties
+++ b/core/src/main/resources/jenkins/model/Jenkins/fingerprintCheck_pt_BR.properties
@@ -23,13 +23,8 @@
Check\ File\ Fingerprint=Verificar impress\u00E3o digital do arquivo
File\ to\ check=Arquivo para verificar
Check=Verificar
-# https://www.jenkins.io/redirect/fingerprint
fingerprint.link=https://www.jenkins.io/redirect/fingerprint
-# \
-# Got a jar file but don''t know which version it is? \
-# Find that out by checking the fingerprint against \
-# the database in Jenkins
description=\
- Tem um arquivo jar mas n\u00E3o sabe em qual vers\u00e3o est\u00e1? \
- Descubra atrav\u00e9s dos fingerprints na base de dados do Jenkins
+ Tem um arquivo jar mas n\u00E3o sabe em qual vers\u00E3o est\u00E1? \
+ Descubra atrav\u00E9s dos fingerprints na base de dados do Jenkins
more\ details=mais detalhes
diff --git a/core/src/main/resources/jenkins/model/Messages_pt_BR.properties b/core/src/main/resources/jenkins/model/Messages_pt_BR.properties
index 2fb38afc560e..175daad8733e 100644
--- a/core/src/main/resources/jenkins/model/Messages_pt_BR.properties
+++ b/core/src/main/resources/jenkins/model/Messages_pt_BR.properties
@@ -54,7 +54,7 @@ DefaultProjectNamingStrategy.DisplayName=Padr\u00E3o
ParameterizedJobMixIn.build_with_parameters=Construir com par\u00E2metros
ParameterizedJobMixIn.build_now=Construir agora
BlockedBecauseOfBuildInProgress.shortDescription=A constru\u00E7\u00E3o #{0} j\u00E1 est\u00E1 em progresso {1}
-BlockedBecauseOfBuildInProgress.ETA=\ (ETA: {0})
+BlockedBecauseOfBuildInProgress.ETA=\ (Tempo estimado de t\u00E9rmino: {0})
BuildDiscarderProperty.displayName=Descartar constru\u00E7\u00F5es antigas
CLI.disable-job.shortDescription=Desabilitar uma tarefa
CLI.enable-job.shortDescription=Habilita uma tarefa
diff --git a/core/src/main/resources/jenkins/monitor/JavaVersionRecommendationAdminMonitor/message_pt_BR.properties b/core/src/main/resources/jenkins/monitor/JavaVersionRecommendationAdminMonitor/message_pt_BR.properties
index 361561422591..cd2ea1228c1f 100644
--- a/core/src/main/resources/jenkins/monitor/JavaVersionRecommendationAdminMonitor/message_pt_BR.properties
+++ b/core/src/main/resources/jenkins/monitor/JavaVersionRecommendationAdminMonitor/message_pt_BR.properties
@@ -22,3 +22,10 @@
More\ Info=Mais informa\u00E7\u00E3o
Dismiss=Dispensar
+Recommended_Java_Version=
Voc\u00EA est\u00E1 executando o Jenkins com o Java {0}, cujo \
+ suporte ser\u00E1 encerrado em 21 de junho de 2022. Isto \u00E9 antes do que a data previamente anunciada.
\
+
A linha de suporte de longo per\u00EDodo (LTS) do Jenkins continuar\u00E1 a suportar esta \
+ vers\u00E3o at\u00E9 setembro de 2022.
Por favor se refira a \
+ \
+ a documenta\u00E7\u00E3o para maiores detalhes sobre atualizar para o Java vers\u00E3o 11.
+Recommended_Java_Version_Heading=Fim de suporte ao Java {0} pelo Jenkins
diff --git a/core/src/main/resources/lib/layout/layout_pt_BR.properties b/core/src/main/resources/lib/layout/layout_pt_BR.properties
index 5f9047d2664c..54dcb0014fd8 100644
--- a/core/src/main/resources/lib/layout/layout_pt_BR.properties
+++ b/core/src/main/resources/lib/layout/layout_pt_BR.properties
@@ -21,9 +21,7 @@
# THE SOFTWARE.
search=pesquisar
-# https://www.jenkins.io/redirect/search-box
searchBox.url=https://www.jenkins.io/redirect/search-box
-# log out
logout=sair
title=Jenkins
jenkinshead.alt=Jenkins
From d4d1fb8a17ea61b3c8d86bfcfa598eadd428c35d Mon Sep 17 00:00:00 2001
From: Alexander Brandes
Date: Mon, 30 May 2022 18:51:14 +0200
Subject: [PATCH 07/64] feat: Update Readme banner to look better on different
GH themes (#6610)
---
README.md | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index ecf83732aa6f..9c48c427cc2b 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,9 @@
-[![][ButlerImage]][website]
+
+
+
# About
@@ -68,9 +73,6 @@ See [adopters](https://www.jenkins.io/project/adopters/) for the list of Jenkins
# License
Jenkins is **licensed** under the **[MIT License]**.
-
-[ButlerImage]: https://www.jenkins.io/sites/default/files/jenkins_logo.png
[MIT License]: https://github.com/jenkinsci/jenkins/blob/master/LICENSE.txt
-[Mirrors]: http://mirrors.jenkins-ci.org
[GitHub]: https://github.com/jenkinsci/jenkins
[website]: https://www.jenkins.io/
From ac4d8717dc1ce3e505bd96c0bdf8bfa86c7bac79 Mon Sep 17 00:00:00 2001
From: Ikko Ashimine
Date: Tue, 31 May 2022 02:48:07 +0900
Subject: [PATCH 08/64] Fix typo in `container-debug.js` (#6606)
---
war/src/main/webapp/scripts/yui/container/container-debug.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/war/src/main/webapp/scripts/yui/container/container-debug.js b/war/src/main/webapp/scripts/yui/container/container-debug.js
index 2120977d8e54..a792385911da 100644
--- a/war/src/main/webapp/scripts/yui/container/container-debug.js
+++ b/war/src/main/webapp/scripts/yui/container/container-debug.js
@@ -7246,7 +7246,7 @@ version: 2.9.0
*
*
* Built-in functionality for buttons with event handlers is included.
- * If the optional YUI Button dependancy is included on the page, the buttons
+ * If the optional YUI Button dependency is included on the page, the buttons
* created will be instances of YAHOO.widget.Button, otherwise regular HTML buttons
* will be created.
*
*/
DomNodeList domNodes = htmlPage.getDocumentElement().querySelectorAll("*");
- assertThat(domNodes, hasSize(5));
+ assertThat(domNodes, hasSize(4));
assertEquals("head", domNodes.get(0).getNodeName());
assertEquals("body", domNodes.get(1).getNodeName());
assertEquals("div", domNodes.get(2).getNodeName());
- assertEquals("img", domNodes.get(3).getNodeName());
- assertEquals("a", domNodes.get(4).getNodeName());
+ assertEquals("a", domNodes.get(3).getNodeName());
// only: ">
// the first double quote was escaped during creation (with the backslash)
String unquotedLabel = Label.parseExpression(label).getName();
- HtmlAnchor anchor = (HtmlAnchor) domNodes.get(4);
+ HtmlAnchor anchor = (HtmlAnchor) domNodes.get(3);
assertThat(anchor.getHrefAttribute(), containsString(Util.rawEncode(unquotedLabel)));
assertThat(responseContent, containsString("ok"));
diff --git a/test/src/test/java/lib/form/NumberTest.java b/test/src/test/java/lib/form/NumberTest.java
index 0bef86dbc26f..d12840495522 100644
--- a/test/src/test/java/lib/form/NumberTest.java
+++ b/test/src/test/java/lib/form/NumberTest.java
@@ -177,7 +177,7 @@ private String typeValueAndGetErrorMessage(HtmlInput input, String value) throws
input.reset(); // Remove the value that already in the
input.type(value); // Type value to
input.fireEvent(Event.TYPE_CHANGE); // The error message is triggered by change event
- return input.getParentNode().getNextSibling().getChildNodes().get(1).getChildNodes().get(0).getTextContent();
+ return input.getParentNode().getNextSibling().getTextContent();
}
diff --git a/war/src/main/less/base/style.less b/war/src/main/less/base/style.less
index d587a3ee448b..042597244d19 100644
--- a/war/src/main/less/base/style.less
+++ b/war/src/main/less/base/style.less
@@ -542,64 +542,6 @@ div.behavior-loading {
padding: 0;
}
-
-/* ======================== error/warning message (mainly in the form.) Use them on block elements ======================== */
-.error {
- color: #c00;
- font-weight: bold;
- padding-left: 20px;
- min-height: 16px;
- line-height: 16px;
- background-image: url("../../images/svgs/error.svg");
- background-position: left top;
- background-repeat: no-repeat;
- background-size: 16px 16px;
-}
-
-.error-inline {
- color: #c00;
- font-weight: bold;
-}
-
-.warning {
- color: #c4a000;
- font-weight: bold;
- padding-left: 20px;
- min-height: 16px;
- line-height: 16px;
- background-image: url("../../images/svgs/warning.svg");
- background-position: left top;
- background-repeat: no-repeat;
- background-size: 16px 16px;
-}
-
-.warning-inline {
- color: #c4a000;
- font-weight: bold;
-}
-
-.info {
- position: relative;
- color: var(--text-color);
- font-weight: bold;
- min-height: 16px;
- padding-left: 30px;
-
- &::before {
- content: "";
- position: absolute;
- top: 0;
- left: 0;
- bottom: 0;
- width: 20px;
- background: currentColor;
- mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'%3E%3Ctitle%3EArrow Forward%3C/title%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='32' d='M268 112l144 144-144 144M392 256H100'/%3E%3C/svg%3E");
- mask-position: center;
- mask-size: contain;
- mask-repeat: no-repeat;
- }
-}
-
.icon16x16 {
width: 16px;
height: 16px;
diff --git a/war/src/main/less/form/validation.less b/war/src/main/less/form/validation.less
new file mode 100644
index 000000000000..3d2a18c04d82
--- /dev/null
+++ b/war/src/main/less/form/validation.less
@@ -0,0 +1,84 @@
+.validation-error-area {
+ transition: var(--standard-transition);
+ opacity: 0;
+ height: 0;
+ overflow: hidden;
+}
+
+.validation-error-area--visible {
+ margin-top: 0.75rem;
+ opacity: 1;
+
+ & > * {
+ animation: animate-validation-error-area var(--standard-transition);
+ }
+}
+
+@keyframes animate-validation-error-area {
+ from {
+ opacity: 0;
+ }
+ to {
+ opacity: 1;
+ }
+}
+
+.error,
+.warning,
+.info {
+ position: relative;
+ padding-left: calc(22px + 0.4rem);
+ font-weight: 500;
+
+ &::before {
+ content: "";
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ width: 22px;
+ height: 22px;
+ background-color: currentColor;
+ mask-position: top center;
+ mask-repeat: no-repeat;
+ mask-size: contain;
+ }
+}
+
+.ok {
+ color: var(--text-color-secondary);
+}
+
+.error {
+ color: var(--red);
+
+ &::before {
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512' viewBox='0 0 512 512'%3E%3Ctitle%3Eionicons-v5-a%3C/title%3E%3Cpath d='M256,48C141.31,48,48,141.31,48,256s93.31,208,208,208,208-93.31,208-208S370.69,48,256,48Zm0,319.91a20,20,0,1,1,20-20A20,20,0,0,1,256,367.91Zm21.72-201.15-5.74,122a16,16,0,0,1-32,0l-5.74-121.94v-.05a21.74,21.74,0,1,1,43.44,0Z'/%3E%3C/svg%3E");
+ }
+}
+
+.error-inline {
+ color: var(--red);
+ font-weight: 500;
+}
+
+.warning {
+ color: var(--orange);
+
+ &::before {
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512' viewBox='0 0 512 512'%3E%3Ctitle%3Eionicons-v5-r%3C/title%3E%3Cpath d='M449.07,399.08,278.64,82.58c-12.08-22.44-44.26-22.44-56.35,0L51.87,399.08A32,32,0,0,0,80,446.25H420.89A32,32,0,0,0,449.07,399.08Zm-198.6-1.83a20,20,0,1,1,20-20A20,20,0,0,1,250.47,397.25ZM272.19,196.1l-5.74,122a16,16,0,0,1-32,0l-5.74-121.95v0a21.73,21.73,0,0,1,21.5-22.69h.21a21.74,21.74,0,0,1,21.73,22.7Z'/%3E%3C/svg%3E");
+ }
+}
+
+.warning-inline {
+ color: var(--orange);
+ font-weight: 500;
+}
+
+.info {
+ color: var(--text-color);
+
+ &::before {
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'%3E%3Ctitle%3EArrow Forward%3C/title%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='32' d='M268 112l144 144-144 144M392 256H100'/%3E%3C/svg%3E");
+ }
+}
diff --git a/war/src/main/less/modules/buttons-temp.less b/war/src/main/less/modules/buttons-temp.less
index dc032fd11ca3..610a30464b99 100644
--- a/war/src/main/less/modules/buttons-temp.less
+++ b/war/src/main/less/modules/buttons-temp.less
@@ -131,3 +131,19 @@ each(@variants, {
}
}
});
+
+.jenkins-validate-button__container {
+ &__status {
+ .validation-error-area {
+ min-height: 36px !important;
+ }
+ }
+
+ .validation-error-area--visible {
+ margin-top: 0;
+ }
+
+ & > span {
+ float: right;
+ }
+}
diff --git a/war/src/main/less/styles.less b/war/src/main/less/styles.less
index 07e8270b7d49..016485215580 100644
--- a/war/src/main/less/styles.less
+++ b/war/src/main/less/styles.less
@@ -32,6 +32,7 @@ html {
@import './form/search';
@import './form/select';
@import './form/toggle-switch';
+@import './form/validation';
@import './modules/app-bar';
@import './modules/badges';
diff --git a/war/src/main/webapp/scripts/hudson-behavior.js b/war/src/main/webapp/scripts/hudson-behavior.js
index 1e94eb6f928e..c3aebaaa8b2e 100644
--- a/war/src/main/webapp/scripts/hudson-behavior.js
+++ b/war/src/main/webapp/scripts/hudson-behavior.js
@@ -232,7 +232,7 @@ var FormChecker = {
this.sendRequest(next.url, {
method : next.method,
onComplete : function(x) {
- applyErrorMessage(next.target, x);
+ updateValidationArea(next.target, x.responseText);
FormChecker.inProgress--;
FormChecker.schedule();
layoutUpdateCallback.call();
@@ -500,16 +500,53 @@ var tooltip;
// Behavior rules
//========================================================
// using tag names in CSS selector makes the processing faster
+
+
+/**
+ * Updates the validation area for a form element
+ * @param {HTMLElement} validationArea The validation area for a given form element
+ * @param {string} content The content to update the validation area with
+ */
+function updateValidationArea(validationArea, content) {
+ validationArea.classList.add("validation-error-area--visible");
+
+ if (content === "") {
+ validationArea.classList.remove("validation-error-area--visible");
+ validationArea.style.height = "0px";
+ validationArea.innerHTML = content;
+ } else {
+ // Only change content if different, causes an unnecessary animation otherwise
+ if (validationArea.innerHTML !== content) {
+ validationArea.innerHTML = content;
+ validationArea.style.height = validationArea.children[0].offsetHeight + "px";
+
+ // Only include the notice in the validation-error-area, move all other elements out
+ if (validationArea.children.length > 1) {
+ Array.from(validationArea.children).slice(1).forEach((element) => {
+ validationArea.after(element);
+ })
+ }
+
+ Behaviour.applySubtree(validationArea);
+ // For errors with additional details, apply the subtree to the expandable details pane
+ if (validationArea.nextElementSibling) {
+ Behaviour.applySubtree(validationArea.nextElementSibling);
+ }
+ }
+ }
+}
+
function registerValidator(e) {
// Retrieve the validation error area
- var tr = findFollowingTR(e, "validation-error-area");
+ var tr = e.closest(".jenkins-form-item").querySelector(".validation-error-area");
if (!tr) {
- console.warn("Couldn't find the expected parent element (.setting-main) for element", e)
+ console.warn("Couldn't find the expected validation element (.validation-error-area) for element",
+ e.closest(".jenkins-form-item"))
return;
}
// find the validation-error-area
- e.targetElement = tr.firstElementChild.nextSibling;
+ e.targetElement = tr;
e.targetUrl = function() {
var url = this.getAttribute("checkUrl");
@@ -545,19 +582,13 @@ function registerValidator(e) {
}
var checker = function() {
- var target = this.targetElement;
+ const validationArea = this.targetElement;
FormChecker.sendRequest(this.targetUrl(), {
method : method,
- onComplete : function(x) {
- if (x.status == 200) {
- // All FormValidation responses are 200
- target.innerHTML = x.responseText;
- } else {
- // Content is taken from FormValidation#_errorWithMarkup
- // TODO Add i18n support
- target.innerHTML = "
An internal error occurred during form field validation (HTTP " + x.status + "). Please reload the page and if the problem persists, ask the administrator for help.
An internal error occurred during form field validation (HTTP ${status}). Please reload the page and if the problem persists, ask the administrator for help.
`;
+ updateValidationArea(validationArea, status === 200 ? responseText : errorMessage);
}
});
}
@@ -584,22 +615,25 @@ function registerValidator(e) {
}
function registerRegexpValidator(e,regexp,message) {
- var tr = findFollowingTR(e, "validation-error-area");
+ var tr = e.closest(".jenkins-form-item").querySelector( ".validation-error-area");
if (!tr) {
- console.warn("Couldn't find the expected parent element (.setting-main) for element", e)
+ console.warn("Couldn't find the expected parent element (.setting-main) for element",
+ e.closest(".jenkins-form-item"))
return;
}
// find the validation-error-area
- e.targetElement = tr.firstElementChild.nextSibling;
+ e.targetElement = tr;
var checkMessage = e.getAttribute('checkMessage');
if (checkMessage) message = checkMessage;
var oldOnchange = e.onchange;
e.onchange = function() {
var set = oldOnchange != null ? oldOnchange.call(this) : false;
if (this.value.match(regexp)) {
- if (!set) this.targetElement.innerHTML = "";
+ if (!set) {
+ updateValidationArea(this.targetElement, ``)
+ }
} else {
- this.targetElement.innerHTML = "
" + message + "
";
+ updateValidationArea(this.targetElement, `
${message}
`);
set = true;
}
return set;
@@ -613,13 +647,14 @@ function registerRegexpValidator(e,regexp,message) {
* @param e Input element
*/
function registerMinMaxValidator(e) {
- var tr = findFollowingTR(e, "validation-error-area");
+ var tr = e.closest(".jenkins-form-item").querySelector( ".validation-error-area");
if (!tr) {
- console.warn("Couldn't find the expected parent element (.setting-main) for element", e)
+ console.warn("Couldn't find the expected parent element (.setting-main) for element",
+ e.closest(".jenkins-form-item"))
return;
}
// find the validation-error-area
- e.targetElement = tr.firstElementChild.nextSibling;
+ e.targetElement = tr;
var checkMessage = e.getAttribute('checkMessage');
if (checkMessage) message = checkMessage;
var oldOnchange = e.onchange;
@@ -638,29 +673,35 @@ function registerMinMaxValidator(e) {
if (min <= max) { // Add the validator if min <= max
if (parseInt(min) > parseInt(this.value) || parseInt(this.value) > parseInt(max)) { // The value is out of range
- this.targetElement.innerHTML = "
This value should be between " + min + " and " + max + "
";
+ updateValidationArea(this.targetElement, `
This value should be between ${min} and ${max}
`);
set = true;
} else {
- if (!set) this.targetElement.innerHTML = ""; // The value is valid
+ if (!set) {
+ updateValidationArea(this.targetElement, ``)
+ }
}
}
} else if ((min !== null && isInteger(min)) && (max === null || !isInteger(max))) { // There is only 'min' available
if (parseInt(min) > parseInt(this.value)) {
- this.targetElement.innerHTML = "
This value should be larger than " + min + "
";
+ updateValidationArea(this.targetElement, `
This value should be larger than ${min}
`);
set = true;
} else {
- if (!set) this.targetElement.innerHTML = "";
+ if (!set) {
+ updateValidationArea(this.targetElement, ``)
+ }
}
} else if ((min === null || !isInteger(min)) && (max !== null && isInteger(max))) { // There is only 'max' available
if (parseInt(max) < parseInt(this.value)) {
- this.targetElement.innerHTML = "
This value should be less than " + max + "
";
+ updateValidationArea(this.targetElement, `
This value should be less than ${max}
`);
set = true;
} else {
- if (!set) this.targetElement.innerHTML = "";
+ if (!set) {
+ updateValidationArea(this.targetElement, ``)
+ }
}
}
}
@@ -2324,15 +2365,16 @@ function validateButton(checkUrl,paramList,button) {
}
});
- var spinner = $(button).up("DIV").next();
- var target = spinner.next();
+ var spinner = button.up("DIV").children[0];
+ var target = spinner.next().next();
spinner.style.display="block";
new Ajax.Request(checkUrl, {
parameters: parameters,
onComplete: function(rsp) {
spinner.style.display="none";
- applyErrorMessage(target, rsp);
+ target.innerHTML = ``;
+ updateValidationArea(target.children[0], rsp.responseText);
layoutUpdateCallback.call();
var s = rsp.getResponseHeader("script");
try {
@@ -2344,26 +2386,6 @@ function validateButton(checkUrl,paramList,button) {
});
}
-function applyErrorMessage(elt, rsp) {
- if (rsp.status == 200) {
- elt.innerHTML = rsp.responseText;
- } else {
- var id = 'valerr' + (iota++);
- elt.innerHTML = 'ERROR
' + rsp.responseText + '
';
- var error = document.getElementById('error-description'); // cf. oops.jelly
- if (error) {
- var div = document.getElementById(id);
- while (div.firstElementChild) {
- div.removeChild(div.firstElementChild);
- }
- div.appendChild(error);
- }
- }
- Behaviour.applySubtree(elt);
-}
-
// create a combobox.
// @param idOrField
// ID of the element that becomes a combobox, or the field itself.
From 13d572989206124655a5aa9034ebff68fe9c92e2 Mon Sep 17 00:00:00 2001
From: Jan Faracik <43062514+janfaracik@users.noreply.github.com>
Date: Thu, 9 Jun 2022 10:03:01 +0100
Subject: [PATCH 40/64] Move from px to rem
---
war/src/main/less/abstracts/mixins.less | 6 +++---
war/src/main/less/modules/section.less | 3 +--
2 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/war/src/main/less/abstracts/mixins.less b/war/src/main/less/abstracts/mixins.less
index f6a147ba8dca..7f1625863e9d 100644
--- a/war/src/main/less/abstracts/mixins.less
+++ b/war/src/main/less/abstracts/mixins.less
@@ -67,7 +67,7 @@
}
&::after {
- box-shadow: 0 0 0 10px transparent;
+ box-shadow: 0 0 0 0.66rem transparent;
}
&:hover,
@@ -87,13 +87,13 @@
}
&::after {
- box-shadow: 0 0 0 5px var(--longhorn-box-shadow--focus);
+ box-shadow: 0 0 0 0.33rem var(--longhorn-box-shadow--focus);
}
}
&:focus-visible {
&::after {
- box-shadow: 0 0 0 5px var(--text-color);
+ box-shadow: 0 0 0 0.33rem var(--text-color);
}
}
}
diff --git a/war/src/main/less/modules/section.less b/war/src/main/less/modules/section.less
index ed62dc93b82e..fa9fccfb95e8 100644
--- a/war/src/main/less/modules/section.less
+++ b/war/src/main/less/modules/section.less
@@ -2,7 +2,6 @@
border-top: 2px solid var(--panel-border-color);
padding: var(--section-padding) 0 0 0;
max-width: 1800px;
- margin-bottom: 24px;
&:first-of-type {
border-top: none;
@@ -135,7 +134,7 @@
color: var(--text-color-secondary);
font-weight: 500;
line-height: 1.6;
- margin: 0 10px 0 0;
+ margin: 0 0.66rem 0 0;
font-size: 0.925rem;
}
}
From d1f42acfd5edb6659d800dd78eb4412f4ae66909 Mon Sep 17 00:00:00 2001
From: Jan Faracik <43062514+janfaracik@users.noreply.github.com>
Date: Fri, 10 Jun 2022 11:13:58 +0100
Subject: [PATCH 41/64] Update table.less
---
war/src/main/less/modules/table.less | 58 +++++++++++-----------------
1 file changed, 22 insertions(+), 36 deletions(-)
diff --git a/war/src/main/less/modules/table.less b/war/src/main/less/modules/table.less
index 730f377b40ab..51d03810e578 100644
--- a/war/src/main/less/modules/table.less
+++ b/war/src/main/less/modules/table.less
@@ -181,15 +181,14 @@
}
&__button, .sortheader, &__link {
+ .longhorn();
align-items: center;
justify-content: center;
appearance: none;
- position: relative;
outline: none;
border: none;
margin: 0;
padding: 0;
- z-index: 0;
cursor: pointer;
color: inherit;
font-weight: inherit;
@@ -201,45 +200,11 @@
&::before,
&::after {
- content: "";
- position: absolute;
top: -7px;
left: -10px;
bottom: -7px;
right: -10px;
border-radius: 6px;
- z-index: -1;
- transition: var(--standard-transition);
- }
-
- &::before {
- background: var(--text-color);
- opacity: 0;
- }
-
- &::after {
- opacity: 0.05;
- box-shadow: 0 0 0 10px transparent;
- }
-
- &:hover {
- &::before {
- opacity: 0.05 !important;
- border-radius: 6px;
- background: var(--text-color);
- }
- }
-
- &:focus, &:active {
- &::before {
- opacity: 0.1 !important;
- border-radius: 6px;
- background: var(--text-color);
- }
-
- &::after {
- box-shadow: 0 0 0 5px var(--text-color);
- }
}
}
@@ -261,6 +226,27 @@
left: -8px;
bottom: -5px;
right: -8px;
+ box-shadow: 0 0 0 10px currentColor;
+ opacity: 0;
+ }
+
+ &:hover {
+ &::before {
+ background: currentColor;
+ border-radius: 6px;
+ }
+ }
+
+ &:active,
+ &:focus {
+ &::before {
+ background: currentColor;
+ border-radius: 6px;
+ }
+ &::after {
+ box-shadow: 0 0 0 5px currentColor;
+ opacity: 0.025;
+ }
}
}
}
From e036d3af2e21410a0996927601809a254d0505f4 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 10 Jun 2022 07:58:06 -0700
Subject: [PATCH 42/64] Bump parent POM from 1.74 to 1.76 (#6642)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
core/src/main/java/hudson/PluginManager.java | 1 +
.../hudson/cli/declarative/CLIRegisterer.java | 7 +
.../main/java/hudson/model/AbstractItem.java | 1 +
core/src/main/java/hudson/model/Executor.java | 7 +
.../java/hudson/model/ItemGroupMixIn.java | 2 +
core/src/main/java/hudson/model/Queue.java | 1 +
.../java/hudson/model/ResourceController.java | 6 +
.../main/java/hudson/model/UpdateSite.java | 1 +
.../java/hudson/triggers/SafeTimerTask.java | 2 +
.../java/hudson/util/InterceptingProxy.java | 2 +
.../util/RobustReflectionConverter.java | 2 +
core/src/main/java/jenkins/model/Jenkins.java | 1 +
core/src/main/java/jenkins/model/Nodes.java | 2 +
.../jenkins/model/TransientActionFactory.java | 2 +
.../ImpersonatingExecutorService.java | 2 +
...ImpersonatingScheduledExecutorService.java | 2 +
.../SecurityContextExecutorService.java | 2 +
.../jenkins/util/AtmostOneTaskExecutor.java | 1 +
.../util/ContextResettingExecutorService.java | 2 +
.../jenkins/util/ProgressiveRendering.java | 2 +
...ractUserDetailsAuthenticationProvider.java | 2 +
pom.xml | 2 +-
src/spotbugs/spotbugs-excludes.xml | 188 ++++++++++++++++++
23 files changed, 239 insertions(+), 1 deletion(-)
diff --git a/core/src/main/java/hudson/PluginManager.java b/core/src/main/java/hudson/PluginManager.java
index c3cd3a750e6d..2fce8ae5a52a 100644
--- a/core/src/main/java/hudson/PluginManager.java
+++ b/core/src/main/java/hudson/PluginManager.java
@@ -187,6 +187,7 @@
* @author Kohsuke Kawaguchi
*/
@ExportedBean
+@SuppressFBWarnings(value = "THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION", justification = "TODO needs triage")
public abstract class PluginManager extends AbstractModelObject implements OnMaster, StaplerOverridable, StaplerProxy {
/** Custom plugin manager system property or context param. */
public static final String CUSTOM_PLUGIN_MANAGER = PluginManager.class.getName() + ".className";
diff --git a/core/src/main/java/hudson/cli/declarative/CLIRegisterer.java b/core/src/main/java/hudson/cli/declarative/CLIRegisterer.java
index 8b2f2348c577..5fdf42672fbf 100644
--- a/core/src/main/java/hudson/cli/declarative/CLIRegisterer.java
+++ b/core/src/main/java/hudson/cli/declarative/CLIRegisterer.java
@@ -27,6 +27,7 @@
import static java.util.logging.Level.SEVERE;
import edu.umd.cs.findbugs.annotations.NonNull;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import hudson.AbortException;
import hudson.Extension;
import hudson.ExtensionComponent;
@@ -71,6 +72,12 @@
* @author Kohsuke Kawaguchi
*/
@Extension
+@SuppressFBWarnings(
+ value = {
+ "THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION",
+ "THROWS_METHOD_THROWS_RUNTIMEEXCEPTION"
+ },
+ justification = "TODO needs triage")
public class CLIRegisterer extends ExtensionFinder {
@Override
public ExtensionComponentSet refresh() throws ExtensionRefreshException {
diff --git a/core/src/main/java/hudson/model/AbstractItem.java b/core/src/main/java/hudson/model/AbstractItem.java
index bc96c1b08dcf..2fbc1521de3f 100644
--- a/core/src/main/java/hudson/model/AbstractItem.java
+++ b/core/src/main/java/hudson/model/AbstractItem.java
@@ -110,6 +110,7 @@
// Item doesn't necessarily have to be Actionable, but
// Java doesn't let multiple inheritance.
@ExportedBean
+@SuppressFBWarnings(value = "THROWS_METHOD_THROWS_CLAUSE_THROWABLE", justification = "TODO needs triage")
public abstract class AbstractItem extends Actionable implements Item, HttpDeletable, AccessControlled, DescriptorByNameOwner, StaplerProxy {
private static final Logger LOGGER = Logger.getLogger(AbstractItem.class.getName());
diff --git a/core/src/main/java/hudson/model/Executor.java b/core/src/main/java/hudson/model/Executor.java
index e7b14b72aebf..7ffc181dd791 100644
--- a/core/src/main/java/hudson/model/Executor.java
+++ b/core/src/main/java/hudson/model/Executor.java
@@ -32,6 +32,7 @@
import edu.umd.cs.findbugs.annotations.CheckForNull;
import edu.umd.cs.findbugs.annotations.NonNull;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import hudson.FilePath;
import hudson.Functions;
import hudson.Util;
@@ -89,6 +90,12 @@
* @author Kohsuke Kawaguchi
*/
@ExportedBean
+@SuppressFBWarnings(
+ value = {
+ "THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION",
+ "THROWS_METHOD_THROWS_CLAUSE_THROWABLE"
+ },
+ justification = "TODO needs triage")
public class Executor extends Thread implements ModelObject {
protected final @NonNull Computer owner;
private final Queue queue;
diff --git a/core/src/main/java/hudson/model/ItemGroupMixIn.java b/core/src/main/java/hudson/model/ItemGroupMixIn.java
index 748a13cc6ec4..e9a526ebbe6c 100644
--- a/core/src/main/java/hudson/model/ItemGroupMixIn.java
+++ b/core/src/main/java/hudson/model/ItemGroupMixIn.java
@@ -24,6 +24,7 @@
package hudson.model;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import hudson.Util;
import hudson.XmlFile;
import hudson.model.listeners.ItemListener;
@@ -61,6 +62,7 @@
* @author Kohsuke Kawaguchi
* @see ViewGroupMixIn
*/
+@SuppressFBWarnings(value = "THROWS_METHOD_THROWS_CLAUSE_THROWABLE", justification = "TODO needs triage")
public abstract class ItemGroupMixIn {
/**
* {@link ItemGroup} for which we are working.
diff --git a/core/src/main/java/hudson/model/Queue.java b/core/src/main/java/hudson/model/Queue.java
index 50ad97232bd5..982c74c22380 100644
--- a/core/src/main/java/hudson/model/Queue.java
+++ b/core/src/main/java/hudson/model/Queue.java
@@ -171,6 +171,7 @@
* @see QueueTaskDispatcher
*/
@ExportedBean
+@SuppressFBWarnings(value = "THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION", justification = "TODO needs triage")
public class Queue extends ResourceController implements Saveable {
/**
diff --git a/core/src/main/java/hudson/model/ResourceController.java b/core/src/main/java/hudson/model/ResourceController.java
index a3702ab79e61..1516272f1dcc 100644
--- a/core/src/main/java/hudson/model/ResourceController.java
+++ b/core/src/main/java/hudson/model/ResourceController.java
@@ -39,6 +39,12 @@
* Controls mutual exclusion of {@link ResourceList}.
* @author Kohsuke Kawaguchi
*/
+@SuppressFBWarnings(
+ value = {
+ "THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION",
+ "THROWS_METHOD_THROWS_CLAUSE_THROWABLE"
+ },
+ justification = "TODO needs triage")
public class ResourceController {
/**
* {@link ResourceList}s that are used by activities that are in progress.
diff --git a/core/src/main/java/hudson/model/UpdateSite.java b/core/src/main/java/hudson/model/UpdateSite.java
index 389e3cb3890f..76c14164981c 100644
--- a/core/src/main/java/hudson/model/UpdateSite.java
+++ b/core/src/main/java/hudson/model/UpdateSite.java
@@ -104,6 +104,7 @@
* @since 1.333
*/
@ExportedBean
+@SuppressFBWarnings(value = "THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION", justification = "TODO needs triage")
public class UpdateSite {
/**
* What's the time stamp of data file?
diff --git a/core/src/main/java/hudson/triggers/SafeTimerTask.java b/core/src/main/java/hudson/triggers/SafeTimerTask.java
index db07c96867df..5a261d0e9a2e 100644
--- a/core/src/main/java/hudson/triggers/SafeTimerTask.java
+++ b/core/src/main/java/hudson/triggers/SafeTimerTask.java
@@ -24,6 +24,7 @@
package hudson.triggers;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import hudson.model.AperiodicWork;
import hudson.model.AsyncAperiodicWork;
import hudson.model.AsyncPeriodicWork;
@@ -47,6 +48,7 @@
* @author Kohsuke Kawaguchi
* @since 1.124
*/
+@SuppressFBWarnings(value = "THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION", justification = "TODO needs triage")
public abstract class SafeTimerTask extends TimerTask {
/**
diff --git a/core/src/main/java/hudson/util/InterceptingProxy.java b/core/src/main/java/hudson/util/InterceptingProxy.java
index 3ab7ebb0b318..af368ac5bf5e 100644
--- a/core/src/main/java/hudson/util/InterceptingProxy.java
+++ b/core/src/main/java/hudson/util/InterceptingProxy.java
@@ -1,5 +1,6 @@
package hudson.util;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -10,6 +11,7 @@
*
* @author Kohsuke Kawaguchi
*/
+@SuppressFBWarnings(value = "THROWS_METHOD_THROWS_CLAUSE_THROWABLE", justification = "TODO needs triage")
public abstract class InterceptingProxy {
/**
* Intercepts every method call.
diff --git a/core/src/main/java/hudson/util/RobustReflectionConverter.java b/core/src/main/java/hudson/util/RobustReflectionConverter.java
index d1bc500003e1..d7ce1ab5594f 100644
--- a/core/src/main/java/hudson/util/RobustReflectionConverter.java
+++ b/core/src/main/java/hudson/util/RobustReflectionConverter.java
@@ -44,6 +44,7 @@
import com.thoughtworks.xstream.mapper.Mapper;
import com.thoughtworks.xstream.security.InputManipulationException;
import edu.umd.cs.findbugs.annotations.NonNull;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import hudson.diagnosis.OldDataMonitor;
import hudson.model.Saveable;
import hudson.security.ACL;
@@ -77,6 +78,7 @@
*
*
*/
+@SuppressFBWarnings(value = "THROWS_METHOD_THROWS_RUNTIMEEXCEPTION", justification = "TODO needs triage")
@SuppressWarnings({"rawtypes", "unchecked"})
public class RobustReflectionConverter implements Converter {
diff --git a/core/src/main/java/jenkins/model/Jenkins.java b/core/src/main/java/jenkins/model/Jenkins.java
index 3aa50e0882a9..511ee7a610eb 100644
--- a/core/src/main/java/jenkins/model/Jenkins.java
+++ b/core/src/main/java/jenkins/model/Jenkins.java
@@ -337,6 +337,7 @@
* @author Kohsuke Kawaguchi
*/
@ExportedBean
+@SuppressFBWarnings(value = "THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION", justification = "TODO needs triage")
public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLevelItemGroup, StaplerProxy, StaplerFallback,
ModifiableViewGroup, AccessControlled, DescriptorByNameOwner,
ModelObjectWithContextMenu, ModelObjectWithChildren, OnMaster {
diff --git a/core/src/main/java/jenkins/model/Nodes.java b/core/src/main/java/jenkins/model/Nodes.java
index c8ff0e283e9a..f39377e1bcf0 100644
--- a/core/src/main/java/jenkins/model/Nodes.java
+++ b/core/src/main/java/jenkins/model/Nodes.java
@@ -26,6 +26,7 @@
import edu.umd.cs.findbugs.annotations.CheckForNull;
import edu.umd.cs.findbugs.annotations.NonNull;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import hudson.BulkChange;
import hudson.Util;
import hudson.XmlFile;
@@ -61,6 +62,7 @@
* @since 1.607
*/
@Restricted(NoExternalUse.class) // for now, we may make it public later
+@SuppressFBWarnings(value = "THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION", justification = "TODO needs triage")
public class Nodes implements Saveable {
/**
diff --git a/core/src/main/java/jenkins/model/TransientActionFactory.java b/core/src/main/java/jenkins/model/TransientActionFactory.java
index abcd32d71693..21ecc499b9c4 100644
--- a/core/src/main/java/jenkins/model/TransientActionFactory.java
+++ b/core/src/main/java/jenkins/model/TransientActionFactory.java
@@ -28,6 +28,7 @@
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import edu.umd.cs.findbugs.annotations.NonNull;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import hudson.ExtensionList;
import hudson.ExtensionListListener;
import hudson.ExtensionPoint;
@@ -48,6 +49,7 @@
* @see Actionable#getAllActions
* @since 1.548
*/
+@SuppressFBWarnings(value = "THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION", justification = "TODO needs triage")
public abstract class TransientActionFactory implements ExtensionPoint {
/**
diff --git a/core/src/main/java/jenkins/security/ImpersonatingExecutorService.java b/core/src/main/java/jenkins/security/ImpersonatingExecutorService.java
index daf2cc6b0f43..d535f05f756d 100644
--- a/core/src/main/java/jenkins/security/ImpersonatingExecutorService.java
+++ b/core/src/main/java/jenkins/security/ImpersonatingExecutorService.java
@@ -24,6 +24,7 @@
package jenkins.security;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import hudson.security.ACL;
import hudson.security.ACLContext;
import java.util.concurrent.Callable;
@@ -36,6 +37,7 @@
* @see SecurityContextExecutorService
* @since 2.51
*/
+@SuppressFBWarnings(value = "THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION", justification = "TODO needs triage")
public final class ImpersonatingExecutorService extends InterceptingExecutorService {
private final Authentication authentication;
diff --git a/core/src/main/java/jenkins/security/ImpersonatingScheduledExecutorService.java b/core/src/main/java/jenkins/security/ImpersonatingScheduledExecutorService.java
index 788806869520..adf482d1cff5 100644
--- a/core/src/main/java/jenkins/security/ImpersonatingScheduledExecutorService.java
+++ b/core/src/main/java/jenkins/security/ImpersonatingScheduledExecutorService.java
@@ -24,6 +24,7 @@
package jenkins.security;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import hudson.security.ACL;
import hudson.security.ACLContext;
import java.util.concurrent.Callable;
@@ -35,6 +36,7 @@
* Variant of {@link ImpersonatingExecutorService} for scheduled services.
* @since 2.51
*/
+@SuppressFBWarnings(value = "THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION", justification = "TODO needs triage")
public final class ImpersonatingScheduledExecutorService extends InterceptingScheduledExecutorService {
private final Authentication authentication;
diff --git a/core/src/main/java/jenkins/security/SecurityContextExecutorService.java b/core/src/main/java/jenkins/security/SecurityContextExecutorService.java
index e2dfe2b9452e..f464ef8e6863 100644
--- a/core/src/main/java/jenkins/security/SecurityContextExecutorService.java
+++ b/core/src/main/java/jenkins/security/SecurityContextExecutorService.java
@@ -27,6 +27,7 @@
import static org.springframework.security.core.context.SecurityContextHolder.getContext;
import static org.springframework.security.core.context.SecurityContextHolder.setContext;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import jenkins.util.InterceptingExecutorService;
@@ -43,6 +44,7 @@
* @author Kohsuke Kawaguchi
* @since 1.561
*/
+@SuppressFBWarnings(value = "THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION", justification = "TODO needs triage")
public class SecurityContextExecutorService extends InterceptingExecutorService {
public SecurityContextExecutorService(ExecutorService service) {
diff --git a/core/src/main/java/jenkins/util/AtmostOneTaskExecutor.java b/core/src/main/java/jenkins/util/AtmostOneTaskExecutor.java
index 6347842856f1..3e7dd9f0f3ef 100644
--- a/core/src/main/java/jenkins/util/AtmostOneTaskExecutor.java
+++ b/core/src/main/java/jenkins/util/AtmostOneTaskExecutor.java
@@ -44,6 +44,7 @@
* @author Kohsuke Kawaguchi
* @see AtmostOneThreadExecutor
*/
+@SuppressFBWarnings(value = "THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION", justification = "TODO needs triage")
public class AtmostOneTaskExecutor {
private static final Logger LOGGER = Logger.getLogger(AtmostOneTaskExecutor.class.getName());
diff --git a/core/src/main/java/jenkins/util/ContextResettingExecutorService.java b/core/src/main/java/jenkins/util/ContextResettingExecutorService.java
index 8492719491ea..bbfa5e772da9 100644
--- a/core/src/main/java/jenkins/util/ContextResettingExecutorService.java
+++ b/core/src/main/java/jenkins/util/ContextResettingExecutorService.java
@@ -1,5 +1,6 @@
package jenkins.util;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
@@ -11,6 +12,7 @@
*
* @author Kohsuke Kawaguchi
*/
+@SuppressFBWarnings(value = "THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION", justification = "TODO needs triage")
public class ContextResettingExecutorService extends InterceptingExecutorService {
public ContextResettingExecutorService(ExecutorService base) {
super(base);
diff --git a/core/src/main/java/jenkins/util/ProgressiveRendering.java b/core/src/main/java/jenkins/util/ProgressiveRendering.java
index 42ef0b76861a..b71482da2d24 100644
--- a/core/src/main/java/jenkins/util/ProgressiveRendering.java
+++ b/core/src/main/java/jenkins/util/ProgressiveRendering.java
@@ -25,6 +25,7 @@
package jenkins.util;
import edu.umd.cs.findbugs.annotations.NonNull;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import hudson.model.AbstractItem;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationHandler;
@@ -73,6 +74,7 @@
* {@code ui-samples-plugin} demonstrates all this.
* @since 1.484
*/
+@SuppressFBWarnings(value = "THROWS_METHOD_THROWS_CLAUSE_THROWABLE", justification = "TODO needs triage")
public abstract class ProgressiveRendering {
private static final Logger LOG = Logger.getLogger(ProgressiveRendering.class.getName());
diff --git a/core/src/main/java/org/acegisecurity/providers/dao/AbstractUserDetailsAuthenticationProvider.java b/core/src/main/java/org/acegisecurity/providers/dao/AbstractUserDetailsAuthenticationProvider.java
index 1eaf27beac4d..7b8d5f5afb2f 100644
--- a/core/src/main/java/org/acegisecurity/providers/dao/AbstractUserDetailsAuthenticationProvider.java
+++ b/core/src/main/java/org/acegisecurity/providers/dao/AbstractUserDetailsAuthenticationProvider.java
@@ -24,6 +24,7 @@
package org.acegisecurity.providers.dao;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import org.acegisecurity.AcegiSecurityException;
import org.acegisecurity.Authentication;
import org.acegisecurity.AuthenticationException;
@@ -35,6 +36,7 @@
* @deprecated use {@link org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider}
*/
@Deprecated
+@SuppressFBWarnings(value = "THROWS_METHOD_THROWS_RUNTIMEEXCEPTION", justification = "TODO needs triage")
public abstract class AbstractUserDetailsAuthenticationProvider implements AuthenticationProvider {
private final org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider delegate =
diff --git a/pom.xml b/pom.xml
index d0efa5fad27d..90f7f0cbfd18 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@ THE SOFTWARE.
org.jenkins-cijenkins
- 1.74
+ 1.76
diff --git a/src/spotbugs/spotbugs-excludes.xml b/src/spotbugs/spotbugs-excludes.xml
index d848c9bc6a45..1e6be9807dbd 100644
--- a/src/spotbugs/spotbugs-excludes.xml
+++ b/src/spotbugs/spotbugs-excludes.xml
@@ -573,6 +573,194 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
From 112bb349f7dbb0dcb5dec41fcf578c15195e5b08 Mon Sep 17 00:00:00 2001
From: Basil Crow
Date: Fri, 10 Jun 2022 10:30:20 -0700
Subject: [PATCH 43/64] Preserve dumpstream on Maven failure (#6641)
---
Jenkinsfile | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/Jenkinsfile b/Jenkinsfile
index 8016e9d91363..05f5fbf2398c 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -61,9 +61,13 @@ for (i = 0; i < buildTypes.size(); i++) {
'clean',
'install',
]
- infra.runMaven(mavenOptions, jdk)
- if (isUnix()) {
- sh 'git add . && git diff --exit-code HEAD'
+ try {
+ infra.runMaven(mavenOptions, jdk)
+ if (isUnix()) {
+ sh 'git add . && git diff --exit-code HEAD'
+ }
+ } finally {
+ archiveArtifacts allowEmptyArchive: true, artifacts: '**/target/surefire-reports/*.dumpstream'
}
}
}
@@ -71,7 +75,6 @@ for (i = 0; i < buildTypes.size(); i++) {
// Once we've built, archive the artifacts and the test results.
stage("${buildType} Publishing") {
- archiveArtifacts allowEmptyArchive: true, artifacts: '**/target/surefire-reports/*.dumpstream'
if (!fileExists('core/target/surefire-reports/TEST-jenkins.Junit4TestsRanTest.xml')) {
error 'JUnit 4 tests are no longer being run for the core package'
}
From bea72075778d5315efa08308cea8dae5e47d81c5 Mon Sep 17 00:00:00 2001
From: Jesse Glick
Date: Fri, 10 Jun 2022 17:10:50 -0400
Subject: [PATCH 44/64] Simplify contributing instructions to recommend
`-Pquick-build`
---
CONTRIBUTING.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 8eb9822ccd8e..ef8cf80541d1 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -31,7 +31,7 @@ You can read a description of the [building and debugging process here].
If you want simply to build the `jenkins.war` file as fast as possible without tests, run:
```sh
-mvn -am -pl war,bom -DskipTests -Dspotbugs.skip -Dspotless.check.skip clean install
+mvn -am -pl war,bom -Pquick-build clean install
```
The WAR file will be created in `war/target/jenkins.war`.
@@ -220,4 +220,4 @@ just submit a pull request.
[Jenkins Pipeline]: https://www.jenkins.io/doc/book/pipeline/
[Jenkinsfile]: ./Jenkinsfile
[download Maven here]: https://maven.apache.org/download.cgi
-[GitHub pull request]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests
\ No newline at end of file
+[GitHub pull request]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests
From ae16c3074953ebffe814e55128987e2c4d372857 Mon Sep 17 00:00:00 2001
From: Tim Jacomb <21194782+timja@users.noreply.github.com>
Date: Sat, 11 Jun 2022 08:42:02 -0500
Subject: [PATCH 45/64] Add gitpod integration (#6590)
Co-authored-by: Victor Nogueira
Co-authored-by: Alexander Brandes
Co-authored-by: Jesse Glick
---
.gitpod.yml | 27 +++++++++++++++++++++++++++
.gitpod/Dockerfile | 4 ++++
CONTRIBUTING.md | 10 ++++++++++
3 files changed, 41 insertions(+)
create mode 100644 .gitpod.yml
create mode 100644 .gitpod/Dockerfile
diff --git a/.gitpod.yml b/.gitpod.yml
new file mode 100644
index 000000000000..d3bedadf1f9b
--- /dev/null
+++ b/.gitpod.yml
@@ -0,0 +1,27 @@
+tasks:
+ - init: |
+ mvn -am -pl war,bom -P quick-build clean install
+ command: |
+ mvn -pl war jetty:run -Dhost=0.0.0.0
+ name: Run
+ - command: gp await-port 8080 && gp url 8080 && gp preview $(gp url 8080)/jenkins/
+ name: Preview
+
+github:
+ prebuilds:
+ pullRequestsFromForks: true
+ addBadge: true
+
+jetbrains:
+ intellij:
+ plugins:
+ - Stapler plugin for IntelliJ IDEA
+ prebuilds:
+ version: stable
+
+vscode:
+ extensions:
+ - vscjava.vscode-java-pack
+
+image:
+ file: .gitpod/Dockerfile
diff --git a/.gitpod/Dockerfile b/.gitpod/Dockerfile
new file mode 100644
index 000000000000..e3c88317008f
--- /dev/null
+++ b/.gitpod/Dockerfile
@@ -0,0 +1,4 @@
+FROM gitpod/workspace-full
+
+RUN brew install gh && \
+ bash -c ". /home/gitpod/.sdkman/bin/sdkman-init.sh && sdk install maven 3.8.4 && sdk default maven 3.8.4"
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index ef8cf80541d1..fb32776fb370 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -62,6 +62,16 @@ On another terminal, move to the war folder and start a [webpack](https://webpac
cd war; yarn start
```
+### Gitpod
+
+You can open this project as a [Gitpod workspace](https://www.gitpod.io/) which comes pre-configured with all the tools you will need.
+You can use IntelliJ IDEA (preferred) or VS Code (alternate) in the browser.
+
+[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/jenkinsci/jenkins)
+
+If you prefer using IntelliJ IDEA, you can setup Gitpod integration with JetBrains Gateway using the instructions on [gitpod.io](https://www.gitpod.io/docs/ides-and-editors/intellij),
+which will open the workspace in IntelliJ IDEA using JetBrains Gateway.
+
## Testing changes
Jenkins core includes unit and functional tests as a part of the repository.
From d86beed83b120c403ae2e501536f9d4ac2858f74 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sat, 11 Jun 2022 11:48:48 -0700
Subject: [PATCH 46/64] Bump Spotless Maven Plugin from 2.22.6 to 2.22.7
(#6647)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 90f7f0cbfd18..776a1dda77c8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -102,7 +102,7 @@ THE SOFTWARE.
1.235.8.24.6.1
- 2.22.6
+ 2.22.72.22.2
From c3193d91deb1a89f6f6bfe0b968a3b55fb28f713 Mon Sep 17 00:00:00 2001
From: Alexander Brandes
Date: Sun, 12 Jun 2022 17:20:53 +0200
Subject: [PATCH 47/64] chore: Compress and adjust IDEA svg (#6653)
---
.idea/icon.svg | 82 +-------------------------------------------------
1 file changed, 1 insertion(+), 81 deletions(-)
diff --git a/.idea/icon.svg b/.idea/icon.svg
index 8dd8fec29266..44161638ba48 100644
--- a/.idea/icon.svg
+++ b/.idea/icon.svg
@@ -1,81 +1 @@
-
-
-
+
From 393ec80794450b46d80106a7d934cf3e1b98c635 Mon Sep 17 00:00:00 2001
From: Langer0416 <71805759+Langer0416@users.noreply.github.com>
Date: Sun, 12 Jun 2022 13:46:53 -0700
Subject: [PATCH 48/64] [JENKINS-68735] Missing sidepanel for user
configuration if password is empty (#6650)
---
.../hudson/model/AbstractModelObject/error.jelly | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/core/src/main/resources/hudson/model/AbstractModelObject/error.jelly b/core/src/main/resources/hudson/model/AbstractModelObject/error.jelly
index d5522dca3251..40e3eb4a03c1 100644
--- a/core/src/main/resources/hudson/model/AbstractModelObject/error.jelly
+++ b/core/src/main/resources/hudson/model/AbstractModelObject/error.jelly
@@ -24,11 +24,15 @@ THE SOFTWARE.
-
+
-
+
+
+
+
+
${%Error}
@@ -39,7 +43,7 @@ THE SOFTWARE.
${message}
-
+
From 56a03a5b1382a268cd8ca1229a2394791f50b82f Mon Sep 17 00:00:00 2001
From: Basil Crow
Date: Sun, 12 Jun 2022 16:55:47 -0700
Subject: [PATCH 49/64] Upgrade Surefire from 2.22.2 to 3.0.0-M7 (#6652)
---
.mvn/jvm.config | 2 +-
pom.xml | 4 ----
2 files changed, 1 insertion(+), 5 deletions(-)
diff --git a/.mvn/jvm.config b/.mvn/jvm.config
index e93a5b43ee1c..f0106d148540 100644
--- a/.mvn/jvm.config
+++ b/.mvn/jvm.config
@@ -1 +1 @@
--Xmx800m
+-Xmx1100m
diff --git a/pom.xml b/pom.xml
index 776a1dda77c8..04a02264892e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -103,10 +103,6 @@ THE SOFTWARE.
5.8.24.6.12.22.7
-
-
- 2.22.2
- 2.22.2
From 65fcda13509d0185cfab1016efd83c5fe8e91cb7 Mon Sep 17 00:00:00 2001
From: Daniel Beck <1831569+daniel-beck@users.noreply.github.com>
Date: Mon, 13 Jun 2022 21:30:10 +0200
Subject: [PATCH 50/64] Revert "[JENKINS-68735] Missing sidepanel for user
configuration if password is empty (#6650)" (#6654)
This reverts commit 393ec80794450b46d80106a7d934cf3e1b98c635.
---
.../hudson/model/AbstractModelObject/error.jelly | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
diff --git a/core/src/main/resources/hudson/model/AbstractModelObject/error.jelly b/core/src/main/resources/hudson/model/AbstractModelObject/error.jelly
index 40e3eb4a03c1..d5522dca3251 100644
--- a/core/src/main/resources/hudson/model/AbstractModelObject/error.jelly
+++ b/core/src/main/resources/hudson/model/AbstractModelObject/error.jelly
@@ -24,15 +24,11 @@ THE SOFTWARE.
-
+
-
-
-
-
-
+