diff --git a/Jenkinsfile b/Jenkinsfile index c4fca9efa1fd..510172322fe5 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -9,128 +9,168 @@ def buildNumber = BUILD_NUMBER as int; if (buildNumber > 1) milestone(buildNumbe def failFast = false // Same memory sizing for both builds and ATH -def javaOpts = ["JAVA_OPTS=-Xmx1536m -Xms512m","MAVEN_OPTS=-Xmx1536m -Xms512m"] +def javaOpts = [ + 'JAVA_OPTS=-Xmx1536m -Xms512m', + 'MAVEN_OPTS=-Xmx1536m -Xms512m', +] properties([ - buildDiscarder(logRotator(numToKeepStr: '50', artifactNumToKeepStr: '3')), - disableConcurrentBuilds(abortPrevious: true) + buildDiscarder(logRotator(numToKeepStr: '50', artifactNumToKeepStr: '3')), + disableConcurrentBuilds(abortPrevious: true) ]) def buildTypes = ['Linux', 'Windows'] def jdks = [8, 11] def builds = [:] -for(i = 0; i < buildTypes.size(); i++) { -for(j = 0; j < jdks.size(); j++) { +for (i = 0; i < buildTypes.size(); i++) { + for (j = 0; j < jdks.size(); j++) { def buildType = buildTypes[i] def jdk = jdks[j] if (buildType == 'Windows' && jdk == 8) { - continue // unnecessary use of hardware + continue // unnecessary use of hardware } builds["${buildType}-jdk${jdk}"] = { - // see https://github.com/jenkins-infra/documentation/blob/master/ci.adoc#node-labels for information on what node types are available - String agentContainerLabel = jdk == 8 ? 'maven' : 'maven-11' - if (buildType == 'Windows') { - agentContainerLabel += '-windows' + // see https://github.com/jenkins-infra/documentation/blob/master/ci.adoc#node-labels for information on what node types are available + def agentContainerLabel = jdk == 8 ? 'maven' : 'maven-' + jdk + if (buildType == 'Windows') { + agentContainerLabel += '-windows' + } + node(agentContainerLabel) { + // First stage is actually checking out the source. Since we're using Multibranch + // currently, we can use "checkout scm". + stage('Checkout') { + checkout scm } - node(agentContainerLabel) { - // First stage is actually checking out the source. Since we're using Multibranch - // currently, we can use "checkout scm". - stage('Checkout') { - checkout scm - } - def changelistF = "${pwd tmp: true}/changelist" - def m2repo = "${pwd tmp: true}/m2repo" + def changelistF = "${pwd tmp: true}/changelist" + def m2repo = "${pwd tmp: true}/m2repo" - // Now run the actual build. - stage("${buildType} Build / Test") { - timeout(time: 300, unit: 'MINUTES') { - realtimeJUnit(healthScaleFactor: 20.0, testResults: '*/target/surefire-reports/*.xml,war/junit.xml') { - // -Dmaven.repo.local=… tells Maven to create a subdir in the temporary directory for the local Maven repository - // -ntp requires Maven >= 3.6.1 - def mvnCmd = "mvn -Pdebug -Pjapicmp -U -Dset.changelist help:evaluate -Dexpression=changelist -Doutput=$changelistF clean install -Dmaven.test.failure.ignore -V -B -ntp -Dmaven.repo.local=$m2repo -Dspotbugs.failOnError=false -Dcheckstyle.failOnViolation=false -e" - infra.runWithMaven(mvnCmd, jdk.toString(), javaOpts, true) - - if(isUnix()) { - sh 'git add . && git diff --exit-code HEAD' - } - } - } - } + // Now run the actual build. + stage("${buildType} Build / Test") { + timeout(time: 5, unit: 'HOURS') { + realtimeJUnit(healthScaleFactor: 20.0, testResults: '*/target/surefire-reports/*.xml,war/junit.xml') { + def mavenOptions = [ + '-Pdebug', + '-Pjapicmp', + '--update-snapshots', + "-Dmaven.repo.local=$m2repo", + '-Dmaven.test.failure.ignore', + '-Dspotbugs.failOnError=false', + '-Dcheckstyle.failOnViolation=false', + '-Dset.changelist', + 'help:evaluate', + '-Dexpression=changelist', + "-Doutput=$changelistF", + 'clean', + 'install', + ] + infra.runMaven(mavenOptions, jdk.toString(), javaOpts, null, true) + if (isUnix()) { + sh 'git add . && git diff --exit-code HEAD' + } + } + } + } - // 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' - } - if (! fileExists('test/target/surefire-reports/TEST-jenkins.Junit4TestsRanTest.xml') ) { - error 'junit 4 tests are no longer being run for the test package' - } // cli has been migrated to junit 5 - if (failFast && currentBuild.result == 'UNSTABLE') { - error 'There were test failures; halting early' - } - if (buildType == 'Linux' && jdk == jdks[0]) { - def folders = env.JOB_NAME.split('/') - if (folders.length > 1) { - discoverGitReferenceBuild(scm: folders[1]) - } + // 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' + } + if (!fileExists('test/target/surefire-reports/TEST-jenkins.Junit4TestsRanTest.xml')) { + error 'JUnit 4 tests are no longer being run for the test package' + } + // cli has been migrated to JUnit 5 + if (failFast && currentBuild.result == 'UNSTABLE') { + error 'There were test failures; halting early' + } + if (buildType == 'Linux' && jdk == jdks[0]) { + def folders = env.JOB_NAME.split('/') + if (folders.length > 1) { + discoverGitReferenceBuild(scm: folders[1]) + } - echo "Recording static analysis results for '${buildType}'" - recordIssues enabledForFailure: true, - tools: [java(), javaDoc()], - filters: [excludeFile('.*Assert.java')], - sourceCodeEncoding: 'UTF-8', - skipBlames: true, - trendChartType: 'TOOLS_ONLY' - recordIssues([tool: spotBugs(pattern: '**/target/spotbugsXml.xml'), - sourceCodeEncoding: 'UTF-8', - skipBlames: true, - trendChartType: 'TOOLS_ONLY', - qualityGates: [[threshold: 1, type: 'NEW', unstable: true]]]) - recordIssues([tool: checkStyle(pattern: '**/target/checkstyle-result.xml'), - sourceCodeEncoding: 'UTF-8', - skipBlames: true, - trendChartType: 'TOOLS_ONLY', - qualityGates: [[threshold: 1, type: 'TOTAL', unstable: true]]]) - if (failFast && currentBuild.result == 'UNSTABLE') { - error 'Static analysis quality gates not passed; halting early' - } + echo "Recording static analysis results for '${buildType}'" + recordIssues( + enabledForFailure: true, + tools: [java(), javaDoc()], + filters: [excludeFile('.*Assert.java')], + sourceCodeEncoding: 'UTF-8', + skipBlames: true, + trendChartType: 'TOOLS_ONLY' + ) + recordIssues([tool: spotBugs(pattern: '**/target/spotbugsXml.xml'), + sourceCodeEncoding: 'UTF-8', + skipBlames: true, + trendChartType: 'TOOLS_ONLY', + qualityGates: [ + [threshold: 1, type: 'NEW', unstable: true], + ]]) + recordIssues([tool: checkStyle(pattern: '**/target/checkstyle-result.xml'), + sourceCodeEncoding: 'UTF-8', + skipBlames: true, + trendChartType: 'TOOLS_ONLY', + qualityGates: [ + [threshold: 1, type: 'TOTAL', unstable: true], + ]]) + if (failFast && currentBuild.result == 'UNSTABLE') { + error 'Static analysis quality gates not passed; halting early' + } - def changelist = readFile(changelistF) - dir(m2repo) { - archiveArtifacts artifacts: "**/*$changelist/*$changelist*", - excludes: '**/*.lastUpdated,**/jenkins-test*/', - allowEmptyArchive: true, // in case we forgot to reincrementalify - fingerprint: true - } - publishHTML([allowMissing: true, alwaysLinkToLastBuild: false, includes: 'japicmp.html', keepAll: false, reportDir: 'core/target/japicmp', reportFiles: 'japicmp.html', reportName: 'API compatibility', reportTitles: 'japicmp report']) - } - } + def changelist = readFile(changelistF) + dir(m2repo) { + archiveArtifacts( + artifacts: "**/*$changelist/*$changelist*", + excludes: '**/*.lastUpdated,**/jenkins-test*/', + allowEmptyArchive: true, // in case we forgot to reincrementalify + fingerprint: true + ) + } + publishHTML([ + allowMissing: true, + alwaysLinkToLastBuild: false, + includes: 'japicmp.html', + keepAll: false, + reportDir: 'core/target/japicmp', + reportFiles: 'japicmp.html', + reportName: 'API compatibility', + reportTitles: 'japicmp report', + ]) + } } + } } -}} + } +} builds.ath = { - node("docker-highmem") { - // Just to be safe - deleteDir() - def fileUri - def metadataPath - dir("sources") { - checkout scm - def mvnCmd = 'mvn --batch-mode --show-version -ntp -Pquick-build -am -pl war package -Dmaven.repo.local=$WORKSPACE_TMP/m2repo' - infra.runWithMaven(mvnCmd, "11", javaOpts, true) - dir("war/target") { - fileUri = "file://" + pwd() + "/jenkins.war" - } - metadataPath = pwd() + "/essentials.yml" - } - dir("ath") { - runATH jenkins: fileUri, metadataFile: metadataPath - } + node('docker-highmem') { + // Just to be safe + deleteDir() + def fileUri + def metadataPath + dir('sources') { + checkout scm + def mavenOptions = [ + '-Pquick-build', + '-Dmaven.repo.local=$WORKSPACE_TMP/m2repo', + '-am', + '-pl', + 'war', + 'package', + ] + infra.runMaven(mavenOptions, '11', javaOpts, null, true) + dir('war/target') { + fileUri = 'file://' + pwd() + '/jenkins.war' + } + metadataPath = pwd() + '/essentials.yml' + } + dir('ath') { + runATH jenkins: fileUri, metadataFile: metadataPath } + } } builds.failFast = failFast diff --git a/bom/pom.xml b/bom/pom.xml index 305fcfeda881..e6f01226dfad 100644 --- a/bom/pom.xml +++ b/bom/pom.xml @@ -41,7 +41,7 @@ THE SOFTWARE. 9.2 1.7.32 - 1612.v2a13b906bf3a + 1627.v5c244c19f85f 2.4.21 diff --git a/core/src/main/java/hudson/WebAppMain.java b/core/src/main/java/hudson/WebAppMain.java index b0596a66374d..f22fb7b08e7a 100644 --- a/core/src/main/java/hudson/WebAppMain.java +++ b/core/src/main/java/hudson/WebAppMain.java @@ -64,9 +64,6 @@ import java.util.logging.Level; import java.util.logging.LogRecord; import java.util.logging.Logger; -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; @@ -337,24 +334,7 @@ public FileAndDescription(File file,String description) { * @return the File alongside with some description to help the user troubleshoot issues */ public FileAndDescription getHomeDir(ServletContextEvent event) { - // check JNDI for the home directory first - for (String name : HOME_NAMES) { - try { - InitialContext iniCtxt = new InitialContext(); - Context env = (Context) iniCtxt.lookup("java:comp/env"); - String value = (String) env.lookup(name); - if(value!=null && value.trim().length()>0) - return new FileAndDescription(new File(value.trim()),"JNDI/java:comp/env/"+name); - // look at one more place. See issue JENKINS-1314 - value = (String) iniCtxt.lookup(name); - if(value!=null && value.trim().length()>0) - return new FileAndDescription(new File(value.trim()),"JNDI/"+name); - } catch (NamingException e) { - // ignore - } - } - - // next the system property + // check the system property for the home directory first for (String name : HOME_NAMES) { String sysProp = SystemProperties.getString(name); if(sysProp!=null) diff --git a/core/src/main/java/hudson/model/AbstractBuild.java b/core/src/main/java/hudson/model/AbstractBuild.java index add476c3cea7..07e965821e4f 100644 --- a/core/src/main/java/hudson/model/AbstractBuild.java +++ b/core/src/main/java/hudson/model/AbstractBuild.java @@ -693,7 +693,7 @@ public void defaultCheckout() throws IOException, InterruptedException { * itself run successfully) * Return a non-null value to abort the build right there with the specified result code. */ - protected abstract Result doRun(BuildListener listener) throws Exception, RunnerAbortedException; + protected abstract Result doRun(BuildListener listener) throws Exception; /** * @see #post(BuildListener) diff --git a/core/src/main/java/hudson/model/Item.java b/core/src/main/java/hudson/model/Item.java index 445c83998482..d9ba493dc02b 100644 --- a/core/src/main/java/hudson/model/Item.java +++ b/core/src/main/java/hudson/model/Item.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.Nullable; import hudson.Functions; import hudson.Util; import hudson.search.SearchableModelObject; @@ -39,7 +40,6 @@ import jenkins.model.Jenkins; import jenkins.util.SystemProperties; import jenkins.util.io.OnMaster; -import jline.internal.Nullable; import org.kohsuke.stapler.StaplerRequest; /** diff --git a/core/src/main/java/hudson/model/ManagementLink.java b/core/src/main/java/hudson/model/ManagementLink.java index 86a8cd6195ec..99480dd4adb7 100644 --- a/core/src/main/java/hudson/model/ManagementLink.java +++ b/core/src/main/java/hudson/model/ManagementLink.java @@ -203,7 +203,7 @@ public enum Category { */ UNCATEGORIZED(Messages._ManagementLink_Category_UNCATEGORIZED()); - private Localizable label; + private final Localizable label; Category(Localizable label) { this.label = label; diff --git a/core/src/main/java/hudson/model/Run.java b/core/src/main/java/hudson/model/Run.java index 33673abfcdc3..acb4455cb3c3 100644 --- a/core/src/main/java/hudson/model/Run.java +++ b/core/src/main/java/hudson/model/Run.java @@ -1522,6 +1522,7 @@ public Collection getBuildFingerprints() { * * @since 1.349 */ + @SuppressFBWarnings(value = "RV_RETURN_VALUE_IGNORED", justification = "method signature does not permit plumbing through the return value") public void writeLogTo(long offset, @NonNull XMLOutput out) throws IOException { long start = offset; if (offset > 0) { @@ -1782,7 +1783,7 @@ private synchronized void allDone() { * @throws Exception * exception will be recorded and the build will be considered a failure. */ - public abstract @NonNull Result run(@NonNull BuildListener listener ) throws Exception, RunnerAbortedException; + public abstract @NonNull Result run(@NonNull BuildListener listener ) throws Exception; /** * Performs the post-build action. diff --git a/core/src/main/java/hudson/model/queue/BackFiller.java b/core/src/main/java/hudson/model/queue/BackFiller.java deleted file mode 100644 index ec59903ea51b..000000000000 --- a/core/src/main/java/hudson/model/queue/BackFiller.java +++ /dev/null @@ -1,209 +0,0 @@ -package hudson.model.queue; - -import hudson.Extension; -import hudson.model.Computer; -import hudson.model.Executor; -import hudson.model.InvisibleAction; -import hudson.model.Queue.BuildableItem; -import hudson.model.queue.MappingWorksheet.ExecutorChunk; -import hudson.model.queue.MappingWorksheet.ExecutorSlot; -import hudson.model.queue.MappingWorksheet.Mapping; -import hudson.model.queue.MappingWorksheet.WorkChunk; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.TimeUnit; -import java.util.stream.StreamSupport; -import jenkins.model.Jenkins; -import jenkins.util.SystemProperties; - -/** - * Experimental. - * - * @author Kohsuke Kawaguchi - */ -public class BackFiller extends LoadPredictor { - private boolean recursion = false; - - @Override - public Iterable predict(MappingWorksheet plan, Computer computer, long start, long end) { - TimeRange timeRange = new TimeRange(start, end - start); - List loads = new ArrayList<>(); - - for (BuildableItem bi : Jenkins.get().getQueue().getBuildableItems()) { - TentativePlan tp = bi.getAction(TentativePlan.class); - if (tp==null) {// do this even for bi==plan.item ensures that we have FIFO semantics in tentative plans. - tp = makeTentativePlan(bi); - if (tp==null) continue; // no viable plan. - } - - if (tp.isStale()) { - // if the tentative plan is stale, just keep on pushing it to the current time - // (if we recreate the plan, it'll be put at the end of the queue, whereas this job - // should actually get priority over others) - tp.range.shiftTo(System.currentTimeMillis()); - } - - // don't let its own tentative plan count when considering a scheduling for a job - if (plan.item==bi) continue; - - - // no overlap in the time span, meaning this plan is for a distant future - if (!timeRange.overlapsWith(tp.range)) continue; - - // if this tentative plan has no baring on this computer, that's ignorable - Integer i = tp.footprint.get(computer); - if (i==null) continue; - - return Collections.singleton(tp.range.toFutureLoad(i)); - } - - return loads; - } - - private static final class PseudoExecutorSlot extends ExecutorSlot { - private Executor executor; - - private PseudoExecutorSlot(Executor executor) { - this.executor = executor; - } - - @Override - public Executor getExecutor() { - return executor; - } - - @Override - public boolean isAvailable() { - return true; - } - - // this slot isn't executable - @Override - protected void set(WorkUnit p) { - throw new UnsupportedOperationException(); - } - } - - private TentativePlan makeTentativePlan(BuildableItem bi) { - if (recursion) return null; - recursion = true; - try { - // pretend for now that all executors are available and decide some assignment that's executable. - List slots = new ArrayList<>(); - for (Computer c : Jenkins.get().getComputers()) { - if (c.isOffline()) continue; - for (Executor e : c.getExecutors()) { - slots.add(new PseudoExecutorSlot(e)); - } - } - - // also ignore all load predictions as we just want to figure out some executable assignment - // and we are not trying to figure out if this task is executable right now. - MappingWorksheet worksheet = new MappingWorksheet(bi, slots, Collections.emptyList()); - Mapping m = Jenkins.get().getQueue().getLoadBalancer().map(bi.task, worksheet); - if (m==null) return null; - - // figure out how many executors we need on each computer? - Map footprint = new HashMap<>(); - for (Map.Entry e : m.toMap().entrySet()) { - Computer c = e.getValue().computer; - Integer v = footprint.get(c); - if (v==null) v = 0; - v += e.getKey().size(); - footprint.put(c,v); - } - - // the point of a tentative plan is to displace other jobs to create a point in time - // where this task can start executing. An incorrectly estimated duration is not - // a problem in this regard, as we just need enough idle executors in the right moment. - // The downside of guessing the duration wrong is that we can end up creating tentative plans - // afterward that may be incorrect, but those plans will be rebuilt. - long d = bi.task.getEstimatedDuration(); - if (d<=0) d = TimeUnit.MINUTES.toMillis(5); - - TimeRange slot = new TimeRange(System.currentTimeMillis(), d); - - // now, based on the real predicted loads, figure out the approximation of when we can - // start executing this guy. - for (Map.Entry e : footprint.entrySet()) { - Computer computer = e.getKey(); - Timeline timeline = new Timeline(); - for (LoadPredictor lp : LoadPredictor.all()) { - StreamSupport.stream(lp.predict(worksheet, computer, slot.start, slot.end).spliterator(), false).limit(100).forEach(fl -> - timeline.insert(fl.startTime, fl.startTime + fl.duration, fl.numExecutors)); - } - - Long x = timeline.fit(slot.start, slot.duration, computer.countExecutors()-e.getValue()); - // if no suitable range was found in [slot.start,slot.end), slot.end would be a good approximation - if (x==null) x = slot.end; - slot = slot.shiftTo(x); - } - - TentativePlan tp = new TentativePlan(footprint, slot); - bi.addAction(tp); - return tp; - } finally { - recursion = false; - } - } - - /** - * Represents a duration in time. - */ - private static final class TimeRange { - public final long start; - public final long duration; - public final long end; - - private TimeRange(long start, long duration) { - this.start = start; - this.duration = duration; - this.end = start+duration; - } - - public boolean overlapsWith(TimeRange that) { - return (this.start <= that.start && that.start <=this.end) - || (that.start <= this.start && this.start <=that.end); - } - - public FutureLoad toFutureLoad(int size) { - return new FutureLoad(start,duration,size); - } - - public TimeRange shiftTo(long newStart) { - if (newStart==start) return this; - return new TimeRange(newStart,duration); - } - } - - public static final class TentativePlan extends InvisibleAction { - private final Map footprint; - public final TimeRange range; - - public TentativePlan(Map footprint, TimeRange range) { - this.footprint = footprint; - this.range = range; - } - - public Object writeReplace() {// don't persist - return null; - } - - public boolean isStale() { - return range.end < System.currentTimeMillis(); - } - } - - /** - * Once this feature stabilizes, move it to the heavyjob plugin - */ - @Extension - public static BackFiller newInstance() { - if (SystemProperties.getBoolean(BackFiller.class.getName())) - return new BackFiller(); - return null; - } -} diff --git a/core/src/main/java/hudson/security/HudsonPrivateSecurityRealm.java b/core/src/main/java/hudson/security/HudsonPrivateSecurityRealm.java index 30885c48c908..4696d7c63e1d 100644 --- a/core/src/main/java/hudson/security/HudsonPrivateSecurityRealm.java +++ b/core/src/main/java/hudson/security/HudsonPrivateSecurityRealm.java @@ -401,6 +401,7 @@ private User createAccount(StaplerRequest req, StaplerResponse rsp, boolean vali * @return a {@link SignupInfo#SignupInfo(StaplerRequest) SignupInfo from given request}, with {@link * SignupInfo#errors} containing errors (keyed by field name), if any of the supported fields are invalid */ + @SuppressFBWarnings(value = "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", justification = "written to by Stapler") private SignupInfo validateAccountCreationForm(StaplerRequest req, boolean validateCaptcha) { // form field validation // this pattern needs to be generalized and moved to stapler diff --git a/core/src/main/java/hudson/tasks/Fingerprinter.java b/core/src/main/java/hudson/tasks/Fingerprinter.java index e3dc7fc355cf..fb2fa9916eb4 100644 --- a/core/src/main/java/hudson/tasks/Fingerprinter.java +++ b/core/src/main/java/hudson/tasks/Fingerprinter.java @@ -323,10 +323,6 @@ public List invoke(File baseDir, VirtualChannel channel) throws IOExcept private void record(Run build, FilePath ws, TaskListener listener, Map record, final String targets) throws IOException, InterruptedException { for (Record r : ws.act(new FindRecords(targets, excludes, defaultExcludes, caseSensitive, build.getTimeInMillis()))) { Fingerprint fp = r.addRecord(build); - if(fp==null) { - listener.error(Messages.Fingerprinter_FailedFor(r.relativePath)); - continue; - } fp.addFor(build); record.put(r.relativePath,fp.getHashString()); } diff --git a/core/src/main/java/hudson/triggers/SCMTrigger.java b/core/src/main/java/hudson/triggers/SCMTrigger.java index c6339c225140..9d100094fef2 100644 --- a/core/src/main/java/hudson/triggers/SCMTrigger.java +++ b/core/src/main/java/hudson/triggers/SCMTrigger.java @@ -479,6 +479,7 @@ public AnnotatedLargeText getPollingLogText() { /** * Used from {@code polling.jelly} to write annotated polling log to the given output. */ + @SuppressFBWarnings(value = "RV_RETURN_VALUE_IGNORED", justification = "method signature does not permit plumbing through the return value") public void writePollingLogTo(long offset, XMLOutput out) throws IOException { // TODO: resurrect compressed log file support getPollingLogText().writeHtmlTo(offset, out.asWriter()); @@ -537,6 +538,7 @@ public String getLog() throws IOException { * Writes the annotated log to the given output. * @since 1.350 */ + @SuppressFBWarnings(value = "RV_RETURN_VALUE_IGNORED", justification = "method signature does not permit plumbing through the return value") public void writeLogTo(XMLOutput out) throws IOException { new AnnotatedLargeText<>(getLogFile(), Charset.defaultCharset(), true, this).writeHtmlTo(0,out.asWriter()); } diff --git a/core/src/main/java/hudson/triggers/Trigger.java b/core/src/main/java/hudson/triggers/Trigger.java index e54b436480f3..5126c8925da4 100644 --- a/core/src/main/java/hudson/triggers/Trigger.java +++ b/core/src/main/java/hudson/triggers/Trigger.java @@ -331,6 +331,7 @@ public void run(AbstractProject p) { * * @deprecated Use {@link jenkins.util.Timer#get()} instead. */ + @SuppressFBWarnings(value = "MS_CANNOT_BE_FINAL", justification = "for backward compatibility") @Deprecated public static @CheckForNull Timer timer; diff --git a/core/src/main/java/hudson/util/CharSpool.java b/core/src/main/java/hudson/util/CharSpool.java deleted file mode 100644 index 07d05ee23b0c..000000000000 --- a/core/src/main/java/hudson/util/CharSpool.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * The MIT License - * - * Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package hudson.util; - -import java.io.IOException; -import java.io.Writer; -import java.util.ArrayList; -import java.util.List; - -/** - * {@link Writer} that spools the output and writes to another {@link Writer} later. - * - * @author Kohsuke Kawaguchi - * @deprecated since 2008-05-28. moved to stapler - */ -@Deprecated -public final class CharSpool extends Writer { - private List buf; - - private char[] last = new char[1024]; - private int pos; - - @Override - public void write(char[] cbuf, int off, int len) { - while(len>0) { - int sz = Math.min(last.length-pos,len); - System.arraycopy(cbuf,off,last,pos,sz); - len -= sz; - off += sz; - pos += sz; - renew(); - } - } - - private void renew() { - if(pos(); - buf.add(last); - last = new char[1024]; - pos = 0; - } - - @Override - public void write(int c) { - renew(); - last[pos++] = (char)c; - } - - @Override - public void flush() { - // noop - } - - @Override - public void close() { - // noop - } - - public void writeTo(Writer w) throws IOException { - if(buf!=null) { - for (char[] cb : buf) { - w.write(cb); - } - } - w.write(last,0,pos); - } -} diff --git a/core/src/main/java/hudson/util/LineEndNormalizingWriter.java b/core/src/main/java/hudson/util/LineEndNormalizingWriter.java deleted file mode 100644 index ffa182e2630e..000000000000 --- a/core/src/main/java/hudson/util/LineEndNormalizingWriter.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * The MIT License - * - * Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package hudson.util; - -import java.io.FilterWriter; -import java.io.IOException; -import java.io.Writer; - -/** - * Finds the lone LF and converts that to CR+LF. - * - *

- * Internet Explorer's {@code XmlHttpRequest.responseText} seems to - * normalize the line end, and if we only send LF without CR, it will - * not recognize that as a new line. To work around this problem, - * we use this filter to always convert LF to CR+LF. - * - * @author Kohsuke Kawaguchi - * @deprecated since 2008-05-28. moved to stapler - */ -@Deprecated -public class LineEndNormalizingWriter extends FilterWriter { - - private boolean seenCR; - - public LineEndNormalizingWriter(Writer out) { - super(out); - } - - @Override - public void write(char[] cbuf) throws IOException { - write(cbuf, 0, cbuf.length); - } - - @Override - public void write(String str) throws IOException { - write(str,0,str.length()); - } - - @Override - public void write(int c) throws IOException { - if(!seenCR && c==LF) - super.write("\r\n"); - else - super.write(c); - seenCR = c == CR; - } - - @Override - public void write(char[] cbuf, int off, int len) throws IOException { - int end = off+len; - int writeBegin = off; - - for( int i=off; i extends Serializable { } - /* package */ static Boolean vetoersExist; + /* package */ static volatile Boolean vetoersExist; /** * Gets the {@link ProcessTree} of the current system diff --git a/core/src/main/java/jenkins/agents/WebSocketAgents.java b/core/src/main/java/jenkins/agents/WebSocketAgents.java index d69080932712..4c4451b974fe 100644 --- a/core/src/main/java/jenkins/agents/WebSocketAgents.java +++ b/core/src/main/java/jenkins/agents/WebSocketAgents.java @@ -24,6 +24,7 @@ package jenkins.agents; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import hudson.Extension; import hudson.ExtensionList; import hudson.model.Computer; @@ -114,6 +115,7 @@ private static class Session extends WebSocketSession { this.remoteCapability = remoteCapability; } + @SuppressFBWarnings(value = "RV_RETURN_VALUE_IGNORED_BAD_PRACTICE", justification = "method signature does not permit plumbing through the return value") @Override protected void opened() { Computer.threadPoolForRemoting.submit(() -> { diff --git a/core/src/main/java/jenkins/model/Jenkins.java b/core/src/main/java/jenkins/model/Jenkins.java index dedcba153839..b6eccb039b37 100644 --- a/core/src/main/java/jenkins/model/Jenkins.java +++ b/core/src/main/java/jenkins/model/Jenkins.java @@ -5252,6 +5252,7 @@ protected Future _connect(boolean forceReconnect) { /** * Live view of recent {@link LogRecord}s produced by Jenkins. */ + @SuppressFBWarnings(value = "MS_CANNOT_BE_FINAL", justification = "cannot be made immutable without breaking compatibility") public static List logRecords = Collections.emptyList(); // initialized to dummy value to avoid NPE /** @@ -5333,6 +5334,7 @@ private static void computeVersion(ServletContext context) { /** * Version number of this Jenkins. */ + @SuppressFBWarnings(value = "MS_CANNOT_BE_FINAL", justification = "cannot be made immutable without breaking compatibility") public static String VERSION = UNCOMPUTED_VERSION; @Restricted(NoExternalUse.class) @@ -5407,6 +5409,7 @@ public boolean shouldShowStackTrace() { * We used to use {@link #VERSION_HASH}, but making this session local allows us to * reuse the same {@link #RESOURCE_PATH} for static resources in plugins. */ + @SuppressFBWarnings(value = "MS_CANNOT_BE_FINAL", justification = "cannot be made immutable without breaking compatibility") public static String SESSION_HASH; /** @@ -5416,6 +5419,7 @@ public boolean shouldShowStackTrace() { *

* Value computed in {@link WebAppMain}. */ + @SuppressFBWarnings(value = "MS_CANNOT_BE_FINAL", justification = "cannot be made immutable without breaking compatibility") public static String RESOURCE_PATH = ""; /** @@ -5425,6 +5429,7 @@ public boolean shouldShowStackTrace() { *

* Value computed in {@link WebAppMain}. */ + @SuppressFBWarnings(value = "MS_CANNOT_BE_FINAL", justification = "cannot be made immutable without breaking compatibility") public static String VIEW_RESOURCE_PATH = "/resources/TBD"; @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") diff --git a/core/src/main/java/jenkins/security/MasterToSlaveCallable.java b/core/src/main/java/jenkins/security/MasterToSlaveCallable.java index 456719c9fc8e..6751533a0197 100644 --- a/core/src/main/java/jenkins/security/MasterToSlaveCallable.java +++ b/core/src/main/java/jenkins/security/MasterToSlaveCallable.java @@ -30,7 +30,7 @@ public void checkRoles(RoleChecker checker) throws SecurityException { public Channel getChannelOrFail() throws ChannelClosedException { final Channel ch = Channel.current(); if (ch == null) { - throw new ChannelClosedException(ch, new IllegalStateException("No channel associated with the thread")); + throw new ChannelClosedException((Channel) null, new IllegalStateException("No channel associated with the thread")); } return ch; } diff --git a/core/src/main/java/jenkins/security/apitoken/LegacyApiTokenAdministrativeMonitor.java b/core/src/main/java/jenkins/security/apitoken/LegacyApiTokenAdministrativeMonitor.java index 2e3005ddead4..18827c94fdbd 100644 --- a/core/src/main/java/jenkins/security/apitoken/LegacyApiTokenAdministrativeMonitor.java +++ b/core/src/main/java/jenkins/security/apitoken/LegacyApiTokenAdministrativeMonitor.java @@ -25,6 +25,7 @@ import edu.umd.cs.findbugs.annotations.NonNull; import edu.umd.cs.findbugs.annotations.Nullable; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import hudson.Extension; import hudson.model.AdministrativeMonitor; import hudson.model.User; @@ -160,6 +161,7 @@ public boolean hasMoreRecentlyUsedToken(@NonNull User user, ApiTokenProperty.Tok } @RequirePOST + @SuppressFBWarnings(value = "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", justification = "written to by Stapler") public HttpResponse doRevokeAllSelected(@JsonBody RevokeAllSelectedModel content) throws IOException { for (RevokeAllSelectedUserAndUuid value : content.values) { if (value.userId == null) { diff --git a/core/src/main/java/jenkins/slaves/restarter/JnlpSlaveRestarterInstaller.java b/core/src/main/java/jenkins/slaves/restarter/JnlpSlaveRestarterInstaller.java index 0fbdc4b5e66b..2ab3534d7c20 100644 --- a/core/src/main/java/jenkins/slaves/restarter/JnlpSlaveRestarterInstaller.java +++ b/core/src/main/java/jenkins/slaves/restarter/JnlpSlaveRestarterInstaller.java @@ -3,6 +3,7 @@ import static java.util.logging.Level.FINE; import static java.util.logging.Level.SEVERE; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import hudson.Extension; import hudson.Functions; import hudson.model.Computer; @@ -31,6 +32,7 @@ */ @Extension public class JnlpSlaveRestarterInstaller extends ComputerListener implements Serializable { + @SuppressFBWarnings(value = "RV_RETURN_VALUE_IGNORED_BAD_PRACTICE", justification = "method signature does not permit plumbing through the return value") @Override public void onOnline(final Computer c, final TaskListener listener) throws IOException, InterruptedException { Computer.threadPoolForRemoting.submit(new Install(c, listener)); diff --git a/core/src/main/java/jenkins/slaves/restarter/UnixSlaveRestarter.java b/core/src/main/java/jenkins/slaves/restarter/UnixSlaveRestarter.java index 8b7aeeefbdf5..4fcf557798a5 100644 --- a/core/src/main/java/jenkins/slaves/restarter/UnixSlaveRestarter.java +++ b/core/src/main/java/jenkins/slaves/restarter/UnixSlaveRestarter.java @@ -6,14 +6,13 @@ import static hudson.util.jna.GNUCLibrary.LIBC; import static java.util.logging.Level.FINE; -import com.sun.jna.Memory; import com.sun.jna.Native; -import com.sun.jna.NativeLong; import com.sun.jna.StringArray; import hudson.Extension; import java.io.File; import java.io.IOException; -import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.InvalidPathException; import java.util.List; import java.util.logging.Logger; import jenkins.util.JavaVMArguments; @@ -73,11 +72,8 @@ private static String getCurrentExecutable() { File exe = new File(name); if (exe.exists()) { try { - String path = resolveSymlink(exe); - if (path != null) { - return path; - } - } catch (IOException e) { + return Files.readSymbolicLink(exe.toPath()).toString(); + } catch (IOException | InvalidPathException | UnsupportedOperationException e) { LOGGER.log(FINE, "Failed to resolve symlink " + exe, e); } return name; @@ -87,33 +83,6 @@ private static String getCurrentExecutable() { return System.getProperty("java.home") + "/bin/java"; } - private static String resolveSymlink(File link) throws IOException { - String filename = link.getAbsolutePath(); - - for (int sz = 512; sz < 65536; sz *= 2) { - Memory m = new Memory(sz); - int r = LIBC.readlink(filename, m, new NativeLong(sz)); - if (r < 0) { - int err = Native.getLastError(); - if (err == 22 /*EINVAL --- but is this really portable?*/) { - return null; // this means it's not a symlink - } - throw new IOException( - "Failed to readlink " + link + " error=" + err + " " + LIBC.strerror(err)); - } - - if (r == sz) { - continue; // buffer too small - } - - byte[] buf = new byte[r]; - m.read(0, buf, 0, r); - return new String(buf, StandardCharsets.UTF_8); - } - - throw new IOException("Failed to readlink " + link); - } - private static final Logger LOGGER = Logger.getLogger(UnixSlaveRestarter.class.getName()); private static final long serialVersionUID = 1L; diff --git a/core/src/main/java/jenkins/util/AtmostOneTaskExecutor.java b/core/src/main/java/jenkins/util/AtmostOneTaskExecutor.java index 89b67e952f9e..f28f747e126f 100644 --- a/core/src/main/java/jenkins/util/AtmostOneTaskExecutor.java +++ b/core/src/main/java/jenkins/util/AtmostOneTaskExecutor.java @@ -1,5 +1,6 @@ package jenkins.util; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import hudson.remoting.AtmostOneThreadExecutor; import hudson.security.ACL; import hudson.util.DaemonThreadFactory; @@ -92,6 +93,7 @@ public synchronized Future submit() { * but {@link #inprogress} is null (meaning none is executing right now), * get one going. */ + @SuppressFBWarnings(value = "RV_RETURN_VALUE_IGNORED_BAD_PRACTICE", justification = "method signature does not permit plumbing through the return value") private synchronized void maybeRun() { if (inprogress==null && pending!=null) { base.submit(new Callable() { diff --git a/core/src/main/java/jenkins/util/JSONSignatureValidator.java b/core/src/main/java/jenkins/util/JSONSignatureValidator.java index a6bd08c91a42..54fc929b54ef 100644 --- a/core/src/main/java/jenkins/util/JSONSignatureValidator.java +++ b/core/src/main/java/jenkins/util/JSONSignatureValidator.java @@ -245,6 +245,7 @@ private boolean digestMatches(byte[] digest, String providedDigest) { } + @SuppressFBWarnings(value = {"NP_LOAD_OF_KNOWN_NULL_VALUE", "RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE"}, justification = "https://github.com/spotbugs/spotbugs/issues/756") protected Set loadTrustAnchors(CertificateFactory cf) throws IOException { // if we trust default root CAs, we end up trusting anyone who has a valid certificate, // which isn't useful at all diff --git a/core/src/main/java/org/jenkins/ui/icon/WeatherIcon.java b/core/src/main/java/org/jenkins/ui/icon/WeatherIcon.java index de1c22c77c57..d15c503389cd 100644 --- a/core/src/main/java/org/jenkins/ui/icon/WeatherIcon.java +++ b/core/src/main/java/org/jenkins/ui/icon/WeatherIcon.java @@ -39,7 +39,7 @@ enum Status { PARTLY_CLOUDY("build-status/weather-sprite.svg#weather-partly-cloudy"), SUNNY("build-status/weather-sprite.svg#weather-sunny"); - private String url; + private final String url; Status(String url) { this.url = url; diff --git a/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index.groovy b/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index.groovy index 76a5d72b74de..5edef210b2ab 100644 --- a/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index.groovy +++ b/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index.groovy @@ -3,16 +3,11 @@ import hudson.model.EnvironmentContributor import hudson.scm.SCM def st = namespace("jelly:stapler") +def l = namespace(lib.LayoutTagLib) -st.contentType(value: "text/html;charset=UTF-8") - -html { - head { - title(_("Available Environmental Variables")) - style(type:"text/css", "dt { font-weight: bold; }") - } - body { - p "The following variables are available to shell scripts" +l.layout(title: _("Available Environmental Variables"), type: 'one-column') { + l.main_panel { + p _("blurb") dl { EnvironmentContributor.all().each { e -> st.include(it:e, page:"buildEnv", optional:true) } diff --git a/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index.properties b/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index.properties new file mode 100644 index 000000000000..24a187866d49 --- /dev/null +++ b/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index.properties @@ -0,0 +1 @@ +blurb=The following variables are available to shell and batch build steps: diff --git a/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_de.properties b/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_de.properties index c01a5bb92d84..f85cb0145b42 100644 --- a/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_de.properties +++ b/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_de.properties @@ -1,2 +1 @@ -Available\ Environmental\ Variables=Verf\u00FCgbare Umgebungsvariablen -The\ following\ variables\ are\ available\ to\ shell\ scripts=Die folgenden Variablen sind innerhalb von Shell-Skripten sichtbar: +Available\ Environment\ Variables=Verf\u00FCgbare Umgebungsvariablen diff --git a/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_fr.properties b/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_fr.properties index f937abbc85d2..a69313856283 100644 --- a/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_fr.properties +++ b/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_fr.properties @@ -1,2 +1 @@ -Available\ Environmental\ Variables=Variables d'environnement disponibles -The\ following\ variables\ are\ available\ to\ shell\ scripts=Les variables suivantes sont mises \u00E0 disposition des scripts shell +Available\ Environment\ Variables=Variables d'environnement disponibles diff --git a/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_it.properties b/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_it.properties index ff52a78b8a3c..b1f37e34927a 100644 --- a/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_it.properties +++ b/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_it.properties @@ -22,5 +22,3 @@ # THE SOFTWARE. Available\ Environmental\ Variables=Variabili d''ambiente disponibili -The\ following\ variables\ are\ available\ to\ shell\ scripts=Per gli script \ - shell sono disponibili le seguenti variabili: diff --git a/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_ja.properties b/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_ja.properties index 785aa635b7e7..f4433bf8cebb 100644 --- a/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_ja.properties +++ b/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_ja.properties @@ -1,2 +1 @@ -Available\ Environmental\ Variables=\u5229\u7528\u53EF\u80FD\u306A\u74B0\u5883\u5909\u6570 -The\ following\ variables\ are\ available\ to\ shell\ scripts=\u30B7\u30A7\u30EB\u30B9\u30AF\u30EA\u30D7\u30C8\u3067\u306F\u3001\u6B21\u306E\u5909\u6570\u3092\u5229\u7528\u3067\u304D\u307E\u3059\u3002 +Available\ Environment\ Variables=\u5229\u7528\u53EF\u80FD\u306A\u74B0\u5883\u5909\u6570 diff --git a/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_nl.properties b/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_nl.properties index 1e16e54b83b1..8b22c3eda484 100644 --- a/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_nl.properties +++ b/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_nl.properties @@ -1,2 +1 @@ -Available\ Environmental\ Variables=Beschikbare omgevingsparameters -The\ following\ variables\ are\ available\ to\ shell\ scripts=Volgende parameters zijn beschikbaar voor gebruik in uw scripts: +Available\ Environment\ Variables=Beschikbare omgevingsparameters diff --git a/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_sr.properties b/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_sr.properties index afcfba7fc8de..9824c15ba4b2 100644 --- a/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_sr.properties +++ b/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_sr.properties @@ -1,4 +1,3 @@ # This file is under the MIT License by authors -Available\ Environmental\ Variables=\u0421\u043B\u043E\u0431\u043E\u0434\u043D\u0438\u0445 \u0413\u043B\u043E\u0431\u0430\u043B\u043D\u0438\u0445 \u041F\u0440\u043E\u043C\u0435\u043D\u0459\u0438\u0432\u0430 -The\ following\ variables\ are\ available\ to\ shell\ scripts=\u041F\u0440\u0430\u0442\u0435\u045B\u0430 \u043F\u0440\u043E\u043C\u0435\u043D\u0459\u0438\u0432\u0430 \u0441\u0443 \u0434\u043E\u0441\u0442\u0443\u043F\u043Da \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u0438\u043C\u0430 +Available\ Environment\ Variables=\u0421\u043B\u043E\u0431\u043E\u0434\u043D\u0438\u0445 \u0413\u043B\u043E\u0431\u0430\u043B\u043D\u0438\u0445 \u041F\u0440\u043E\u043C\u0435\u043D\u0459\u0438\u0432\u0430 diff --git a/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_zh_TW.properties b/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_zh_TW.properties index 5496197a8e9f..e1f05b52cf97 100644 --- a/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_zh_TW.properties +++ b/core/src/main/resources/hudson/model/EnvironmentContributor/EnvVarsHtml/index_zh_TW.properties @@ -20,5 +20,4 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. -Available\ Environmental\ Variables=\u53ef\u7528\u7684\u74b0\u5883\u8b8a\u6578 -The\ following\ variables\ are\ available\ to\ shell\ scripts=\u4e0b\u5217\u8b8a\u6578\u53ef\u4ee5\u5728 Shell Script \u4e2d\u4f7f\u7528 +Available\ Environment\ Variables=\u53ef\u7528\u7684\u74b0\u5883\u8b8a\u6578 diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs.html b/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs.html index b1173487ea1a..2a398539e66e 100644 --- a/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs.html +++ b/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs.html @@ -1,5 +1,5 @@

If the agent JVM should be launched with additional VM arguments, such as "-Xmx256m", specify those here. List of all the options are available - here. + here.
\ No newline at end of file diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs_bg.html b/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs_bg.html index 3d38c8d202b3..551c5cbb746b 100644 --- a/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs_bg.html +++ b/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs_bg.html @@ -2,5 +2,5 @@ При необходимост тук попълнете допълнителните аргументи за стартирането на виртуалната машина на Java на подчинените компютри като „-Xmx256m“. Погледнете документацията за - пълния списък. + пълния списък. diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs_fr.html b/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs_fr.html index b4869b1f2f3f..ef2647a6259d 100644 --- a/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs_fr.html +++ b/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs_fr.html @@ -1,5 +1,5 @@
Si la JVM agent doit être lancée avec des arguments supplémentaires, comme "-Xmx256m", indiquez-les ici. La liste de toutes options disponibles est disponible - ici. + ici.
\ No newline at end of file diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs_it.html b/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs_it.html index abdc20e1a464..9dcbbe93bb20 100644 --- a/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs_it.html +++ b/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs_it.html @@ -2,5 +2,5 @@ Se la JVM dell'agente deve essere avviata con argomenti VM aggiuntivi, come "-Xmx256m", specificarli qui. Un elenco con tutte le opzioni è disponibile - qui. + qui. diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs_ja.html b/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs_ja.html index 424a85b71697..3356babf6f98 100644 --- a/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs_ja.html +++ b/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs_ja.html @@ -1,4 +1,4 @@
エージェントのJVMに"-Xmx256m"のようなオプションをつけて起動する必要があるなら、ここで指定します。 - 利用可能なオプションの一覧を参照してください。 + 利用可能なオプションの一覧を参照してください。
\ No newline at end of file diff --git a/core/src/main/resources/hudson/tasks/BatchFile/config.properties b/core/src/main/resources/hudson/tasks/BatchFile/config.properties index d88d5ac12011..bd3158909a52 100644 --- a/core/src/main/resources/hudson/tasks/BatchFile/config.properties +++ b/core/src/main/resources/hudson/tasks/BatchFile/config.properties @@ -20,6 +20,6 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. -description=See the list of available environment variables +description=See the list of available environment variables filterRules=Environment filters addFilterRule=Add environment filter diff --git a/core/src/main/resources/hudson/tasks/BatchFile/config_bg.properties b/core/src/main/resources/hudson/tasks/BatchFile/config_bg.properties index 20be8836e840..92d0714b5f37 100644 --- a/core/src/main/resources/hudson/tasks/BatchFile/config_bg.properties +++ b/core/src/main/resources/hudson/tasks/BatchFile/config_bg.properties @@ -20,9 +20,9 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. -# See the list of available environment variables +# See the list of available environment variables description=\ - \u0412\u0438\u0436\u0442\u0435 \u0441\u043f\u0438\u0441\u044a\u043a\u0430 \u0441 \u043d\u0430\u043b\u0438\u0447\u043d\u0438\u0442\u0435 \u043f\u0440\u043e\u043c\u0435\u043d\u043b\u0438\u0432\u0438\ + \u0412\u0438\u0436\u0442\u0435 \u0441\u043f\u0438\u0441\u044a\u043a\u0430 \u0441 \u043d\u0430\u043b\u0438\u0447\u043d\u0438\u0442\u0435 \u043f\u0440\u043e\u043c\u0435\u043d\u043b\u0438\u0432\u0438\ \u043d\u0430 \u0441\u0440\u0435\u0434\u0430\u0442\u0430 Command=\ \u041a\u043e\u043c\u0430\u043d\u0434\u0430 diff --git a/core/src/main/resources/hudson/tasks/BatchFile/config_da.properties b/core/src/main/resources/hudson/tasks/BatchFile/config_da.properties index 069dd34ffbc3..5c6e32b4c9ba 100644 --- a/core/src/main/resources/hudson/tasks/BatchFile/config_da.properties +++ b/core/src/main/resources/hudson/tasks/BatchFile/config_da.properties @@ -21,4 +21,4 @@ # THE SOFTWARE. Command=Kommando -description=Se listen af tilg\u00e6ngelige milj\u00f8variable +description=Se listen af tilg\u00e6ngelige milj\u00f8variable diff --git a/core/src/main/resources/hudson/tasks/BatchFile/config_de.properties b/core/src/main/resources/hudson/tasks/BatchFile/config_de.properties index ca2beda6e1bd..fd742bb8fa87 100644 --- a/core/src/main/resources/hudson/tasks/BatchFile/config_de.properties +++ b/core/src/main/resources/hudson/tasks/BatchFile/config_de.properties @@ -1,3 +1,3 @@ Command=Kommando -description=Liste verf\u00FCgbarer Umgebungsvariablen +description=Liste verf\u00FCgbarer Umgebungsvariablen ERRORLEVEL\ to\ set\ build\ unstable=ERRORLEVEL, mit dem der Build als instabil markiert wird diff --git a/core/src/main/resources/hudson/tasks/BatchFile/config_es.properties b/core/src/main/resources/hudson/tasks/BatchFile/config_es.properties index 1d0ebab4010d..b707cdb73397 100644 --- a/core/src/main/resources/hudson/tasks/BatchFile/config_es.properties +++ b/core/src/main/resources/hudson/tasks/BatchFile/config_es.properties @@ -20,5 +20,5 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. -description=Visualiza la lista de variables de entorno disponibles +description=Visualiza la lista de variables de entorno disponibles Command=Comando diff --git a/core/src/main/resources/hudson/tasks/BatchFile/config_fr.properties b/core/src/main/resources/hudson/tasks/BatchFile/config_fr.properties index 3eb953d0a445..0564a2312d57 100644 --- a/core/src/main/resources/hudson/tasks/BatchFile/config_fr.properties +++ b/core/src/main/resources/hudson/tasks/BatchFile/config_fr.properties @@ -21,4 +21,4 @@ # THE SOFTWARE. Command=Commande -description=Voir la liste des variables d''environnement disponibles +description=Voir la liste des variables d''environnement disponibles diff --git a/core/src/main/resources/hudson/tasks/BatchFile/config_it.properties b/core/src/main/resources/hudson/tasks/BatchFile/config_it.properties index f84d693da397..97dbe800c785 100644 --- a/core/src/main/resources/hudson/tasks/BatchFile/config_it.properties +++ b/core/src/main/resources/hudson/tasks/BatchFile/config_it.properties @@ -22,7 +22,7 @@ # THE SOFTWARE. Command=Comando -description=Si veda l''elenco delle \ +description=Si veda l''elenco delle \ variabili d''ambiente disponibili ERRORLEVEL\ to\ set\ build\ unstable=ERRORLEVEL richiesto per contrassegnare \ la compilazione come instabile diff --git a/core/src/main/resources/hudson/tasks/BatchFile/config_ja.properties b/core/src/main/resources/hudson/tasks/BatchFile/config_ja.properties index a5e9d4d2d849..a36b56253f1c 100644 --- a/core/src/main/resources/hudson/tasks/BatchFile/config_ja.properties +++ b/core/src/main/resources/hudson/tasks/BatchFile/config_ja.properties @@ -21,4 +21,4 @@ # THE SOFTWARE. Command=\u30B3\u30DE\u30F3\u30C9 -description=\u30D3\u30EB\u30C9\u304B\u3089\u5229\u7528\u53EF\u80FD\u306A\u74B0\u5883\u5909\u6570\u306E\u4E00\u89A7 +description=\u30D3\u30EB\u30C9\u304B\u3089\u5229\u7528\u53EF\u80FD\u306A\u74B0\u5883\u5909\u6570\u306E\u4E00\u89A7 diff --git a/core/src/main/resources/hudson/tasks/BatchFile/config_pt_BR.properties b/core/src/main/resources/hudson/tasks/BatchFile/config_pt_BR.properties index c7f56ab0adf2..bcef0d66a00d 100644 --- a/core/src/main/resources/hudson/tasks/BatchFile/config_pt_BR.properties +++ b/core/src/main/resources/hudson/tasks/BatchFile/config_pt_BR.properties @@ -20,6 +20,6 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. -# See the list of available environment variables -description=Veja a lista de vari\u00e1veis de ambiente +# See the list of available environment variables +description=Veja a lista de vari\u00e1veis de ambiente Command=Comando diff --git a/core/src/main/resources/hudson/tasks/BatchFile/config_sr.properties b/core/src/main/resources/hudson/tasks/BatchFile/config_sr.properties index cccacf6fa854..51c6584df70c 100644 --- a/core/src/main/resources/hudson/tasks/BatchFile/config_sr.properties +++ b/core/src/main/resources/hudson/tasks/BatchFile/config_sr.properties @@ -1,4 +1,4 @@ # This file is under the MIT License by authors Command=\u041A\u043E\u043C\u0430\u043D\u0434\u0430 -description=\u041F\u0440\u0435\u0433\u043B\u0435\u0434\u0430\u0458 \u0441\u043F\u0438\u0441\u0430\u043A \u043F\u0440\u043E\u043C\u0435\u043D\u0459\u0438\u0432\u0430 +description=\u041F\u0440\u0435\u0433\u043B\u0435\u0434\u0430\u0458 \u0441\u043F\u0438\u0441\u0430\u043A \u043F\u0440\u043E\u043C\u0435\u043D\u0459\u0438\u0432\u0430 diff --git a/core/src/main/resources/hudson/tasks/BatchFile/config_zh_TW.properties b/core/src/main/resources/hudson/tasks/BatchFile/config_zh_TW.properties index 55bcbbb3b1e7..09cf41134316 100644 --- a/core/src/main/resources/hudson/tasks/BatchFile/config_zh_TW.properties +++ b/core/src/main/resources/hudson/tasks/BatchFile/config_zh_TW.properties @@ -22,4 +22,4 @@ # THE SOFTWARE. Command=\u6307\u4ee4 -description=\u53ef\u4ee5\u53c3\u8003\u53ef\u7528\u74b0\u5883\u8b8a\u6578\u6e05\u55ae +description=\u53ef\u4ee5\u53c3\u8003\u53ef\u7528\u74b0\u5883\u8b8a\u6578\u6e05\u55ae diff --git a/core/src/main/resources/hudson/tasks/Maven/help.properties b/core/src/main/resources/hudson/tasks/Maven/help.properties index dc0bc391ebff..9acc690bd391 100644 --- a/core/src/main/resources/hudson/tasks/Maven/help.properties +++ b/core/src/main/resources/hudson/tasks/Maven/help.properties @@ -2,7 +2,7 @@ para1=For projects that use Maven as the build system. This causes Jenkins to in Maven with the given goals and options. A non-zero exit code from Maven makes Jenkins \ mark the build as a failure. Some Maven versions have a bug where it doesn''t return \ the exit code correctly. -para2=Jenkins passes various environment \ +para2=Jenkins passes various environment \ variables to Maven, which you can access from Maven as "${env.VARIABLENAME}". para3=The same variables can be used in command-line arguments (as if you are invoking \ this from shell). For example, you can specify \ diff --git a/core/src/main/resources/hudson/tasks/Maven/help_bg.properties b/core/src/main/resources/hudson/tasks/Maven/help_bg.properties index 2d4ca93eaf99..62b8e71299d2 100644 --- a/core/src/main/resources/hudson/tasks/Maven/help_bg.properties +++ b/core/src/main/resources/hudson/tasks/Maven/help_bg.properties @@ -20,10 +20,10 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. -# Jenkins passes various environment \ +# Jenkins passes various environment \ # variables to Maven, which you can access from Maven as "${env.VARIABLENAME}". para2=\ - Jenkins \u043f\u0440\u0435\u0434\u0430\u0432\u0430 \u043d\u044f\u043a\u043e\u0438 \u043f\u0440\u043e\u043c\u0435\u043d\u043b\u0438\u0432\u0438 \u043d\u0430\ + Jenkins \u043f\u0440\u0435\u0434\u0430\u0432\u0430 \u043d\u044f\u043a\u043e\u0438 \u043f\u0440\u043e\u043c\u0435\u043d\u043b\u0438\u0432\u0438 \u043d\u0430\ \u0441\u0440\u0435\u0434\u0430\u0442\u0430 \u043a\u044a\u043c Maven. \u0422\u0435 \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0431\u044a\u0434\u0430\u0442 \u0434\u043e\u0441\u0442\u044a\u043f\u0435\u043d\u0438 \u043e\u0442 Maven \u0447\u0440\u0435\u0437\ \u201e${env.VARIABLENAME}\u201c. diff --git a/core/src/main/resources/hudson/tasks/Maven/help_de.properties b/core/src/main/resources/hudson/tasks/Maven/help_de.properties index 485743f89ec7..1d68cd3baaea 100644 --- a/core/src/main/resources/hudson/tasks/Maven/help_de.properties +++ b/core/src/main/resources/hudson/tasks/Maven/help_de.properties @@ -3,7 +3,7 @@ para1=F\u00fcr Projekte, die Maven als Build-System benutzen. Dies veranlasst Je ungleich 0 bewirkt, dass Jenkins den Build als Fehlschlag markiert. \ Manche Versionen von Maven beinhalten einen Fehler, durch den der Ergebniscode \ nicht immer korrekt zur\u00fcckgeliefert wird. -para2=Jenkins \u00fcbergibt \ +para2=Jenkins \u00fcbergibt \ zahlreiche Umgebungsvariablen an Maven, auf die Sie innerhalb Mavens mittels $'{'env.VARIABLENAME} zugreifen k\u00f6nnen. para3=Die gleichen Umgebungsvariablen k\u00f6nnen in Kommandozeilenargumenten verwendet werden (genauso als ob Sie \ Kommandos in einer Shell ausf\u00fchren w\u00fcrden), wie beispielsweise \ diff --git a/core/src/main/resources/hudson/tasks/Maven/help_fr.properties b/core/src/main/resources/hudson/tasks/Maven/help_fr.properties index df6a27d4dde7..e3cd9318cc6b 100644 --- a/core/src/main/resources/hudson/tasks/Maven/help_fr.properties +++ b/core/src/main/resources/hudson/tasks/Maven/help_fr.properties @@ -4,7 +4,7 @@ para1=Pour les projets qui utilisent Maven comme outil de build. \ \u00eatre marqu\u00e9 comme un \u00e9chec. \ Certaines versions de Maven ont un bug qui ne permet pas le retour correct \ d''un code de sortie. -para2=Jenkins passe \ +para2=Jenkins passe \ certaines variables d''environment \u00e0 Maven, auxquelles vous pouvez \ acc\u00e9der \u00e0 l''aide de "$'{'env.NOMDEVARIABLE}". para3=Les m\u00eames variables peuvent \u00eatre utilis\u00e9es comme des arguments de ligne \ diff --git a/core/src/main/resources/hudson/tasks/Maven/help_it.properties b/core/src/main/resources/hudson/tasks/Maven/help_it.properties index 05a71ed26b66..80f0a5109d2c 100644 --- a/core/src/main/resources/hudson/tasks/Maven/help_it.properties +++ b/core/src/main/resources/hudson/tasks/Maven/help_it.properties @@ -27,7 +27,7 @@ para1=Per i progetti che utilizzano Maven come sistema di compilazione. \ Jenkins contrassegni la compilazione come non riuscita. Alcune versioni di \ Maven hanno un bug per cui il codice di uscita non viene restituito \ correttamente. -para2=Jenkins fornisce a Maven \ +para2=Jenkins fornisce a Maven \ svariate variabili d''ambiente, a cui si pu accedere da Maven con la \ sintassi "${env.NOMEVARIABILE}". para3=Le stesse variabili possono essere utilizzate negli argomenti da riga \ diff --git a/core/src/main/resources/hudson/tasks/Maven/help_ja.properties b/core/src/main/resources/hudson/tasks/Maven/help_ja.properties index 1bf10a16ad79..4ca06264deab 100644 --- a/core/src/main/resources/hudson/tasks/Maven/help_ja.properties +++ b/core/src/main/resources/hudson/tasks/Maven/help_ja.properties @@ -2,7 +2,7 @@ para1=\u30d3\u30eb\u30c9\u30b7\u30b9\u30c6\u30e0\u3068\u3057\u3066Maven\u3092\u4 Jenkins\u306f\u3001\u4e0e\u3048\u3089\u308c\u305f\u30b4\u30fc\u30eb\u3068\u30aa\u30d7\u30b7\u30e7\u30f3\u3068\u3068\u3082\u306bMaven\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002\ Maven\u304c0\u3067\u306a\u3044\u7d42\u4e86\u30b3\u30fc\u30c9\u3092\u8fd4\u3059\u3068\u3001Jenkins\u306f\u30d3\u30eb\u30c9\u304c\u5931\u6557\u3057\u305f\u3068\u5224\u65ad\u3057\u307e\u3059\u3002\ Maven\u306e\u3042\u308b\u30d0\u30fc\u30b8\u30e7\u30f3\u306f\u3001\u7d42\u4e86\u30b3\u30fc\u30c9\u3092\u9069\u5207\u306b\u8fd4\u3055\u306a\u3044\u30d0\u30b0\u304c\u3042\u308a\u307e\u3059\u3002 -para2=Jenkins\u306f\u3001\ +para2=Jenkins\u306f\u3001\ \u5229\u7528\u53ef\u80fd\u306a\u74b0\u5883\u5909\u6570 \u3092Maven\u306b\u6e21\u3057\u307e\u3059\u3002Maven\u3067\u306f"$'{'env.VARIABLENAME}"\u3068\u3057\u3066\u53c2\u7167\u3067\u304d\u307e\u3059\u3002 para3=\u540c\u3058\u5909\u6570\u3092\u3001\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u306e\u5f15\u6570\u3067\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059(\u30b7\u30a7\u30eb\u304b\u3089\u8d77\u52d5\u3057\u3066\u3044\u308b\u304b\u306e\u3088\u3046\u306b)\u3002\ \u4f8b\u3048\u3070\u3001-DresultsFile=$'{'WORKSPACE}/$'{'BUILD_TAG}.results.txt\u306e\u3088\u3046\u306b\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002 diff --git a/core/src/main/resources/hudson/tasks/Maven/help_pt_BR.properties b/core/src/main/resources/hudson/tasks/Maven/help_pt_BR.properties index 02023c459b57..cf877d0e7747 100644 --- a/core/src/main/resources/hudson/tasks/Maven/help_pt_BR.properties +++ b/core/src/main/resources/hudson/tasks/Maven/help_pt_BR.properties @@ -2,7 +2,7 @@ para1=Para projetos que usam Maven como sistema de construção. Isto fa invocar o Maven com os objetivos e opções informadas. Um código de saída \ diferente de zero vindo do Maven faz com que o Jenkins marque a construção como uma falha. \ Algumas versões do Maven têm um bug onde ele não retorna o código de saída corretamente. -para2=O Jenkins passa \ +para2=O Jenkins passa \ várias variáveis de ambiente para o Maven, que você pode acessar do Maven como "$'{'env.VARIABLENAME}". para3=As mesmas variáveis podem ser usadas como argumentos na linha de comando (como se você fosse invocar do shell). \ Por exemplo, você pode especificar -DresultsFile=$'{'WORKSPACE}/$'{'BUILD_TAG}.resultados.txt diff --git a/core/src/main/resources/hudson/tasks/Maven/help_ru.properties b/core/src/main/resources/hudson/tasks/Maven/help_ru.properties index 240e24fa11cd..90f9b2dedc3b 100644 --- a/core/src/main/resources/hudson/tasks/Maven/help_ru.properties +++ b/core/src/main/resources/hudson/tasks/Maven/help_ru.properties @@ -2,7 +2,7 @@ para1=\u0414\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c Maven \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0446\u0435\u043b\u044f\u043c\u0438 \u0438 \u043e\u043f\u0446\u0438\u044f\u043c\u0438. \u0415\u0441\u043b\u0438 Maven \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \ \u043d\u0435\u043d\u0443\u043b\u0435\u0432\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u0441\u0431\u043e\u0440\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u0447\u0438\u0442\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u0432\u0448\u0435\u0439\u0441\u044f. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 Maven \ \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043e\u0448\u0438\u0431\u043a\u0443, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044f \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438. -para2=Jenkins \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \ +para2=Jenkins \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \ \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432 Maven, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e\ \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 Maven "$'{'env.VARIABLENAME}". para3=\u042d\u0442\u0438 \u0436\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 (\u0435c\u043b\u0438 \u0432\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \ diff --git a/core/src/main/resources/hudson/tasks/Maven/help_sr.properties b/core/src/main/resources/hudson/tasks/Maven/help_sr.properties index c1657bcbbf13..5143cfed80a1 100644 --- a/core/src/main/resources/hudson/tasks/Maven/help_sr.properties +++ b/core/src/main/resources/hudson/tasks/Maven/help_sr.properties @@ -1,6 +1,6 @@ # This file is under the MIT License by authors para1=\u0417\u0430 \u043F\u0440\u043E\u0458\u0435\u043A\u0442\u0435 \u043A\u043E\u0458\u0438 \u043A\u043E\u0440\u0438\u0441\u0442\u0435 \u0441\u0438\u0441\u0442\u0435\u043C \u0438\u0437\u0433\u0440\u0430\u0434\u045A\u0435 Maven. \u041E\u0432\u043E \u043F\u043E\u0434\u0435\u0448\u0430\u0432\u0430\u045A\u0435 \u045B\u0435 \u0443\u043A\u0430\u0437\u0430\u0442\u0438 \u0434\u0430 Jenkins \u043A\u043E\u0440\u0438\u0441\u0442\u0438 Maven \u0441\u0430 \u0434\u0430\u0442\u0438\u043C \u0446\u0438\u0459\u0435\u0432\u0438\u043C\u0430 \u0438 \u043E\u043F\u0446\u0438\u0458\u0430\u043C\u0430. \u0410\u043A\u043E Maven \u0437\u0430\u0432\u0440\u0448\u0438 \u0441\u0430 \u043D\u0435\u043D\u0443\u043B\u043D\u0438\u043C \u043A\u043E\u0434\u043E\u043C, \u0438\u0437\u0433\u0440\u0430\u0434\u045A\u0430 \u045B\u0435 \u0441\u0435 \u0441\u043C\u0430\u0442\u0440\u0430\u0442\u0438 \u043D\u0435\u0443\u0441\u043F\u0435\u043D\u043E\u0433. \u041C\u0435\u0452\u0443\u0442\u0438\u043C \u043D\u0435\u043A\u0435 \u0432\u0435\u0440\u0437\u0438\u0458\u0435 Maven \u0438\u043C\u0430\u0458\u0443 \u0433\u0440\u0435\u0448\u043A\u0443 \u043A\u043E\u0458\u0430 \u0432\u0440\u0430\u045B\u0430 \u043F\u043E\u0433\u0440\u0435\u0448\u0430\u043D \u043A\u043E\u0434 \u043F\u043E \u0437\u0430\u0432\u0440\u0448\u0435\u0442\u043A\u0443. -para2=Jenkins \u043F\u0440\u0435\u043D\u0435\u0441\u0435 \ +para2=Jenkins \u043F\u0440\u0435\u043D\u0435\u0441\u0435 \ \u0440\u0430\u0437\u043D\u0430 \u043F\u0440\u043E\u043C\u0435\u043D\u0459\u0438\u0432\u0430 Maven-\u0443, \u043A\u043E\u0458\u0430 \u0441\u0443 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u0430 \u043F\u043E \u0448\u0430\u0431\u043B\u043E\u043D\u0443 "$'{'env.VARIABLENAME}". para3=\u0422\u0435 \u0438\u0441\u0442\u0435 \u043F\u0440\u043E\u043C\u0435\u043D\u0459\u0438\u0432\u0435 \u043C\u043E\u0433\u0443 \u0441\u0435 \u043A\u043E\u0440\u0438\u0441\u0442\u0438 \u043F\u0440\u0435\u043A\u043E \u043A\u043E\u043C\u0430\u043D\u0434\u043D\u0435 \u043B\u0438\u043D\u0438\u0458\u0435 (\u0430\u043A\u043E \u043F\u043E\u0437\u043E\u0432\u0435\u0442\u0435 Maven \u0441\u0430 \u043A\u043E\u043C\u0430\u043D\u0434\u043D\u0435 \u043B\u0438\u043D\u0438\u0458\u0435). \u041D\u0430 \u043F\u0440\u0438\u043C\u0435\u0440, \u043C\u043E\u0436\u0435\u0442\u0435 \u0434\u0430 \u043E\u0434\u0440\u0435\u0434\u0438\u0442\u0435 diff --git a/core/src/main/resources/hudson/tasks/Maven/help_tr.properties b/core/src/main/resources/hudson/tasks/Maven/help_tr.properties index 874306e43be7..ebc2bb4f959f 100644 --- a/core/src/main/resources/hudson/tasks/Maven/help_tr.properties +++ b/core/src/main/resources/hudson/tasks/Maven/help_tr.properties @@ -2,7 +2,7 @@ para1=Yapılandırma sistemi olarak Maven kullanan projeler için ku içerisinde, Maven''ı, verilen hedefler ve seçenekler ile çalıştırabilirsiniz. Maven''dan gelen \ 0 olmayan(non-zero) çıkış kodu, yapılandırmayı başarısız olarak ilan eder. \ Bazı Maven versiyonlarında çıkış kodunun düzgün dönememesi gibi bir bug vardır. -para2=Jenkins \ +para2=Jenkins \ çeşitli ortam değişkinlerini Maven''a aktarır, bunlara Maven içerisinden "$'{'env.VARIABLENAME}" ile ulaşabilirsiniz. para3=Aynı değişkenleri komut satırında parametre olarak kullanabilirsiniz (bunu shell''den çağırıyorsanız) \ Mesela, -DresultsFile=$'{'WORKSPACE}/$'{'BUILD_TAG}.results.txt şeklinde belirleyebilirsiniz diff --git a/core/src/main/resources/hudson/tasks/Maven/help_zh_TW.properties b/core/src/main/resources/hudson/tasks/Maven/help_zh_TW.properties index 2517d53dd71e..ca26a30baa10 100644 --- a/core/src/main/resources/hudson/tasks/Maven/help_zh_TW.properties +++ b/core/src/main/resources/hudson/tasks/Maven/help_zh_TW.properties @@ -1,7 +1,7 @@ para1=\u9069\u7528\u4ee5 Maven \u5efa\u7f6e\u7684\u5c08\u6848\uff0c\u8b93 Jenkins \u4f7f\u7528\u6307\u5b9a\u7684 Goal \u53ca\u9078\u9805\u53eb\u7528 Maven\u3002\ Jenkins \u6703\u5c07 Maven \u4efb\u4f55\u975e 0 \u7684\u7d50\u675f\u4ee3\u78bc\u90fd\u8996\u70ba\u5efa\u7f6e\u5931\u6557\u3002\ \u67d0\u4e9b\u7248\u672c\u7684 Maven \u6709 Bug\uff0c\u4e0d\u6703\u56de\u50b3\u6b63\u78ba\u7684\u7d50\u675f\u4ee3\u78bc\u3002 -para2=Jenkins \u50b3\u9001\u591a\u500b\u74b0\u5883\u8b8a\u6578\u7d66 \ +para2=Jenkins \u50b3\u9001\u591a\u500b\u74b0\u5883\u8b8a\u6578\u7d66 \ Maven\uff0c\u60a8\u53ef\u4ee5\u5728 Maven \u88e1\u7528 "$'{'env.VARIABLENAME}" \u4f86\u53d6\u5f97\u8b8a\u6578\u503c\u3002 para3=\u540c\u6a23\u7684\u8b8a\u6578\u4e5f\u53ef\u4ee5\u7528\u5728\u547d\u4ee4\u5217\u53c3\u6578\u88e1 (\u5047\u8a2d\u60a8\u662f\u5f9e Shell \u53eb\u7528)\u3002\ \u4f8b\u5982: -DresultsFile=$'{'WORKSPACE}/$'{'BUILD_TAG}.results.txt\u3002 diff --git a/core/src/main/resources/hudson/tasks/Shell/config.properties b/core/src/main/resources/hudson/tasks/Shell/config.properties index 5a69c4dc7c2e..3f974495e379 100644 --- a/core/src/main/resources/hudson/tasks/Shell/config.properties +++ b/core/src/main/resources/hudson/tasks/Shell/config.properties @@ -20,6 +20,6 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. -description=See the list of available environment variables +description=See the list of available environment variables filterRules=Environment filters addFilterRule=Add environment filter diff --git a/core/src/main/resources/hudson/tasks/Shell/config_da.properties b/core/src/main/resources/hudson/tasks/Shell/config_da.properties index 069dd34ffbc3..5c6e32b4c9ba 100644 --- a/core/src/main/resources/hudson/tasks/Shell/config_da.properties +++ b/core/src/main/resources/hudson/tasks/Shell/config_da.properties @@ -21,4 +21,4 @@ # THE SOFTWARE. Command=Kommando -description=Se listen af tilg\u00e6ngelige milj\u00f8variable +description=Se listen af tilg\u00e6ngelige milj\u00f8variable diff --git a/core/src/main/resources/hudson/tasks/Shell/config_de.properties b/core/src/main/resources/hudson/tasks/Shell/config_de.properties index e0c7c64ee391..3cbba51ddd99 100644 --- a/core/src/main/resources/hudson/tasks/Shell/config_de.properties +++ b/core/src/main/resources/hudson/tasks/Shell/config_de.properties @@ -21,4 +21,4 @@ # THE SOFTWARE. Command=Befehl -description=Liste der verfgbaren Umgebungsvariablen +description=Liste der verfügbaren Umgebungsvariablen diff --git a/core/src/main/resources/hudson/tasks/Shell/config_es.properties b/core/src/main/resources/hudson/tasks/Shell/config_es.properties index 56919def3dd6..c4a36655db86 100644 --- a/core/src/main/resources/hudson/tasks/Shell/config_es.properties +++ b/core/src/main/resources/hudson/tasks/Shell/config_es.properties @@ -20,5 +20,5 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. -description=Visualizar la lista de variables de entorno disponibles +description=Visualizar la lista de variables de entorno disponibles Command=Comando diff --git a/core/src/main/resources/hudson/tasks/Shell/config_fr.properties b/core/src/main/resources/hudson/tasks/Shell/config_fr.properties index 3eb953d0a445..0564a2312d57 100644 --- a/core/src/main/resources/hudson/tasks/Shell/config_fr.properties +++ b/core/src/main/resources/hudson/tasks/Shell/config_fr.properties @@ -21,4 +21,4 @@ # THE SOFTWARE. Command=Commande -description=Voir la liste des variables d''environnement disponibles +description=Voir la liste des variables d''environnement disponibles diff --git a/core/src/main/resources/hudson/tasks/Shell/config_it.properties b/core/src/main/resources/hudson/tasks/Shell/config_it.properties index 6580cf0dca12..efe696fdea7e 100644 --- a/core/src/main/resources/hudson/tasks/Shell/config_it.properties +++ b/core/src/main/resources/hudson/tasks/Shell/config_it.properties @@ -22,7 +22,7 @@ # THE SOFTWARE. Command=Comando -description=Si veda l''elenco delle \ +description=Si veda l''elenco delle \ variabili d''ambiente disponibili Exit\ code\ to\ set\ build\ unstable=Codice d''uscita richiesto per \ contrassegnare la compilazione come instabile diff --git a/core/src/main/resources/hudson/tasks/Shell/config_ja.properties b/core/src/main/resources/hudson/tasks/Shell/config_ja.properties index c36e9c47426a..c64a4e166290 100644 --- a/core/src/main/resources/hudson/tasks/Shell/config_ja.properties +++ b/core/src/main/resources/hudson/tasks/Shell/config_ja.properties @@ -21,4 +21,4 @@ # THE SOFTWARE. Command=\u30b7\u30a7\u30eb\u30b9\u30af\u30ea\u30d7\u30c8 -description=\u30d3\u30eb\u30c9\u304b\u3089\u5229\u7528\u53ef\u80fd\u306a\u74b0\u5883\u5909\u6570\u306e\u4e00\u89a7 +description=\u30d3\u30eb\u30c9\u304b\u3089\u5229\u7528\u53ef\u80fd\u306a\u74b0\u5883\u5909\u6570\u306e\u4e00\u89a7 diff --git a/core/src/main/resources/hudson/tasks/Shell/config_nl.properties b/core/src/main/resources/hudson/tasks/Shell/config_nl.properties index 7dccd1c84552..896093a19694 100644 --- a/core/src/main/resources/hudson/tasks/Shell/config_nl.properties +++ b/core/src/main/resources/hudson/tasks/Shell/config_nl.properties @@ -21,4 +21,4 @@ # THE SOFTWARE. Command=Commando -description=Zie de lijst van beschikbare omgevingsparameters. +description=Zie de lijst van beschikbare omgevingsparameters. diff --git a/core/src/main/resources/hudson/tasks/Shell/config_pt_BR.properties b/core/src/main/resources/hudson/tasks/Shell/config_pt_BR.properties index 795ea26b235b..db679e4fdfd5 100644 --- a/core/src/main/resources/hudson/tasks/Shell/config_pt_BR.properties +++ b/core/src/main/resources/hudson/tasks/Shell/config_pt_BR.properties @@ -21,4 +21,4 @@ # THE SOFTWARE. Command=Comando -description=Veja a lista de vari\u00e1veis de ambiente dispon\u00edveis +description=Veja a lista de vari\u00e1veis de ambiente dispon\u00edveis diff --git a/core/src/main/resources/hudson/tasks/Shell/config_ru.properties b/core/src/main/resources/hudson/tasks/Shell/config_ru.properties index a461942bacf1..329a720f6d31 100644 --- a/core/src/main/resources/hudson/tasks/Shell/config_ru.properties +++ b/core/src/main/resources/hudson/tasks/Shell/config_ru.properties @@ -21,4 +21,4 @@ # THE SOFTWARE. Command=\u041a\u043e\u043c\u0430\u043d\u0434\u0430 -description=\u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f +description=\u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f diff --git a/core/src/main/resources/hudson/tasks/Shell/config_sr.properties b/core/src/main/resources/hudson/tasks/Shell/config_sr.properties index e94472cd0e9a..c0b492c1c5f1 100644 --- a/core/src/main/resources/hudson/tasks/Shell/config_sr.properties +++ b/core/src/main/resources/hudson/tasks/Shell/config_sr.properties @@ -1,4 +1,4 @@ # This file is under the MIT License by authors -description=\u041F\u0440\u0435\u0433\u043B\u0435\u0434\u0430\u0458\u0442\u0435 \u0441\u043F\u0438\u0441\u0430\u043A \u043F\u0440\u043E\u043C\u0435\u043D\u0459\u0438\u0432\u0430 +description=\u041F\u0440\u0435\u0433\u043B\u0435\u0434\u0430\u0458\u0442\u0435 \u0441\u043F\u0438\u0441\u0430\u043A \u043F\u0440\u043E\u043C\u0435\u043D\u0459\u0438\u0432\u0430 Command=\u041A\u043E\u043C\u0430\u043D\u0434\u0430 diff --git a/core/src/main/resources/hudson/tasks/Shell/config_tr.properties b/core/src/main/resources/hudson/tasks/Shell/config_tr.properties index 54501683bc39..0c3c1db76783 100644 --- a/core/src/main/resources/hudson/tasks/Shell/config_tr.properties +++ b/core/src/main/resources/hudson/tasks/Shell/config_tr.properties @@ -20,5 +20,5 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. -description=T\u00fcm ortam de\u011fi\u015fkenlerini grmek iin t\u0131klay\u0131n\u0131z +description=T\u00fcm ortam de\u011fi\u015fkenlerini grmek iin t\u0131klay\u0131n\u0131z Command=Komut diff --git a/core/src/main/resources/hudson/tasks/Shell/config_zh_TW.properties b/core/src/main/resources/hudson/tasks/Shell/config_zh_TW.properties index 55bcbbb3b1e7..09cf41134316 100644 --- a/core/src/main/resources/hudson/tasks/Shell/config_zh_TW.properties +++ b/core/src/main/resources/hudson/tasks/Shell/config_zh_TW.properties @@ -22,4 +22,4 @@ # THE SOFTWARE. Command=\u6307\u4ee4 -description=\u53ef\u4ee5\u53c3\u8003\u53ef\u7528\u74b0\u5883\u8b8a\u6578\u6e05\u55ae +description=\u53ef\u4ee5\u53c3\u8003\u53ef\u7528\u74b0\u5883\u8b8a\u6578\u6e05\u55ae diff --git a/core/src/main/resources/jenkins/security/ApiTokenProperty/resources.css b/core/src/main/resources/jenkins/security/ApiTokenProperty/resources.css index 73c211376c67..631043e98ce8 100644 --- a/core/src/main/resources/jenkins/security/ApiTokenProperty/resources.css +++ b/core/src/main/resources/jenkins/security/ApiTokenProperty/resources.css @@ -144,7 +144,8 @@ } .token-list .repeated-chunk { border-width: 0; - padding-left: 0; + padding: 0; + margin: 0; } .token-list .repeatable-add{ margin: 6px 6px 3px 6px; diff --git a/pom.xml b/pom.xml index e8a823797a56..3beccbdd327a 100644 --- a/pom.xml +++ b/pom.xml @@ -70,7 +70,7 @@ THE SOFTWARE. - 2.327 + 2.328 -SNAPSHOT - - + + diff --git a/src/spotbugs/spotbugs-excludes.xml b/src/spotbugs/spotbugs-excludes.xml index 9f5927b041b1..63c6295337f6 100644 --- a/src/spotbugs/spotbugs-excludes.xml +++ b/src/spotbugs/spotbugs-excludes.xml @@ -144,20 +144,12 @@ - - - - - - - - @@ -181,13 +173,6 @@ - - - - - - - @@ -360,14 +345,6 @@ - - - - - - - - @@ -402,26 +379,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -513,14 +470,6 @@ - - - - - - - - diff --git a/war/pom.xml b/war/pom.xml index d6cb8dddc820..0e5079b178fa 100644 --- a/war/pom.xml +++ b/war/pom.xml @@ -63,7 +63,7 @@ THE SOFTWARE. org.jenkins-ci executable-war - 2.2 + 2.3 provided diff --git a/war/src/main/less/modules/form.less b/war/src/main/less/modules/form.less index 9543a4b7cba5..2369e4b572fd 100644 --- a/war/src/main/less/modules/form.less +++ b/war/src/main/less/modules/form.less @@ -434,6 +434,17 @@ &:checked + label:after { transform: scale(1)!important; } + + &:disabled { + & + label { + cursor: default; + pointer-events: none; + + &::before { + opacity: 0.3 !important; + } + } + } } .jenkins-checkbox label { @@ -491,6 +502,12 @@ box-shadow: 0 0 0 5px var(--focus-input-glow); } } + + &:empty { + &::before { + margin-right: 0; + } + } } .jenkins-checkbox__description { diff --git a/war/src/main/webapp/scripts/hudson-behavior.js b/war/src/main/webapp/scripts/hudson-behavior.js index 48dea3b9e93e..4382e7acc8cc 100644 --- a/war/src/main/webapp/scripts/hudson-behavior.js +++ b/war/src/main/webapp/scripts/hudson-behavior.js @@ -860,8 +860,23 @@ function helpButtonOnClick() { new Ajax.Request(this.getAttribute("helpURL"), { method : 'get', onSuccess : function(x) { + // Which plugin is this from? var from = x.getResponseHeader("X-Plugin-From"); div.innerHTML = x.responseText+(from?"
"+from+"
":""); + + // Ensure links open in new window unless explicitly specified otherwise + var links = div.getElementsByTagName('a'); + for (var i = 0; i < links.length; i++) { + var link = links[i]; + if (link.hasAttribute('href')) { // ignore document anchors + if (!link.hasAttribute('target')) { + link.setAttribute('target', '_blank'); + } + if (!link.hasAttribute('rel')) { + link.setAttribute('rel', 'noopener noreferrer'); + } + } + } layoutUpdateCallback.call(); }, onFailure : function(x) {