mirror of
https://github.com/jenkinsci/jenkins.git
synced 2026-10-27 19:45:18 +00:00
Merge branch 'master' into new-buttons-1-dashboard
This commit is contained in:
commit
c4075772f0
44 files changed
+484
-242
No files matched your search
+27
@@ -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
|
||||
@@ -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"
|
||||
Generated
+1
-81
@@ -1,81 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (https://www.inkscape.org/) -->
|
||||
<svg xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:cc="https://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="https://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="https://www.inkscape.org/namespaces/inkscape" id="svg2" version="1.1" inkscape:version="0.48.0 r9654" width="226" height="312" xml:space="preserve" sodipodi:docname="logo.svg">
|
||||
<metadata id="metadata8">
|
||||
<rdf:RDF>
|
||||
<cc:Work rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type rdf:resource="https://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs id="defs6">
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath18">
|
||||
<path d="M 0,2494.84 0,0 l 1804.34,0 0,2494.84 -1804.34,0 z" id="path20" inkscape:connector-curvature="0" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="1500" inkscape:window-height="844" id="namedview4" showgrid="false" inkscape:zoom="1" inkscape:cx="-65.859116" inkscape:cy="172.53076" inkscape:window-x="2189" inkscape:window-y="496" inkscape:window-maximized="0" inkscape:current-layer="g10" />
|
||||
<g id="g10" inkscape:groupmode="layer" inkscape:label="ink_ext_XXXXXX" transform="matrix(1.25,0,0,-1.25,0,312)">
|
||||
<g id="g3393">
|
||||
<path d="m 177.718,129.264 c 0,-49.4288 -39.175,-89.4992 -87.5,-89.4992 -48.3242,0 -87.49925,40.0704 -87.49925,89.4992 0,49.43 39.17505,89.501 87.49925,89.501 48.325,0 87.5,-40.071 87.5,-89.501" style="fill:#d33833;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path22" inkscape:connector-curvature="0" />
|
||||
<path d="m 6.28438,107.098 c 0,0 -6.33438,93.333 79.66602,96 l -5.9996,10 -46.6664,-15.667 -13.3336,-15.333 -11.66642,-22.334 -6.66719,-26 2,-17.333" style="fill:#ef3d3a;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path24" inkscape:connector-curvature="0" />
|
||||
<path d="M 30.2883,190.319 C 14.9363,174.611 5.43633,152.923 5.43633,128.93 l 0,0 c 0,-23.988 9.49997,-45.6788 24.85197,-61.3839 l 0,0 C 45.6477,51.841 66.8152,42.15 90.2168,42.15 l 0,0 c 23.4022,0 44.5712,9.691 59.9292,25.3961 l 0,0 c 15.351,15.7051 24.853,37.3959 24.853,61.3839 l 0,0 c 0,23.993 -9.502,45.681 -24.853,61.389 l 0,0 c -15.358,15.702 -36.527,25.393 -59.9292,25.395 l 0,0 C 66.8152,215.712 45.6477,206.021 30.2883,190.319 l 0,0 z M 26.4023,63.7469 C 10.0867,80.4328 0,103.493 0,128.93 l 0,0 c 0,25.441 10.0867,48.499 26.4023,65.186 l 0,0 c 16.3118,16.69 38.8915,27.035 63.8145,27.032 l 0,0 c 24.9232,0.003 47.5052,-10.342 63.8142,-27.032 l 0,0 c 16.317,-16.687 26.405,-39.747 26.403,-65.186 l 0,0 c 0.002,-25.437 -10.086,-48.4972 -26.403,-65.1831 l 0,0 C 137.722,47.0578 115.14,36.7141 90.2168,36.7141 l 0,0 c -24.923,0 -47.5027,10.3437 -63.8145,27.0328 l 0,0" style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path26" inkscape:connector-curvature="0" />
|
||||
<path d="m 127.051,128.768 -13.334,-2 -18.0002,-2 -11.6672,-0.333 -11.3328,0.333 -8.6672,2.667 -7.6668,8.333 -6,17 -1.3332,3.667 -8,2.666 -4.6668,7.667 -3.3332,11 3.6672,9.667 8.666,3 7,-3.334 3.334,-7.333 4,0.667 1.3328,1.666 -1.3328,7.667 -0.334,9.667 2,13.333 -0.0781,7.616 6.0781,9.717 10.6668,7.667 18.6672,8 20.6662,-3 18,-13 8.334,-13.333 5.333,-9.667 1.333,-24 -4,-20.667 -7.333,-18.333 -7,-9.667" style="fill:#f0d6b7;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path28" inkscape:connector-curvature="0" />
|
||||
<path d="m 115.717,71.102 -47.6674,-2 0,-8 4,-28 -2,-2.334 -33.3328,11.334 -2.334,4 -3.3332,37.666 -7.6656,22.667 -1.6672,5.333 26.666,18.333 8.334,3.334 7.3328,-9 6.3332,-5.667 7.334,-2.333 3.3328,-1 4,-17.333 3,-3.6668 7.6672,2.6668 -5.334,-10.334 29.0002,-13.666 -3.666,-2" style="fill:#335061;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path30" inkscape:connector-curvature="0" />
|
||||
<path d="m 36.7168,187.435 8.666,3 7,-3.334 3.334,-7.333 4,0.667 1,4 -2,7.666 2,18.334 -1.6672,10 6,7 13,10.333 -3.6668,5 -18.3332,-9 -7.6668,-6 -4.3332,-9.333 -6.6668,-9 -2,-10.667 1.334,-11.333" style="fill:#6d6b6d;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path32" inkscape:connector-curvature="0" />
|
||||
<path d="m 50.3828,218.768 c 0,0 5,12.333 25,18.333 20,6 1,4.334 1,4.334 l -21.666,-8.334 -8.334,-8.333 -3.666,-6.667 7.666,0.667" style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path34" inkscape:connector-curvature="0" />
|
||||
<path d="m 40.3828,189.768 c 0,0 -7,23.334 19.6668,26.667 l -1,4 -18.3328,-4.334 -5.334,-17.333 1.334,-11.333 3.666,2.333" style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path36" inkscape:connector-curvature="0" />
|
||||
<path d="m 51.0496,158.768 4.3645,4.229 c 0,0 1.9699,-0.229 2.3027,-2.562 0.3328,-2.334 1.3328,-23.334 15.666,-34.668 1.3074,-1.034 -10.666,1.668 -10.666,1.668 l -10.6672,16.666" style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path38" inkscape:connector-curvature="0" />
|
||||
<path d="m 112.385,165.101 c 0,0 0.777,10.104 3.498,9.327 2.721,-0.777 2.721,-3.498 2.721,-3.498 0,0 -6.608,-4.275 -6.219,-5.829" style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path40" inkscape:connector-curvature="0" />
|
||||
<path d="m 140.05,202.101 c 0,0 -5.494,-1.16 -6,-6 -0.506,-4.841 6,-1 7,-0.667" style="fill:#f7e4cd;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path42" inkscape:connector-curvature="0" />
|
||||
<path d="m 99.7168,201.767 c 0,0 -7.334,-1 -7.334,-5.666 0,-4.667 8.3342,-4.334 10.6672,-2.334" style="fill:#f7e4cd;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path44" inkscape:connector-curvature="0" />
|
||||
<path d="m 54.3828,180.101 c 0,0 -12.6672,7.667 -14,0.333 -1.3332,-7.333 -4.334,-12.667 2,-20.333 l -4.3332,1.333 -4,10.333 -1.3328,10 7.666,8.001 8.6668,-0.667 5,-4 0.3332,-5" style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path46" inkscape:connector-curvature="0" />
|
||||
<path d="m 60.3828,201.101 c 0,0 5.6668,29.333 34.334,35 23.6012,4.665 35.9992,-1 40.6662,-6.333 0,0 -21,24.999 -41.0002,17.333 -20,-7.667 -34.666,-21.667 -34.3332,-30.666 0.5676,-15.328 0.3332,-15.334 0.3332,-15.334" style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path48" inkscape:connector-curvature="0" />
|
||||
<path d="m 137.717,226.435 c 0,0 -9.666,0.333 -10,-8.334 0,0 -0.001,-1.333 0.666,-2.666 0,0 7.668,8.667 12.334,4" style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path50" inkscape:connector-curvature="0" />
|
||||
<path d="m 95.3887,214.532 c 0,0 -1.6641,13.303 -13.0059,5.569 -7.3332,-5 -6.666,-12 -5.3332,-13.333 1.3332,-1.334 0.9707,-4.019 1.9856,-2.176 1.0144,1.843 0.6804,7.843 4.3476,9.509 3.6668,1.667 9.6777,3.529 12.0059,0.431" style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path52" inkscape:connector-curvature="0" />
|
||||
<path d="m 64.0496,124.435 -31.3328,-14 c 0,0 13,-51.667 6.3328,-67.667 l -4.6668,1.666 -0.3332,19.6672 -8.6656,37.3328 -3.6672,10.334 32.666,21.999 9.6668,-9.332" style="fill:#49728b;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path54" inkscape:connector-curvature="0" />
|
||||
<path d="m 67.2715,95.8578 4.4453,-5.4238 0,-20 -5.334,0 c 0,0 -0.666,14 -0.666,15.6672 0,1.6668 0.666,7.6668 0.666,7.6668" style="fill:#49728b;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path56" inkscape:connector-curvature="0" />
|
||||
<path d="m 67.3828,67.434 -15,-0.666 4.334,-3 10.666,-1.6668" style="fill:#49728b;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path58" inkscape:connector-curvature="0" />
|
||||
<path d="m 118.717,70.768 12.333,0.3332 3,-30.6672 -12.667,-1.666 -2.666,32" style="fill:#335061;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path60" inkscape:connector-curvature="0" />
|
||||
<path d="m 122.05,70.768 18.667,1 c 0,0 7.666,19.3332 7.666,20.3332 0,1 6.667,27.9998 6.667,27.9998 l -15,15.666 -3,2.667 -8,-8 0,-31 -7,-28.666" style="fill:#335061;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path62" inkscape:connector-curvature="0" />
|
||||
<path d="m 130.383,73.1012 -11.666,-2.3332 1.666,-9.334 c 4.333,-2 11.667,3.334 11.667,3.334" style="fill:#49728b;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path64" inkscape:connector-curvature="0" />
|
||||
<path d="m 130.717,131.434 23.333,-17.333 0.667,8 -17.667,16.333 -6.333,-7" style="fill:#49728b;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path66" inkscape:connector-curvature="0" />
|
||||
<path d="M 78.9508,5.09805 72.0496,33.102 68.6172,53.7648 68.0496,69.102 l 31.2348,1.6628 19.4326,0.0032 -1.767,-35.0032 3,-26.99996 -0.333,-5 -25.3326,-2 -15.3336,3.33321" style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path68" inkscape:connector-curvature="0" />
|
||||
<path d="m 114.383,71.1012 c 0,0 -1.666,-34.6672 3.334,-59.3332 0,0 -10,-6.33402 -24.6674,-8.00003 l 28.0004,1 3.333,2 -4,54.66603 -1,11.668" style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path70" inkscape:connector-curvature="0" />
|
||||
<path d="m 134.618,43.098 13,3.6668 24.666,1.3332 3.667,11.3329 -6.667,19.6671 -7.666,1 -10.667,-3.3332 -10.234,-4.9968 -5.433,0.9968 -4.234,-1.6636" style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path72" inkscape:connector-curvature="0" />
|
||||
<path d="m 134.383,49.768 c 0,0 8.666,3.9992 10,3.666 l -3.666,18.334 4.333,1.666 c 0,0 3,-17.3328 3,-19.3328 0,0 18.666,-1 20.333,-1 0,0 4,7.6668 3,15.6668 l 3.667,-10.6668 0.333,-6 -5.333,-8 -6,-1.3332 -10,0.3332 -3.333,4.3328 -11.667,-1.666 -3.667,-1.334" style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path74" inkscape:connector-curvature="0" />
|
||||
<path d="m 121.284,73.4309 -7.333,18.6671 -7.667,11 c 0,0 1.666,4.667 4,4.667 2.334,0 7.667,0 7.667,0 l 7.333,-2.667 -0.666,-12.3332 -3.334,-19.3339" style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path76" inkscape:connector-curvature="0" />
|
||||
<path d="m 122.717,79.768 c 0,0 -9.334,17.9992 -9.334,20.666 0,0 1.666,4 4,3 2.334,-1 7.334,-3.666 7.334,-3.666 l 0,6.333 -11.334,2.334 -7.666,-1 13,-30.667 2.666,-0.334" style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path78" inkscape:connector-curvature="0" />
|
||||
<path d="m 81.9512,123.764 -9.2344,1.004 -8.6672,2.667 0,-3 4.2348,-4.67 13.3332,-6" style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path80" inkscape:connector-curvature="0" />
|
||||
<path d="m 67.0508,122.765 c 0,0 10.334,-4.334 13.6672,-3.334 l 0.3316,-3.996 -9.3316,1.996 -5.6672,4 1,1.334" style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path82" inkscape:connector-curvature="0" />
|
||||
<path d="m 134.582,106.63 c -5.656,0.166 -10.766,0.838 -15.24,2.1 0.304,1.834 -0.265,3.634 0.192,4.955 1.247,0.898 3.337,0.884 5.222,1.095 -1.63,0.801 -3.92,1.118 -5.801,0.655 -0.044,1.273 -0.615,2.062 -0.961,3.058 3.18,1.135 10.687,8.576 14.91,6.112 2.012,-1.172 2.867,-7.866 3.023,-11.121 0.13,-2.7 -0.245,-5.424 -1.345,-6.854" style="fill:#d33833;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path84" inkscape:connector-curvature="0" />
|
||||
<path d="m 134.582,106.63 c -5.656,0.166 -10.766,0.838 -15.24,2.1 0.304,1.834 -0.265,3.634 0.192,4.955 1.247,0.898 3.337,0.884 5.222,1.095 -1.63,0.801 -3.92,1.118 -5.801,0.655 -0.044,1.273 -0.615,2.062 -0.961,3.058 3.18,1.135 10.687,8.576 14.91,6.112 2.012,-1.172 2.867,-7.866 3.023,-11.121 0.13,-2.7 -0.245,-5.424 -1.345,-6.854 z" style="fill:none;stroke:#d33833;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" id="path86" inkscape:connector-curvature="0" />
|
||||
<path d="m 107.535,115.876 c -0.015,-0.428 -0.033,-0.859 -0.05,-1.291 -1.766,-1.16 -4.617,-1.146 -6.555,-2.121 2.857,-0.125 5.106,-0.813 7.052,-1.783 -0.043,-1.078 -0.084,-2.155 -0.126,-3.233 -3.237,-2.216 -6.194,-5.516 -10.0052,-7.5941 -1.802,-0.9828 -8.1262,-3.5117 -10.0434,-3.0648 -1.0847,0.2519 -1.1824,1.598 -1.616,2.8668 -0.9238,2.7171 -3.0508,7.0421 -3.2363,11.1321 -0.2363,5.166 -0.7578,13.824 4.8094,12.76 4.4914,-0.857 9.7152,-2.926 13.1925,-4.826 2.125,-1.162 3.354,-2.598 6.578,-2.846" style="fill:#d33833;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path88" inkscape:connector-curvature="0" />
|
||||
<path d="m 107.535,115.876 c -0.015,-0.428 -0.033,-0.859 -0.05,-1.291 -1.766,-1.16 -4.617,-1.146 -6.555,-2.121 2.857,-0.125 5.106,-0.813 7.052,-1.783 -0.043,-1.078 -0.084,-2.155 -0.126,-3.233 -3.237,-2.216 -6.194,-5.516 -10.0052,-7.5941 -1.802,-0.9828 -8.1262,-3.5117 -10.0434,-3.0648 -1.0847,0.2519 -1.1824,1.598 -1.616,2.8668 -0.9238,2.7171 -3.0508,7.0421 -3.2363,11.1321 -0.2363,5.166 -0.7578,13.824 4.8094,12.76 4.4914,-0.857 9.7152,-2.926 13.1925,-4.826 2.125,-1.162 3.354,-2.598 6.578,-2.846 z" style="fill:none;stroke:#d33833;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" id="path90" inkscape:connector-curvature="0" />
|
||||
<path d="m 110.75,109.712 c -0.494,2.814 -1.065,3.617 -0.844,6.072 7.505,5.004 8.914,-8.595 0.844,-6.072" style="fill:#d33833;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path92" inkscape:connector-curvature="0" />
|
||||
<path d="m 110.75,109.712 c -0.494,2.814 -1.065,3.617 -0.844,6.072 7.505,5.004 8.914,-8.595 0.844,-6.072 z" style="fill:none;stroke:#d33833;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" id="path94" inkscape:connector-curvature="0" />
|
||||
<path d="m 121.617,107.431 c 0,0 -2.334,3.334 -0.667,4.334 1.667,1 3.334,-0.001 4.334,1.666 1,1.667 0,2.667 0.333,4.667 0.333,2 2.001,2.334 3.667,2.667 1.666,0.333 6.334,1 7,-0.667 l -2,6 -4,1.333 -12.667,-7.333 -0.667,-3.667 0,-7.333" style="fill:#ef3d3a;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path96" inkscape:connector-curvature="0" />
|
||||
<path d="m 86.6172,96.4309 c -0.4004,5.2021 -0.8242,10.3971 -1.2957,15.5941 -0.7055,7.76 1.864,6.406 8.5906,6.406 1.0274,0 6.3259,-1.225 6.7049,-2 1.818,-3.713 -3.04,-2.888 2.094,-5.688 4.334,-2.363 11.99,1.435 10.239,6.688 -0.98,1.168 -5.106,0.364 -6.585,1.131 -2.604,1.35 -5.208,2.7 -7.8123,4.05 -3.3132,1.719 -10.9707,4.225 -14.5031,1.823 -8.9504,-6.087 0.5649,-21.296 3.7578,-27.6459" style="fill:#ef3d3a;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path98" inkscape:connector-curvature="0" />
|
||||
<path d="m 95.3887,214.532 c -9.0852,2.116 -13.5996,-3.802 -16.3535,-9.94 -2.459,0.596 -1.4805,3.94 -0.8594,5.644 1.6262,4.472 8.1797,10.425 13.5344,9.618 2.3043,-0.347 5.4226,-2.454 3.6785,-5.322" style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path100" inkscape:connector-curvature="0" />
|
||||
<path d="m 139.655,204.186 c 0.143,-0.006 0.288,-0.011 0.431,-0.017 2.053,-4.265 3.83,-8.783 6.42,-12.548 -1.735,-4.041 -13.138,-7.617 -12.962,-0.361 2.466,1.078 6.723,0.22 8.909,1.597 -1.264,3.469 -3.088,6.422 -2.798,11.329" style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path102" inkscape:connector-curvature="0" />
|
||||
<path d="m 100.04,204.075 c 1.948,-3.571 2.582,-7.323 5.351,-10.022 1.247,-1.215 3.672,-2.696 2.47,-6.075 -0.281,-0.797 -2.334,-2.574 -3.519,-2.923 -4.329,-1.278 -14.4162,-0.264 -11.0002,5.133 3.5801,-0.167 8.3922,-2.325 11.0682,0.274 -2.055,3.285 -5.7186,9.784 -4.37,13.613" style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path104" inkscape:connector-curvature="0" />
|
||||
<path d="m 138.03,167.781 c -6.518,-4.187 -13.786,-8.74 -24.466,-7.684 -2.282,1.984 -3.152,6.399 -0.935,9.315 1.154,-1.984 0.429,-5.633 3.645,-6.182 6.06,-1.037 13.113,3.707 17.472,5.365 2.703,4.557 -0.233,6.233 -2.668,9.166 -4.985,6.009 -11.672,13.457 -11.429,22.453 2.015,1.461 2.189,-2.23 2.478,-2.902 2.603,-6.092 9.154,-13.883 13.935,-19.097 1.174,-1.284 3.107,-2.516 3.322,-3.365 0.62,-2.469 -1.613,-5.427 -1.354,-7.069" style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path106" inkscape:connector-curvature="0" />
|
||||
<path d="m 52.1016,172.189 c -2.043,1.166 -2.5293,6.302 -4.9278,6.448 -3.4277,0.208 -2.8027,-6.663 -2.789,-10.681 -2.3594,2.142 -2.7743,8.737 -1.041,12.124 -1.9754,0.97 -2.8575,-1.07 -3.9532,-1.789 1.4082,10.23 14.9649,4.745 12.711,-6.102" style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path108" inkscape:connector-curvature="0" />
|
||||
<path d="m 142.18,163.521 c -3.034,-5.775 -7.326,-12.135 -16.229,-12.32 -0.181,1.865 -0.32,4.703 0.01,5.826 6.806,0.654 11.008,4.118 16.219,6.494" style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path110" inkscape:connector-curvature="0" />
|
||||
<path d="m 99.5266,159.777 c 5.6784,-2.986 16.1144,-3.307 23.8324,-3.081 0.414,-1.691 0.404,-3.78 0.42,-5.842 -9.921,-0.495 -21.651,1.96 -24.2524,8.923" style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path112" inkscape:connector-curvature="0" />
|
||||
<path d="m 98.4473,154.209 c 3.9267,-9.859 17.4227,-8.724 28.8037,-8.452 -0.501,-1.28 -1.587,-2.792 -2.937,-3.339 -3.647,-1.484 -13.706,-2.61 -18.769,0.079 -3.211,1.707 -5.274,5.564 -7.0333,7.825 -0.8496,1.092 -5.0801,3.881 -0.0644,3.887" style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path114" inkscape:connector-curvature="0" />
|
||||
<path d="m 137.556,99.8262 c -4.608,-7.8922 -9.017,-15.9981 -14.484,-22.9594 2.292,6.7391 3.273,18.0184 3.619,26.6172 4.795,2.244 8.901,-0.505 10.865,-3.6578" style="fill:#81b0c4;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path116" inkscape:connector-curvature="0" />
|
||||
<path d="m 162.352,71.4609 c -5.159,-1.0328 -8.784,-6.0468 -13.817,-5.725 2.766,3.8993 7.613,5.543 13.817,5.725" style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path118" inkscape:connector-curvature="0" />
|
||||
<path d="m 164.628,63.3871 c -4.205,-0.4441 -9.144,-1.125 -13.409,-0.7742 2.019,3.084 9.798,2.0199 13.409,0.7742" style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path120" inkscape:connector-curvature="0" />
|
||||
<path d="m 166.085,56.4262 c -4.726,-0.1024 -10.6,-0.0082 -15.092,0.3687 2.657,2.8539 12.027,1.059 15.092,-0.3687" style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path122" inkscape:connector-curvature="0" />
|
||||
<path d="m 128.664,37.377 c 0.678,-5.9352 3.031,-11.9489 2.736,-18.4489 -2.613,-0.8812 -4.114,-1.6519 -7.615,-1.6472 -0.247,5.5242 -0.986,13.9691 -0.765,19.2351 1.722,-0.114 4.261,1.2301 5.644,0.861" style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path124" inkscape:connector-curvature="0" />
|
||||
<path d="m 121.045,124.849 c -2.373,-1.549 -4.394,-3.483 -6.673,-5.137 -5.054,-0.25 -7.812,0.35 -11.525,3.252 0.061,0.233 0.434,0.129 0.448,0.415 5.41,-2.411 12.287,0.982 17.75,1.47" style="fill:#f0d6b7;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path126" inkscape:connector-curvature="0" />
|
||||
<path d="m 92.6445,87.9711 c 1.4864,6.441 7.3106,9.7769 12.5995,13.3239 5.459,-6.9282 8.779,-15.838 12.435,-24.436 -8.638,2.6039 -17.464,6.8289 -25.0345,11.1121" style="fill:#81b0c4;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path128" inkscape:connector-curvature="0" />
|
||||
<path d="m 123.02,36.516 c -0.221,-5.266 0.518,-13.7109 0.765,-19.2351 3.501,-0.0047 5.002,0.766 7.615,1.6472 0.295,6.5 -2.058,12.5137 -2.736,18.4489 -1.383,0.3691 -3.922,-0.975 -5.644,-0.861 z M 68.5059,66.4648 C 70.8145,45.2418 74.1582,27.4012 80.291,8.60781 93.9023,4.475 110.311,4.11484 122.342,7.84414 120.133,18.4512 121.098,31.3648 119.807,42.684 c -0.973,8.5078 -0.477,17.068 -1.811,25.748 -14.578,3.0328 -35.1835,0.709 -49.4901,-1.9672 z m 52.9371,1.834 c -0.123,-9.1148 0.408,-18.1058 1.104,-27.232 3.5,0.5254 5.875,0.8762 9.127,1.5891 -1.056,8.7859 -0.926,18.6722 -3.077,26.4441 -2.486,-0.0238 -4.675,0.0289 -7.154,-0.8012 z m 17.755,1.4692 c -1.661,0.3808 -3.595,0.0148 -5.182,-0.016 0.746,-7.4301 2.556,-15.629 3.193,-23.4282 2.497,-0.0777 3.831,1.1 5.885,1.4961 0.11,6.8461 -0.598,16.2781 -3.896,21.9481 z m 26.884,-24.5629 c 5.205,1.264 8.478,7.639 7.022,14.1859 -0.977,4.4 -2.717,12.6852 -4.579,15.5 -1.376,2.082 -5.107,4.8078 -8.086,2.9 -4.846,-3.1031 -13.383,-4.0039 -16.917,-7.7601 1.772,-5.9 2.322,-14.0039 3.053,-21.4797 6.054,-0.3774 13.503,1.666 18.538,-0.5024 -3.515,-1.1386 -8.076,-1.1476 -11.113,-2.807 2.482,-1.1988 8.293,-0.9566 12.082,-0.0367 z M 117.679,76.859 c -3.656,8.598 -6.976,17.5078 -12.435,24.436 C 99.9551,97.748 94.1309,94.4121 92.6445,87.9711 100.215,83.6879 109.041,79.4629 117.679,76.859 z m 9.012,26.625 c -0.346,-8.5988 -1.327,-19.8781 -3.619,-26.6172 5.467,6.9613 9.876,15.0672 14.484,22.9594 -1.964,3.1528 -6.07,5.9018 -10.865,3.6578 z m -10.216,3.63 c -2.071,0.223 -3.829,-2.381 -6.522,-1.255 -0.617,-0.682 -1.178,-1.421 -1.807,-2.087 5.948,-7.1681 8.651,-17.338 13.245,-25.7618 2.465,8.0918 2.181,16.957 2.724,25.7888 -3.387,-0.215 -5.266,3.063 -7.64,3.315 z m -6.569,8.67 c -0.221,-2.455 0.35,-3.258 0.844,-6.072 8.07,-2.523 6.661,11.076 -0.844,6.072 z m -8.949,2.938 c -3.4773,1.9 -8.7011,3.969 -13.1925,4.826 -5.5672,1.065 -5.0457,-7.594 -4.8094,-12.76 0.1855,-4.09 2.3125,-8.415 3.2363,-11.1321 0.4336,-1.2688 0.5313,-2.6149 1.616,-2.8668 1.9172,-0.4469 8.2414,2.082 10.0434,3.0648 3.8112,2.0781 6.7682,5.3781 10.0052,7.5941 0.042,1.078 0.083,2.155 0.126,3.233 -1.946,0.97 -4.195,1.658 -7.052,1.783 1.938,0.975 4.789,0.961 6.555,2.121 0.017,0.432 0.035,0.863 0.05,1.291 -3.224,0.248 -4.453,1.684 -6.578,2.846 z m -33.2136,6.033 c -2.886,-2.93 8.0945,-6.924 11.5906,-7.139 -0.0195,1.854 1.0566,3.602 0.8398,4.932 -4.1523,0.729 -9.6093,0.248 -12.4304,2.207 z m 35.5516,-1.376 c -0.014,-0.286 -0.387,-0.182 -0.448,-0.415 3.713,-2.902 6.471,-3.502 11.525,-3.252 2.279,1.654 4.3,3.588 6.673,5.137 -5.463,-0.488 -12.34,-3.881 -17.75,-1.47 z m 32.632,-9.895 c -0.156,3.255 -1.011,9.949 -3.023,11.121 -4.223,2.465 -11.73,-4.977 -14.91,-6.112 0.346,-0.996 0.917,-1.785 0.961,-3.058 1.881,0.463 4.171,0.146 5.801,-0.655 -1.885,-0.211 -3.975,-0.197 -5.222,-1.095 -0.457,-1.321 0.112,-3.121 -0.192,-4.955 4.474,-1.262 9.584,-1.934 15.24,-2.1 1.1,1.43 1.475,4.154 1.345,6.854 z m -73.0422,8.437 c -0.9063,0.646 -7.0371,8.623 -7.877,8.292 C 43.9141,125.838 33.541,118.273 24.2715,111.118 33.1094,92.1539 36.677,68.9199 37.3074,46.5262 47.4316,41.791 56.3242,34.9648 70.0625,34.252 68.4727,45.5 67.0215,55.5352 66.1191,66.125 c -3.4519,1.4551 -8.4043,-0.066 -11.6347,0.4512 -0.0274,3.8929 4.9336,1.7047 5.3468,4.3226 0.3114,1.9801 -2.7296,2.1301 -1.7394,5.2481 2.5254,-0.918 3.8516,-2.9457 6.5449,-3.7071 2.461,5.384 -0.0344,14.9102 0.3203,19.4102 0.0672,0.8449 0.4219,4.6809 2.3145,4.0078 1.675,-0.5957 -0.0957,-10.2019 0.0879,-14.4609 0.1672,-3.9239 -0.4739,-7.7207 1.1152,-10.184 13.2754,1.807 26.7656,2.975 41.1294,3.3691 -3.16,1.3559 -6.914,2.6391 -11.0298,4.959 -2.2312,1.2578 -9.2644,3.875 -9.9082,5.9942 -1.0273,3.3769 2.6953,5.1757 3.332,8.0707 -6.7011,-3.6547 -8.0085,3.5031 -9.5937,8.5741 -1.4363,4.593 -2.2539,8.024 -2.6063,10.673 -5.7726,2.752 -11.9445,5.539 -16.9132,9.068 z m 67.1792,7.327 c 9.243,4.482 10.909,-16.751 7.286,-23.591 0.56,-2.04 2.486,-2.821 3.272,-4.655 -5.158,-9.2399 -10.887,-17.8649 -16.15,-26.9961 3.915,2.4371 9.507,0.4359 14.114,2.2601 1.684,0.666 2.903,4.5211 4.178,7.6051 3.507,8.4848 7.189,19.1819 8.827,27.2789 0.37,1.845 1.378,5.865 1.152,7.507 -0.403,2.94 -4.392,5.12 -6.421,6.938 -3.738,3.358 -6.092,6.313 -9.991,9.453 -1.581,-2.334 -4.974,-3.902 -6.267,-5.8 z m -88.3179,81.968 c -4.4043,-4.846 -3.4824,-13.926 -2.9492,-20.386 7.9609,5.008 18.5273,-0.396 18.4277,-8.914 3.8008,0.101 1.4199,4.747 0.7324,7.74 -2.2468,9.776 3.7852,20.397 0.2735,29.337 -6.8184,-0.517 -12.42,-3.302 -16.4844,-7.777 z m 31.5137,28.126 c -9.9707,-2.826 -22.7493,-10.071 -26.8465,-19.028 3.1726,0.461 5.375,2.061 8.5047,2.259 1.1828,0.077 2.7324,-0.496 4.0918,-0.158 2.709,0.672 4.9953,6.746 7.039,9.006 1.9922,2.207 4.3867,3.15 6.0254,5.162 1.0528,0.508 2.6094,0.473 2.6692,2.054 -0.4563,0.488 -0.9368,0.86 -1.4836,0.705 z m 51.9032,-2.658 c -10.349,5.839 -27.8661,10.231 -38.8747,4.743 -8.8828,-4.429 -20.8899,-11.757 -24.9836,-21.043 3.8242,-8.961 -1.1328,-17.172 -1.4492,-26.27 -0.168,-4.841 2.2793,-9.067 2.4668,-14.3Line truncated
|
||||
<path d="m 90.491,157.255 c 0.4387,0.584 2.8508,1.471 6.2258,-0.154 0,0 -4,-0.667 -3.6672,-7.336 l -1.6668,0.334 c 0,0 -1.7226,6.047 -0.8918,7.156" style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path132" inkscape:connector-curvature="0" />
|
||||
<path d="m 119.717,99.934 c 0,-1.0121 -0.821,-1.8328 -1.834,-1.8328 -1.012,0 -1.833,0.8207 -1.833,1.8328 0,1.012 0.821,1.834 1.833,1.834 1.013,0 1.834,-0.822 1.834,-1.834" style="fill:#1d1919;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path134" inkscape:connector-curvature="0" />
|
||||
<path d="m 121.55,91.434 c 0,-1.0121 -0.821,-1.8328 -1.834,-1.8328 -1.012,0 -1.833,0.8207 -1.833,1.8328 0,1.0121 0.821,1.834 1.833,1.834 1.013,0 1.834,-0.8219 1.834,-1.834" style="fill:#1d1919;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path136" inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="2414" height="3333" viewBox="0 0 2414 3332"><path style="stroke:none;fill-rule:evenodd;fill:#d33833;fill-opacity:1" d="M2372.852 1606.41c0 659.84-523.059 1194.754-1168.282 1194.754-645.215 0-1168.27-534.914-1168.27-1194.754C36.3 946.55 559.356 411.63 1204.57 411.63c645.223 0 1168.282 534.922 1168.282 1194.781"/><path style="stroke:none;fill-rule:nonzero;fill:#ef3d3a;fill-opacity:1" d="M83.906 1902.309S-.668 656.375 1147.59 620.773l-80.106-133.496-623.078 209.145L266.38 901.109l-155.77 298.145-89.015 347.082 26.703 231.387"/><path style="stroke:none;fill-rule:nonzero;fill:#231f20;fill-opacity:1" d="M404.402 791.363c-204.976 209.692-331.816 499.211-331.816 819.504 0 320.223 126.84 609.781 331.816 819.438 205.075 209.652 487.7 339.02 800.153 339.02 312.46 0 595.105-129.368 800.16-339.02 204.965-209.657 331.832-499.215 331.832-819.438 0-320.293-126.867-609.812-331.832-819.504-205.055-209.613-487.7-338.98-800.16-339.008-312.453.028-595.078 129.395-800.153 339.008zM352.516 2481.02C134.676 2258.273 0 1950.434 0 1610.867c0-339.62 134.676-647.43 352.516-870.191 217.793-222.801 519.273-360.899 852.039-360.86 332.77-.039 634.277 138.059 852.03 360.86 217.864 222.761 352.556 530.597 352.528 870.191.028 339.567-134.664 647.406-352.527 870.153-217.754 222.789-519.262 360.87-852.031 360.87-332.766 0-634.246-138.081-852.04-360.87"/><path style="stroke:none;fill-rule:evenodd;fill:#f0d6b7;fill-opacity:1" d="m1696.355 1613.031-178.03 26.696-240.337 26.699-155.777 4.445-151.313-4.445-115.722-35.602-102.367-111.238-80.11-226.941-17.8-48.954-106.813-35.586-62.313-102.351L441.27 958.91l48.964-129.047 115.707-40.047 93.461 44.504 44.516 97.89 53.406-8.901 17.797-22.239-17.797-102.351-4.457-129.047 26.703-177.988-1.043-101.668L899.68 260.3l142.422-102.352L1291.34 51.156l275.93 40.047 240.332 173.543 111.273 177.984 71.207 129.051 17.797 320.383-53.406 275.89-97.91 244.735-93.461 129.047"/><path style="stroke:none;fill-rule:evenodd;fill:#335061;fill-opacity:1" d="m1545.027 2382.832-636.445 26.7v106.796l53.406 373.781-26.703 31.157-445.05-151.301-31.165-53.399-44.504-502.816-102.347-302.59-22.262-71.191 356.04-244.735 111.273-44.507 97.906 120.144 84.558 75.652 97.922 31.145 44.5 13.348 53.407 231.386 40.054 48.95 102.371-35.602-71.218 137.953 387.203 182.434-48.946 26.695"/><path style="stroke:none;fill-rule:evenodd;fill:#6d6b6d;fill-opacity:1" d="m490.234 829.863 115.707-40.047 93.461 44.504 44.516 97.89 53.406-8.901 13.352-53.399-26.703-102.336 26.703-244.746-22.258-133.492 80.11-93.45 173.574-137.937-48.961-66.746-244.778 120.145-102.367 80.093-57.855 124.59-89.016 120.145-26.703 142.398 17.812 151.29"/><path style="stroke:none;fill-rule:evenodd;fill:#dcd9d8;fill-opacity:1" d="M672.7 411.586s66.757-164.637 333.792-244.73c267.035-80.098 13.352-57.86 13.352-57.86L730.566 220.25 619.293 331.492l-48.95 89 102.356-8.906M539.184 798.719S445.719 487.227 801.77 442.73l-13.352-53.394-244.777 57.855-71.22 231.383 17.813 151.29 48.95-31.145"/><path style="stroke:none;fill-rule:evenodd;fill:#f7e4cd;fill-opacity:1" d="m681.602 1212.55 58.273-56.456s26.305 3.058 30.746 34.203c4.445 31.156 17.797 311.492 209.168 462.793 17.457 13.805-142.41-22.266-142.41-22.266l-142.426-222.48M1500.54 1128.008s10.374-134.883 46.702-124.512c36.332 10.375 36.332 46.7 36.332 46.7s-88.23 57.066-83.035 77.812"/><path style="stroke:none;fill-rule:nonzero;fill:#f7e4cd;fill-opacity:1" d="M1869.914 634.082s-73.351 15.484-80.11 80.094c-6.757 64.625 80.11 13.351 93.462 8.906M1331.395 638.54s-97.922 13.35-97.922 75.636c0 62.304 111.277 57.86 142.425 31.16"/><path style="stroke:none;fill-rule:evenodd;fill:#f7e4cd;fill-opacity:1" d="M726.105 927.766s-169.128-102.348-186.921-4.446c-17.801 97.89-57.868 169.098 26.703 271.434l-57.856-17.793-53.41-137.941-17.793-133.493L539.184 798.72l115.714 8.902 66.758 53.399 4.45 66.746M806.219 647.43s75.66-391.575 458.418-467.227c315.117-62.273 480.652 13.348 542.965 84.543 0 0-280.387-333.723-547.426-231.387C993.14 135.711 797.324 322.602 801.77 442.73c7.578 204.622 4.449 204.7 4.449 204.7M1838.766 309.238s-129.059-4.445-133.52 111.254c0 0-.012 17.793 8.895 35.59 0 0 102.382-115.7 164.68-53.398"/><path style="stroke:none;fill-rule:evenodd;fill:#f7e4cd;fill-opacity:1" d="M1273.61 468.137s-22.22-177.59-173.653-74.344c-97.91 66.746-89.004 160.191-71.207 177.988 17.8 17.805 12.96 53.649 26.512 29.047 13.543-24.601 9.082-104.7 58.047-126.937 48.957-22.254 129.214-47.114 160.3-5.754"/><path style="stroke:none;fill-rule:evenodd;fill:#49728b;fill-opacity:1" d="m855.176 1670.871-418.348 186.89s173.57 689.723 84.555 903.313l-62.313-22.238-4.449-262.547-115.7-498.367-48.964-137.953 436.148-293.672 129.07 124.574M898.195 2052.36l59.352 72.406v266.984h-71.219s-8.89-186.89-8.89-209.145c0-22.253 8.89-102.347 8.89-102.347M899.68 2431.8l-200.278 8.891 57.868 40.047 142.41 22.25"/><path style="stroke:none;fill-rule:evenodd;fill:#335061;fill-opacity:1" d="m1585.082 2387.293 164.668-4.45 40.055 409.387-169.125 2Line truncated
|
||||
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 21 KiB |
+1
-1
@@ -1 +1 @@
|
||||
-Xmx800m
|
||||
-Xmx1100m
|
||||
+12
-2
@@ -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`.
|
||||
@@ -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.
|
||||
|
||||
[](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.
|
||||
@@ -220,4 +230,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
|
||||
[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
|
||||
Vendored
+7
-4
@@ -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'
|
||||
}
|
||||
|
||||
@@ -187,6 +187,7 @@ import org.xml.sax.helpers.DefaultHandler;
|
||||
* @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";
|
||||
|
||||
@@ -27,6 +27,7 @@ package hudson.cli.declarative;
|
||||
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 @@ import org.springframework.security.core.context.SecurityContextHolder;
|
||||
* @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 {
|
||||
|
||||
@@ -110,6 +110,7 @@ import org.xml.sax.SAXException;
|
||||
// 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());
|
||||
|
||||
@@ -32,6 +32,7 @@ import static java.util.logging.Level.WARNING;
|
||||
|
||||
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 @@ import org.springframework.security.core.Authentication;
|
||||
* @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;
|
||||
|
||||
@@ -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 @@ import org.xml.sax.SAXException;
|
||||
* @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.
|
||||
|
||||
@@ -171,6 +171,7 @@ import org.springframework.security.core.Authentication;
|
||||
* @see QueueTaskDispatcher
|
||||
*/
|
||||
@ExportedBean
|
||||
@SuppressFBWarnings(value = "THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION", justification = "TODO needs triage")
|
||||
public class Queue extends ResourceController implements Saveable {
|
||||
|
||||
/**
|
||||
|
||||
@@ -39,6 +39,12 @@ import jenkins.security.NotReallyRoleSensitiveCallable;
|
||||
* 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.
|
||||
|
||||
@@ -104,6 +104,7 @@ import org.kohsuke.stapler.interceptor.RequirePOST;
|
||||
* @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?
|
||||
|
||||
@@ -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 @@ import jenkins.util.Timer;
|
||||
* @author Kohsuke Kawaguchi
|
||||
* @since 1.124
|
||||
*/
|
||||
@SuppressFBWarnings(value = "THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION", justification = "TODO needs triage")
|
||||
public abstract class SafeTimerTask extends TimerTask {
|
||||
|
||||
/**
|
||||
|
||||
@@ -230,14 +230,12 @@ public abstract class FormFieldValidator {
|
||||
ok();
|
||||
} else {
|
||||
response.setContentType("text/html;charset=UTF-8");
|
||||
// 1x16 spacer needed for IE since it doesn't support min-height
|
||||
if (APPLY_CONTENT_SECURITY_POLICY_HEADERS) {
|
||||
for (String header : new String[]{"Content-Security-Policy", "X-WebKit-CSP", "X-Content-Security-Policy"}) {
|
||||
response.setHeader(header, "sandbox; default-src 'none';");
|
||||
}
|
||||
}
|
||||
response.getWriter().print("<div class=" + cssClass + "><img src='" +
|
||||
request.getContextPath() + Jenkins.RESOURCE_PATH + "/images/none.gif' height=16 width=1>" +
|
||||
response.getWriter().print("<div class=" + cssClass + ">" +
|
||||
message + "</div>");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,6 @@ import java.io.IOException;
|
||||
import java.util.Locale;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import jenkins.model.Jenkins;
|
||||
import org.kohsuke.stapler.HttpResponse;
|
||||
import org.kohsuke.stapler.Stapler;
|
||||
import org.kohsuke.stapler.StaplerRequest;
|
||||
@@ -95,7 +94,7 @@ public abstract class FormFillFailure extends IOException implements HttpRespons
|
||||
}
|
||||
|
||||
return _errorWithMarkup(Util.escape(message) +
|
||||
" <a href='#' class='showDetails'>"
|
||||
" </div><div><a href='#' class='showDetails'>"
|
||||
+ Messages.FormValidation_Error_Details()
|
||||
+ "</a><pre style='display:none'>"
|
||||
+ Util.escape(Functions.printThrowable(e)) +
|
||||
@@ -137,9 +136,7 @@ public abstract class FormFillFailure extends IOException implements HttpRespons
|
||||
if (req == null) { // being called from some other context
|
||||
return message;
|
||||
}
|
||||
// 1x16 spacer needed for IE since it doesn't support min-height
|
||||
return "<div class=" + getKind().name().toLowerCase(Locale.ENGLISH) + "><img src='" +
|
||||
req.getContextPath() + Jenkins.RESOURCE_PATH + "/images/none.gif' height=16 width=1>" +
|
||||
return "<div class=" + getKind().name().toLowerCase(Locale.ENGLISH) + ">" +
|
||||
message + "</div>";
|
||||
}
|
||||
|
||||
|
||||
@@ -198,7 +198,7 @@ public abstract class FormValidation extends IOException implements HttpResponse
|
||||
if (e == null) return _errorWithMarkup(Util.escape(message), kind);
|
||||
|
||||
return _errorWithMarkup(Util.escape(message) +
|
||||
" <a href='#' class='showDetails'>"
|
||||
" </div><div><a href='#' class='showDetails'>"
|
||||
+ Messages.FormValidation_Error_Details()
|
||||
+ "</a><pre style='display:none'>"
|
||||
+ Util.escape(Functions.printThrowable(e)) +
|
||||
@@ -272,9 +272,7 @@ public abstract class FormValidation extends IOException implements HttpResponse
|
||||
if (req == null) { // being called from some other context
|
||||
return message;
|
||||
}
|
||||
// 1x16 spacer needed for IE since it doesn't support min-height
|
||||
return "<div class=" + kind.name().toLowerCase(Locale.ENGLISH) + "><img src='" +
|
||||
req.getContextPath() + Jenkins.RESOURCE_PATH + "/images/none.gif' height=16 width=1>" +
|
||||
return "<div class=\"" + kind.name().toLowerCase(Locale.ENGLISH) + "\">" +
|
||||
message + "</div>";
|
||||
}
|
||||
|
||||
|
||||
@@ -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 @@ import java.lang.reflect.Proxy;
|
||||
*
|
||||
* @author Kohsuke Kawaguchi
|
||||
*/
|
||||
@SuppressFBWarnings(value = "THROWS_METHOD_THROWS_CLAUSE_THROWABLE", justification = "TODO needs triage")
|
||||
public abstract class InterceptingProxy {
|
||||
/**
|
||||
* Intercepts every method call.
|
||||
|
||||
@@ -44,6 +44,7 @@ import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
|
||||
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 @@ import org.acegisecurity.Authentication;
|
||||
* </ul>
|
||||
*
|
||||
*/
|
||||
@SuppressFBWarnings(value = "THROWS_METHOD_THROWS_RUNTIMEEXCEPTION", justification = "TODO needs triage")
|
||||
@SuppressWarnings({"rawtypes", "unchecked"})
|
||||
public class RobustReflectionConverter implements Converter {
|
||||
|
||||
|
||||
@@ -337,6 +337,7 @@ import org.xml.sax.InputSource;
|
||||
* @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 {
|
||||
|
||||
@@ -26,6 +26,7 @@ package jenkins.model;
|
||||
|
||||
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 @@ import org.kohsuke.accmod.restrictions.NoExternalUse;
|
||||
* @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 {
|
||||
|
||||
/**
|
||||
|
||||
@@ -28,6 +28,7 @@ import com.google.common.cache.CacheBuilder;
|
||||
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 @@ import org.kohsuke.accmod.restrictions.NoExternalUse;
|
||||
* @see Actionable#getAllActions
|
||||
* @since 1.548
|
||||
*/
|
||||
@SuppressFBWarnings(value = "THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION", justification = "TODO needs triage")
|
||||
public abstract class TransientActionFactory<T> implements ExtensionPoint {
|
||||
|
||||
/**
|
||||
|
||||
@@ -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 @@ import org.springframework.security.core.Authentication;
|
||||
* @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;
|
||||
|
||||
@@ -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 @@ import org.springframework.security.core.Authentication;
|
||||
* 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;
|
||||
|
||||
@@ -27,6 +27,7 @@ package jenkins.security;
|
||||
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 @@ import org.springframework.security.core.context.SecurityContext;
|
||||
* @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) {
|
||||
|
||||
@@ -44,6 +44,7 @@ import jenkins.security.ImpersonatingExecutorService;
|
||||
* @author Kohsuke Kawaguchi
|
||||
* @see AtmostOneThreadExecutor
|
||||
*/
|
||||
@SuppressFBWarnings(value = "THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION", justification = "TODO needs triage")
|
||||
public class AtmostOneTaskExecutor<V> {
|
||||
|
||||
private static final Logger LOGGER = Logger.getLogger(AtmostOneTaskExecutor.class.getName());
|
||||
|
||||
@@ -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 @@ import java.util.concurrent.ExecutorService;
|
||||
*
|
||||
* @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);
|
||||
|
||||
@@ -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 @@ import org.springframework.security.core.context.SecurityContextHolder;
|
||||
* {@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());
|
||||
|
||||
+2
@@ -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 @@ import org.acegisecurity.userdetails.UserDetails;
|
||||
* @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 =
|
||||
|
||||
@@ -84,13 +84,12 @@ THE SOFTWARE.
|
||||
<j:out value="${escapeEntryTitleAndDescription ? h.escape(attrs.description) : attrs.description}"/>
|
||||
</f:description>
|
||||
</j:if>
|
||||
<!-- Needs to have a .tr class otherwise custom uses of findFollowing
|
||||
findFollowingTR(listBox, "validation-error-area") will break -->
|
||||
<div class="setting-main">
|
||||
<d:invokeBody />
|
||||
</div>
|
||||
<!-- used to display the form validation error -->
|
||||
<div class="validation-error-area tr"><div colspan="2"></div><div></div><div></div></div>
|
||||
<div class="validation-error-area">
|
||||
<!-- Used to display the form validation status -->
|
||||
</div>
|
||||
<j:if test="${attrs.help!=null}">
|
||||
<f:helpArea />
|
||||
</j:if>
|
||||
@@ -109,8 +108,9 @@ THE SOFTWARE.
|
||||
</div>
|
||||
</j:otherwise>
|
||||
</j:choose>
|
||||
<!-- used to display the form validation error -->
|
||||
<div class="validation-error-area tr"><div colspan="2"></div><div></div><div></div></div>
|
||||
<div class="validation-error-area">
|
||||
<!-- Used to display the form validation status -->
|
||||
</div>
|
||||
<f:helpArea />
|
||||
<j:if test="${!empty(attrs.description)}">
|
||||
<f:description>
|
||||
|
||||
@@ -33,12 +33,13 @@ THE SOFTWARE.
|
||||
and the presence of the value.
|
||||
<st:attribute name="field" use="required" />
|
||||
<st:attribute name="title" use="required" />
|
||||
<st:attribute name="help" />
|
||||
</st:documentation>
|
||||
<!--
|
||||
Without @checked, optionalBlock will try to coerce an object to a boolean, which fails,
|
||||
so override @checked manually.
|
||||
-->
|
||||
<f:optionalBlock field="${field}" title="${title}" checked="${instance[field]!=null}">
|
||||
<f:optionalBlock field="${field}" title="${title}" checked="${instance[field]!=null}" help="${help}">
|
||||
<j:set var="descriptor" value="${app.getDescriptorOrDie(descriptor.getPropertyTypeOrDie(instance,field).clazz)}" />
|
||||
<j:set var="instance" value="${instance[field]}"/>
|
||||
<st:include from="${descriptor}" page="${descriptor.configPage}" />
|
||||
|
||||
@@ -11,12 +11,12 @@ function updateListBox(listBox,url,config) {
|
||||
// form entry using tables-to-divs markup.
|
||||
function getStatusElement() {
|
||||
function getStatusForTabularForms() {
|
||||
return findFollowingTR(listBox, "validation-error-area").firstElementChild.nextSibling;
|
||||
return listBox.parentNode.querySelector(".validation-error-area");
|
||||
}
|
||||
function getStatusForDivBasedForms() {
|
||||
var settingMain = listBox.closest('.setting-main')
|
||||
if (!settingMain) {
|
||||
console.warn("Couldn't find the expected parent element (.setting-main) for element", listBox)
|
||||
console.warn("Couldn't find the expected validation element (.validation-error-area) for element", listBox.parentNode)
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -51,16 +51,18 @@ THE SOFTWARE.
|
||||
</st:attribute>
|
||||
</st:documentation>
|
||||
<f:entry>
|
||||
<div style="float:right">
|
||||
<div class="jenkins-validate-button__container">
|
||||
<div style="display:none;">
|
||||
<l:spinner text="${attrs.progress}" />
|
||||
</div>
|
||||
<input type="button" value="${title}" class="yui-button validate-button ${attrs.clazz} Behaviour-validateButton"
|
||||
data-validate-button-descriptor-url="${descriptor.descriptorFullUrl}"
|
||||
data-validate-button-method="${method}"
|
||||
data-validate-button-with="${with}" />
|
||||
<div class="jenkins-validate-button__container__status">
|
||||
<!-- Used to display the form validation status -->
|
||||
</div>
|
||||
</div>
|
||||
<div style="display:none;">
|
||||
<l:spinner text="${attrs.progress}" />
|
||||
</div>
|
||||
<div><!-- this is where the error message goes --></div>
|
||||
<st:adjunct includes="lib.form.validateButton.adjunct"/>
|
||||
</f:entry>
|
||||
</j:jelly>
|
||||
@@ -52,7 +52,7 @@ THE SOFTWARE.
|
||||
</j:when>
|
||||
<j:otherwise>
|
||||
<a href="${attrs.href ?: rootURL+'/'+r.url}" class="model-link">
|
||||
<l:icon alt="${r.iconColor.description}" class="${r.buildStatusIconClassName} icon-sm" style="margin-left: 0; position: relative; top: 0.2rem;"/><span class="jenkins-icon-adjacent">${jobName_}#<!-- -->${number}</span></a>
|
||||
<l:icon alt="${r.iconColor.description}" class="${r.buildStatusIconClassName} icon-sm" style="margin-left: 0; position: relative; top: -0.1rem;"/><span class="jenkins-icon-adjacent">${jobName_}#<!-- -->${number}</span></a>
|
||||
</j:otherwise>
|
||||
</j:choose>
|
||||
</j:otherwise>
|
||||
|
||||
@@ -28,7 +28,7 @@ THE SOFTWARE.
|
||||
<parent>
|
||||
<groupId>org.jenkins-ci</groupId>
|
||||
<artifactId>jenkins</artifactId>
|
||||
<version>1.74</version>
|
||||
<version>1.76</version>
|
||||
<relativePath />
|
||||
</parent>
|
||||
|
||||
@@ -71,7 +71,7 @@ THE SOFTWARE.
|
||||
</issueManagement>
|
||||
|
||||
<properties>
|
||||
<revision>2.351</revision>
|
||||
<revision>2.355</revision>
|
||||
<changelist>-SNAPSHOT</changelist>
|
||||
|
||||
<!-- *.html files are in UTF-8, and *.properties are in iso-8859-1, so this configuration is actually incorrect,
|
||||
@@ -101,12 +101,8 @@ THE SOFTWARE.
|
||||
<access-modifier.version>1.27</access-modifier.version>
|
||||
<bridge-method-injector.version>1.23</bridge-method-injector.version>
|
||||
<junit.jupiter.version>5.8.2</junit.jupiter.version>
|
||||
<mockito.version>4.6.0</mockito.version>
|
||||
<spotless.version>2.22.5</spotless.version>
|
||||
|
||||
<!-- TODO 3.x versions expose "GC overhead limit exceeded" errors in this test suite -->
|
||||
<maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version>
|
||||
<maven-surefire-report-plugin.version>2.22.2</maven-surefire-report-plugin.version>
|
||||
<mockito.version>4.6.1</mockito.version>
|
||||
<spotless.version>2.22.7</spotless.version>
|
||||
</properties>
|
||||
|
||||
<dependencyManagement>
|
||||
@@ -475,7 +471,7 @@ THE SOFTWARE.
|
||||
<arguments>-P release,sign</arguments>
|
||||
<!-- work around for a bug in javadoc plugin that causes the release to fail. see MRELEASE-271 -->
|
||||
<preparationGoals>clean install</preparationGoals>
|
||||
<goals>-DskipTests -Danimal.sniffer.skip=false javadoc:javadoc deploy</goals>
|
||||
<goals>-DskipTests -Danimal.sniffer.skip=false -Dspotbugs.skip -Dmaven.checkstyle.skip -Dspotless.check.skip generate-resources javadoc:javadoc deploy</goals>
|
||||
<pushChanges>false</pushChanges>
|
||||
<localCheckout>true</localCheckout>
|
||||
<tagNameFormat>jenkins-@{project.version}</tagNameFormat>
|
||||
|
||||
@@ -573,6 +573,194 @@
|
||||
<Class name="jenkins.security.CryptoConfidentialKey"/>
|
||||
</Or>
|
||||
</And>
|
||||
<And>
|
||||
<Bug pattern="THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION"/>
|
||||
<Or>
|
||||
<Class name="hudson.ClassicPluginStrategy"/>
|
||||
<Class name="hudson.cli.AbstractBuildRangeCommand"/>
|
||||
<Class name="hudson.cli.AddJobToViewCommand"/>
|
||||
<Class name="hudson.cli.BuildCommand"/>
|
||||
<Class name="hudson.cli.CancelQuietDownCommand"/>
|
||||
<Class name="hudson.cli.ClearQueueCommand"/>
|
||||
<Class name="hudson.cli.CLI"/>
|
||||
<Class name="hudson.cli.CLICommand"/>
|
||||
<Class name="hudson.cli.ConnectNodeCommand"/>
|
||||
<Class name="hudson.cli.ConsoleCommand"/>
|
||||
<Class name="hudson.cli.CopyJobCommand"/>
|
||||
<Class name="hudson.cli.CreateJobCommand"/>
|
||||
<Class name="hudson.cli.CreateNodeCommand"/>
|
||||
<Class name="hudson.cli.CreateViewCommand"/>
|
||||
<Class name="hudson.cli.declarative.MethodBinder"/>
|
||||
<Class name="hudson.cli.DeleteJobCommand"/>
|
||||
<Class name="hudson.cli.DeleteNodeCommand"/>
|
||||
<Class name="hudson.cli.DeleteViewCommand"/>
|
||||
<Class name="hudson.cli.DisablePluginCommand"/>
|
||||
<Class name="hudson.cli.DisconnectNodeCommand"/>
|
||||
<Class name="hudson.cli.EnablePluginCommand"/>
|
||||
<Class name="hudson.cli.GetJobCommand"/>
|
||||
<Class name="hudson.cli.GetViewCommand"/>
|
||||
<Class name="hudson.cli.GroovyCommand"/>
|
||||
<Class name="hudson.cli.HelpCommand"/>
|
||||
<Class name="hudson.cli.InstallPluginCommand"/>
|
||||
<Class name="hudson.cli.ListJobsCommand"/>
|
||||
<Class name="hudson.cli.OfflineNodeCommand"/>
|
||||
<Class name="hudson.cli.OnlineNodeCommand"/>
|
||||
<Class name="hudson.cli.QuietDownCommand"/>
|
||||
<Class name="hudson.cli.ReloadConfigurationCommand"/>
|
||||
<Class name="hudson.cli.ReloadJobCommand"/>
|
||||
<Class name="hudson.cli.RemoveJobFromViewCommand"/>
|
||||
<Class name="hudson.cli.RunRangeCommand"/>
|
||||
<Class name="hudson.cli.SetBuildDescriptionCommand"/>
|
||||
<Class name="hudson.cli.SetBuildDisplayNameCommand"/>
|
||||
<Class name="hudson.cli.UpdateJobCommand"/>
|
||||
<Class name="hudson.cli.UpdateViewCommand"/>
|
||||
<Class name="hudson.cli.WaitNodeOfflineCommand"/>
|
||||
<Class name="hudson.cli.WaitNodeOnlineCommand"/>
|
||||
<Class name="hudson.Functions"/>
|
||||
<Class name="hudson.logging.LogRecorderManager"/>
|
||||
<Class name="hudson.Main"/>
|
||||
<Class name="hudson.model.AbstractBuild$AbstractBuildExecution"/>
|
||||
<Class name="hudson.model.Actionable"/>
|
||||
<Class name="hudson.model.AperiodicWork"/>
|
||||
<Class name="hudson.model.Build$BuildExecution"/>
|
||||
<Class name="hudson.model.ComputerSet"/>
|
||||
<Class name="hudson.model.FileParameterValue$FileItemImpl"/>
|
||||
<Class name="hudson.model.Job"/>
|
||||
<Class name="hudson.model.Label"/>
|
||||
<Class name="hudson.model.listeners.SCMListener"/>
|
||||
<Class name="hudson.model.Run$RunExecution"/>
|
||||
<Class name="hudson.model.TaskThread"/>
|
||||
<Class name="hudson.model.User"/>
|
||||
<Class name="hudson.model.View"/>
|
||||
<Class name="hudson.model.View$AsynchPeople"/>
|
||||
<Class name="hudson.Plugin"/>
|
||||
<Class name="hudson.PluginWrapper"/>
|
||||
<Class name="hudson.security.ACL"/>
|
||||
<Class name="hudson.slaves.SlaveComputer"/>
|
||||
<Class name="hudson.tools.ToolInstallation"/>
|
||||
<Class name="hudson.util.Retrier"/>
|
||||
<Class name="jenkins.agents.WebSocketAgents$Session"/>
|
||||
<Class name="jenkins.ClassLoaderReflectionToolkit"/>
|
||||
<Class name="jenkins.cli.StopBuildsCommand"/>
|
||||
<Class name="jenkins.management.AsynchronousAdministrativeMonitor"/>
|
||||
<Class name="jenkins.model.ModelObjectWithChildren"/>
|
||||
<Class name="jenkins.model.ModelObjectWithContextMenu"/>
|
||||
<Class name="jenkins.model.RunIdMigrator"/>
|
||||
<Class name="jenkins.security.RekeySecretAdminMonitor"/>
|
||||
<Class name="jenkins.security.ResourceDomainRootAction"/>
|
||||
<Class name="jenkins.security.UserDetailsCache$Retriever"/>
|
||||
<Class name="jenkins.slaves.restarter.JnlpSlaveRestarterInstaller$Install"/>
|
||||
<Class name="jenkins.slaves.restarter.SlaveRestarter"/>
|
||||
<Class name="jenkins.slaves.restarter.UnixSlaveRestarter"/>
|
||||
<Class name="jenkins.slaves.restarter.WinswSlaveRestarter"/>
|
||||
<Class name="jenkins.slaves.StandardOutputSwapper$ChannelSwapper"/>
|
||||
<Class name="jenkins.util.ProgressiveRendering"/>
|
||||
<Class name="jenkins.websocket.WebSockets"/>
|
||||
<Class name="jenkins.websocket.WebSocketSession"/>
|
||||
<Class name="jenkins.widgets.RunListProgressiveRendering"/>
|
||||
</Or>
|
||||
</And>
|
||||
<And>
|
||||
<Bug pattern="THROWS_METHOD_THROWS_CLAUSE_THROWABLE"/>
|
||||
<Or>
|
||||
<Class name="hudson.EnvVars$GetEnvVars"/>
|
||||
<Class name="hudson.FilePath"/>
|
||||
<Class name="hudson.FilePath$GetHomeDirectory"/>
|
||||
<Class name="hudson.FilePath$IsUnix"/>
|
||||
<Class name="hudson.Launcher$RemoteChannelLaunchCallable"/>
|
||||
<Class name="hudson.Launcher$RemoteLaunchCallable"/>
|
||||
<Class name="hudson.Launcher$RemoteLauncher$KillTask"/>
|
||||
<Class name="hudson.logging.LogRecorder$SetLevel"/>
|
||||
<Class name="hudson.model.Computer$DumpExportTableTask"/>
|
||||
<Class name="hudson.model.Computer$GetFallbackName"/>
|
||||
<Class name="hudson.model.Computer$ListPossibleNames"/>
|
||||
<Class name="hudson.model.DirectoryBrowserSupport$BuildChildPaths"/>
|
||||
<Class name="hudson.model.DirectoryBrowserSupport$IsAbsolute"/>
|
||||
<Class name="hudson.model.Items"/>
|
||||
<Class name="hudson.model.Queue"/>
|
||||
<Class name="hudson.model.Queue$LockedHRCallable"/>
|
||||
<Class name="hudson.model.Run$AddArtifacts"/>
|
||||
<Class name="hudson.model.Slave$GetClockDifference1"/>
|
||||
<Class name="hudson.model.Slave$GetClockDifference2"/>
|
||||
<Class name="hudson.node_monitors.ArchitectureMonitor$GetArchTask"/>
|
||||
<Class name="hudson.node_monitors.ResponseTimeMonitor$Step1"/>
|
||||
<Class name="hudson.node_monitors.ResponseTimeMonitor$Step2"/>
|
||||
<Class name="hudson.node_monitors.SwapSpaceMonitor$MonitorTask"/>
|
||||
<Class name="hudson.os.SU"/>
|
||||
<Class name="hudson.slaves.ChannelPinger$SetUpRemotePing"/>
|
||||
<Class name="hudson.slaves.ConnectionActivityMonitor$PingCommand"/>
|
||||
<Class name="hudson.slaves.SlaveComputer$AbsolutePath"/>
|
||||
<Class name="hudson.slaves.SlaveComputer$CommunicationProtocol"/>
|
||||
<Class name="hudson.slaves.SlaveComputer$DetectDefaultCharset"/>
|
||||
<Class name="hudson.slaves.SlaveComputer$DetectOS"/>
|
||||
<Class name="hudson.slaves.SlaveComputer$ListFullEnvironment"/>
|
||||
<Class name="hudson.slaves.SlaveComputer$LoadingCount"/>
|
||||
<Class name="hudson.slaves.SlaveComputer$LoadingPrefetchCacheCount"/>
|
||||
<Class name="hudson.slaves.SlaveComputer$LoadingTime"/>
|
||||
<Class name="hudson.slaves.SlaveComputer$SlaveInitializer"/>
|
||||
<Class name="hudson.slaves.SlaveComputer$SlaveLogFetcher"/>
|
||||
<Class name="hudson.slaves.SlaveComputer$SlaveVersion"/>
|
||||
<Class name="hudson.tasks.Maven$MavenInstallation$GetExecutable"/>
|
||||
<Class name="hudson.tasks.Maven$MavenInstallation$GetMavenVersion"/>
|
||||
<Class name="hudson.tasks.Shell$DescriptorImpl$Shellinterpreter"/>
|
||||
<Class name="hudson.util.AtomicFileWriter"/>
|
||||
<Class name="hudson.util.InvocationInterceptor"/>
|
||||
<Class name="hudson.util.io.ParserConfigurator$GetParserConfigurators"/>
|
||||
<Class name="hudson.util.jna.InitializationErrorInvocationHandler"/>
|
||||
<Class name="hudson.util.jna.RegistryKey"/>
|
||||
<Class name="hudson.util.ProcessTree$DoVetoersExist"/>
|
||||
<Class name="hudson.util.ProcessTree$ListAll"/>
|
||||
<Class name="hudson.util.ProcessTree$OSProcess$CheckVetoes"/>
|
||||
<Class name="hudson.util.RemotingDiagnostics$GetHeapDump"/>
|
||||
<Class name="hudson.util.RemotingDiagnostics$GetSystemProperties"/>
|
||||
<Class name="hudson.util.RemotingDiagnostics$GetThreadDump"/>
|
||||
<Class name="hudson.util.RemotingDiagnostics$Script"/>
|
||||
<Class name="jenkins.model.Jenkins$ClockDifferenceCallable"/>
|
||||
<Class name="jenkins.slaves.restarter.JnlpSlaveRestarterInstaller$FindEffectiveRestarters"/>
|
||||
<Class name="jenkins.slaves.StandardOutputSwapper$ChannelSwapper"/>
|
||||
<Class name="jenkins.util.SystemProperties$AgentCopier$CopySystemProperties"/>
|
||||
<Class name="jenkins.util.VirtualFile$CollectFiles"/>
|
||||
</Or>
|
||||
</And>
|
||||
<And>
|
||||
<Bug pattern="THROWS_METHOD_THROWS_RUNTIMEEXCEPTION"/>
|
||||
<Or>
|
||||
<Class name="hudson.cli.CLICommand"/>
|
||||
<Class name="hudson.cli.GroovyshCommand"/>
|
||||
<Class name="hudson.cli.ListChangesCommand"/>
|
||||
<Class name="hudson.cli.ReloadConfigurationCommand"/>
|
||||
<Class name="hudson.ExtensionFinder$GuiceFinder$SezpozModule"/>
|
||||
<Class name="hudson.lifecycle.Lifecycle"/>
|
||||
<Class name="hudson.model.queue.Executables"/>
|
||||
<Class name="hudson.model.UpdateCenter"/>
|
||||
<Class name="hudson.model.UpdateCenter$InstallationJob"/>
|
||||
<Class name="hudson.model.User"/>
|
||||
<Class name="hudson.search.ParsedQuickSilver$MethodGetter"/>
|
||||
<Class name="hudson.security.AbstractPasswordBasedSecurityRealm"/>
|
||||
<Class name="hudson.security.HudsonPrivateSecurityRealm"/>
|
||||
<Class name="hudson.security.SecurityRealm"/>
|
||||
<Class name="hudson.slaves.SlaveComputer"/>
|
||||
<Class name="hudson.util.ChunkedInputStream"/>
|
||||
<Class name="hudson.util.ConsistentHash"/>
|
||||
<Class name="hudson.util.DescribableList$ConverterImpl"/>
|
||||
<Class name="hudson.util.DoubleLaunchChecker"/>
|
||||
<Class name="hudson.util.PersistedList"/>
|
||||
<Class name="hudson.util.PersistedList$ConverterImpl"/>
|
||||
<Class name="jenkins.ClassLoaderReflectionToolkit"/>
|
||||
<Class name="jenkins.install.InstallState$InitialSecuritySetup"/>
|
||||
<Class name="jenkins.install.InstallState$InitialSetupCompleted"/>
|
||||
<Class name="jenkins.install.SetupWizard"/>
|
||||
<Class name="jenkins.model.Jenkins"/>
|
||||
<Class name="jenkins.model.lazy.LazyBuildMixIn"/>
|
||||
<Class name="jenkins.model.Nodes"/>
|
||||
<Class name="jenkins.security.AcegiSecurityExceptionFilter"/>
|
||||
<Class name="jenkins.security.ImpersonatingUserDetailsService"/>
|
||||
<Class name="jenkins.security.ImpersonatingUserDetailsService2"/>
|
||||
<Class name="org.acegisecurity.AuthenticationManager"/>
|
||||
<Class name="org.acegisecurity.userdetails.UserDetailsService"/>
|
||||
<Class name="org.acegisecurity.util.FieldUtils"/>
|
||||
</Or>
|
||||
</And>
|
||||
<And>
|
||||
<Bug pattern="UNENCRYPTED_SERVER_SOCKET"/>
|
||||
<Class name="hudson.slaves.Channels"/>
|
||||
|
||||
+3
-3
@@ -85,7 +85,7 @@ THE SOFTWARE.
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>jenkins-test-harness</artifactId>
|
||||
<version>1752.v86627a_c48d91</version>
|
||||
<version>1753.v45c760e2400f</version>
|
||||
<scope>test</scope>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
@@ -145,13 +145,13 @@ THE SOFTWARE.
|
||||
<dependency>
|
||||
<groupId>org.jenkins-ci.plugins</groupId>
|
||||
<artifactId>cloudbees-folder</artifactId>
|
||||
<version>6.722.v8165b_a_cf25e9</version>
|
||||
<version>6.729.v2b_9d1a_74d673</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jenkins-ci.plugins</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>1.63</version>
|
||||
<version>1119.va_a_5e9068da_d7</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
||||
@@ -613,17 +613,16 @@ public class AbstractProjectTest {
|
||||
* </div>
|
||||
*/
|
||||
DomNodeList<DomNode> 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: "><img src=x onerror=alert(123)>
|
||||
// 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"));
|
||||
|
||||
@@ -177,7 +177,7 @@ public class NumberTest {
|
||||
input.reset(); // Remove the value that already in the <input>
|
||||
input.type(value); // Type value to <input>
|
||||
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();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
@@ -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';
|
||||
|
||||
@@ -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 === "<div/>") {
|
||||
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 = "<div class='error'>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.</div>";
|
||||
}
|
||||
Behaviour.applySubtree(target);
|
||||
onComplete: function({status, responseText}) {
|
||||
// TODO Add i18n support
|
||||
const errorMessage = `<div class="error">An internal error occurred during form field validation (HTTP ${status}). Please reload the page and if the problem persists, ask the administrator for help.</div>`;
|
||||
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 = "<div/>";
|
||||
if (!set) {
|
||||
updateValidationArea(this.targetElement, `<div/>`)
|
||||
}
|
||||
} else {
|
||||
this.targetElement.innerHTML = "<div class=error>" + message + "</div>";
|
||||
updateValidationArea(this.targetElement, `<div class="error">${message}</div>`);
|
||||
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 = "<div class=error>This value should be between " + min + " and " + max + "</div>";
|
||||
updateValidationArea(this.targetElement, `<div class="error">This value should be between ${min} and ${max}</div>`);
|
||||
set = true;
|
||||
} else {
|
||||
if (!set) this.targetElement.innerHTML = "<div/>"; // The value is valid
|
||||
if (!set) {
|
||||
updateValidationArea(this.targetElement, `<div/>`)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} else if ((min !== null && isInteger(min)) && (max === null || !isInteger(max))) { // There is only 'min' available
|
||||
|
||||
if (parseInt(min) > parseInt(this.value)) {
|
||||
this.targetElement.innerHTML = "<div class=error>This value should be larger than " + min + "</div>";
|
||||
updateValidationArea(this.targetElement, `<div class="error">This value should be larger than ${min}</div>`);
|
||||
set = true;
|
||||
} else {
|
||||
if (!set) this.targetElement.innerHTML = "<div/>";
|
||||
if (!set) {
|
||||
updateValidationArea(this.targetElement, `<div/>`)
|
||||
}
|
||||
}
|
||||
|
||||
} else if ((min === null || !isInteger(min)) && (max !== null && isInteger(max))) { // There is only 'max' available
|
||||
|
||||
if (parseInt(max) < parseInt(this.value)) {
|
||||
this.targetElement.innerHTML = "<div class=error>This value should be less than " + max + "</div>";
|
||||
updateValidationArea(this.targetElement, `<div class="error">This value should be less than ${max}</div>`);
|
||||
set = true;
|
||||
} else {
|
||||
if (!set) this.targetElement.innerHTML = "<div/>";
|
||||
if (!set) {
|
||||
updateValidationArea(this.targetElement, `<div/>`)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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 = `<div class="validation-error-area" />`;
|
||||
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 = '<a href="" onclick="document.getElementById(\'' + id
|
||||
+ '\').style.display=\'block\';return false">ERROR</a><div id="'
|
||||
+ id + '" style="display:none">' + rsp.responseText + '</div>';
|
||||
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 <input type=text> element that becomes a combobox, or the field itself.
|
||||
|
||||
Reference in new issue
Block a user