mirror of https://github.com/jenkinsci/jenkins.git
Merge branch 'master' into JENKINS-75378-cli-listener
This commit is contained in:
commit
dcbbdf6e55
|
@ -16,7 +16,7 @@ jobs:
|
|||
discourse-author-username: jenkins-release-bot
|
||||
discourse-category: 23
|
||||
- name: Post on mailing list
|
||||
uses: dawidd6/action-send-mail@v3
|
||||
uses: dawidd6/action-send-mail@v4
|
||||
with:
|
||||
server_address: smtp.gmail.com
|
||||
server_port: 465
|
||||
|
|
|
@ -41,7 +41,7 @@ THE SOFTWARE.
|
|||
<commons-fileupload2.version>2.0.0-M2</commons-fileupload2.version>
|
||||
<groovy.version>2.4.21</groovy.version>
|
||||
<jelly.version>1.1-jenkins-20250108</jelly.version>
|
||||
<stapler.version>1955.vdb_2736b_480e3</stapler.version>
|
||||
<stapler.version>1961.vd0a_a_60970a_a_2</stapler.version>
|
||||
</properties>
|
||||
|
||||
<dependencyManagement>
|
||||
|
@ -63,7 +63,7 @@ THE SOFTWARE.
|
|||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-framework-bom</artifactId>
|
||||
<version>6.2.3</version>
|
||||
<version>6.2.4</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
|
|
|
@ -1810,6 +1810,7 @@ public class Functions {
|
|||
return s.toString();
|
||||
}
|
||||
|
||||
@SuppressFBWarnings(value = "INFORMATION_EXPOSURE_THROUGH_AN_ERROR_MESSAGE", justification = "Jenkins handles this issue differently or doesn't care about it")
|
||||
private static void doPrintStackTrace(@NonNull StringBuilder s, @NonNull Throwable t, @CheckForNull Throwable higher, @NonNull String prefix, @NonNull Set<Throwable> encountered) {
|
||||
if (!encountered.add(t)) {
|
||||
s.append("<cycle to ").append(t).append(">\n");
|
||||
|
@ -1863,6 +1864,7 @@ public class Functions {
|
|||
* @param pw the log
|
||||
* @since 2.43
|
||||
*/
|
||||
@SuppressFBWarnings(value = "XSS_SERVLET", justification = "TODO needs triage")
|
||||
public static void printStackTrace(@CheckForNull Throwable t, @NonNull PrintWriter pw) {
|
||||
pw.println(printThrowable(t).trim());
|
||||
}
|
||||
|
|
|
@ -1000,6 +1000,7 @@ public abstract class Launcher {
|
|||
}
|
||||
|
||||
@Override
|
||||
@SuppressFBWarnings(value = "COMMAND_INJECTION", justification = "TODO needs triage")
|
||||
public Channel launchChannel(String[] cmd, OutputStream out, FilePath workDir, Map<String, String> envVars) throws IOException {
|
||||
printCommandLine(cmd, workDir);
|
||||
|
||||
|
@ -1437,11 +1438,15 @@ public abstract class Launcher {
|
|||
this.envOverrides = envOverrides;
|
||||
}
|
||||
|
||||
@SuppressFBWarnings(value = "COMMAND_INJECTION", justification = "TODO needs triage")
|
||||
private Process launchProcess() throws IOException {
|
||||
return Runtime.getRuntime()
|
||||
.exec(cmd, Util.mapToEnv(inherit(envOverrides)), workDir == null ? null : new File(workDir));
|
||||
}
|
||||
|
||||
@Override
|
||||
public OutputStream call() throws IOException {
|
||||
Process p = Runtime.getRuntime().exec(cmd,
|
||||
Util.mapToEnv(inherit(envOverrides)),
|
||||
workDir == null ? null : new File(workDir));
|
||||
Process p = launchProcess();
|
||||
|
||||
List<String> cmdLines = Arrays.asList(cmd);
|
||||
new StreamCopyThread("stdin copier for remote agent on " + cmdLines,
|
||||
|
|
|
@ -363,6 +363,7 @@ public abstract class PluginManager extends AbstractModelObject implements OnMas
|
|||
* This is used to report a message that Jenkins needs to be restarted
|
||||
* for new plugins to take effect.
|
||||
*/
|
||||
@SuppressFBWarnings(value = "PA_PUBLIC_PRIMITIVE_ATTRIBUTE", justification = "Preserve API compatibility")
|
||||
public volatile boolean pluginUploaded = false;
|
||||
|
||||
/**
|
||||
|
|
|
@ -27,6 +27,7 @@ package hudson;
|
|||
import com.thoughtworks.xstream.XStream;
|
||||
import edu.umd.cs.findbugs.annotations.CheckForNull;
|
||||
import edu.umd.cs.findbugs.annotations.NonNull;
|
||||
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
||||
import hudson.model.AbstractDescribableImpl;
|
||||
import hudson.model.Descriptor;
|
||||
import hudson.model.Saveable;
|
||||
|
@ -113,6 +114,7 @@ public final class ProxyConfiguration extends AbstractDescribableImpl<ProxyConfi
|
|||
* @see #getNoProxyHostPatterns()
|
||||
*/
|
||||
@Restricted(NoExternalUse.class)
|
||||
@SuppressFBWarnings(value = "PA_PUBLIC_PRIMITIVE_ATTRIBUTE", justification = "Preserve API compatibility")
|
||||
public String noProxyHost;
|
||||
|
||||
@Deprecated
|
||||
|
|
|
@ -206,6 +206,7 @@ public final class TcpSlaveAgentListener extends Thread {
|
|||
/**
|
||||
* Initiates the shuts down of the listener.
|
||||
*/
|
||||
@SuppressFBWarnings(value = "UNENCRYPTED_SOCKET", justification = "TODO needs triage")
|
||||
public void shutdown() {
|
||||
shuttingDown = true;
|
||||
try {
|
||||
|
|
|
@ -124,6 +124,7 @@ public abstract class CLICommand implements ExtensionPoint, Cloneable {
|
|||
* (In contrast, calling {@code System.out.println(...)} would print out
|
||||
* the message to the server log file, which is probably not what you want.
|
||||
*/
|
||||
@SuppressFBWarnings(value = "PA_PUBLIC_PRIMITIVE_ATTRIBUTE", justification = "Preserve API compatibility")
|
||||
public transient PrintStream stdout, stderr;
|
||||
|
||||
/**
|
||||
|
@ -139,6 +140,7 @@ public abstract class CLICommand implements ExtensionPoint, Cloneable {
|
|||
* <p>
|
||||
* This input stream is buffered to hide the latency in the remoting.
|
||||
*/
|
||||
@SuppressFBWarnings(value = "PA_PUBLIC_PRIMITIVE_ATTRIBUTE", justification = "Preserve API compatibility")
|
||||
public transient InputStream stdin;
|
||||
|
||||
/**
|
||||
|
@ -150,6 +152,7 @@ public abstract class CLICommand implements ExtensionPoint, Cloneable {
|
|||
/**
|
||||
* The locale of the client. Messages should be formatted with this resource.
|
||||
*/
|
||||
@SuppressFBWarnings(value = "PA_PUBLIC_PRIMITIVE_ATTRIBUTE", justification = "Preserve API compatibility")
|
||||
public transient Locale locale;
|
||||
|
||||
/**
|
||||
|
|
|
@ -208,6 +208,7 @@ public class Connection {
|
|||
return new Connection(i, o);
|
||||
}
|
||||
|
||||
@SuppressFBWarnings(value = "STATIC_IV", justification = "TODO needs triage")
|
||||
private IvParameterSpec createIv(SecretKey sessionKey) {
|
||||
return new IvParameterSpec(sessionKey.getEncoded());
|
||||
}
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
|
||||
package hudson.cli;
|
||||
|
||||
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
||||
import hudson.Extension;
|
||||
import hudson.model.Item;
|
||||
import hudson.model.TopLevelItem;
|
||||
|
@ -47,6 +48,7 @@ public class CopyJobCommand extends CLICommand {
|
|||
public TopLevelItem src;
|
||||
|
||||
@Argument(metaVar = "DST", usage = "Name of the new job to be created.", index = 1, required = true)
|
||||
@SuppressFBWarnings(value = "PA_PUBLIC_PRIMITIVE_ATTRIBUTE", justification = "Preserve API compatibility")
|
||||
public String dst;
|
||||
|
||||
@Override
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
|
||||
package hudson.cli;
|
||||
|
||||
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
||||
import hudson.Extension;
|
||||
import hudson.model.Item;
|
||||
import jenkins.model.Jenkins;
|
||||
|
@ -43,6 +44,7 @@ public class CreateJobCommand extends CLICommand {
|
|||
}
|
||||
|
||||
@Argument(metaVar = "NAME", usage = "Name of the job to create", required = true)
|
||||
@SuppressFBWarnings(value = "PA_PUBLIC_PRIMITIVE_ATTRIBUTE", justification = "Preserve API compatibility")
|
||||
public String name;
|
||||
|
||||
@Override
|
||||
|
|
|
@ -25,6 +25,7 @@ public class SetBuildDescriptionCommand extends CLICommand implements Serializab
|
|||
public int number;
|
||||
|
||||
@Argument(metaVar = "DESCRIPTION", required = true, usage = "Description to be set. '=' to read from stdin.", index = 2)
|
||||
@SuppressFBWarnings(value = "PA_PUBLIC_PRIMITIVE_ATTRIBUTE", justification = "Preserve API compatibility")
|
||||
public String description;
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package hudson.cli;
|
||||
|
||||
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
||||
import hudson.Extension;
|
||||
import hudson.model.Job;
|
||||
import hudson.model.Run;
|
||||
|
@ -23,6 +24,7 @@ public class SetBuildDisplayNameCommand extends CLICommand implements Serializab
|
|||
public int number;
|
||||
|
||||
@Argument(metaVar = "DISPLAYNAME", required = true, usage = "DisplayName to be set. '-' to read from stdin.", index = 2)
|
||||
@SuppressFBWarnings(value = "PA_PUBLIC_PRIMITIVE_ATTRIBUTE", justification = "Preserve API compatibility")
|
||||
public String displayName;
|
||||
|
||||
@Override
|
||||
|
|
|
@ -193,6 +193,7 @@ public abstract class ConsoleNote<T> implements Serializable, Describable<Consol
|
|||
* Technically, this method only works if the {@link Writer} to {@link OutputStream}
|
||||
* encoding is ASCII compatible.
|
||||
*/
|
||||
@SuppressFBWarnings(value = "DM_DEFAULT_ENCODING", justification = "TODO needs triage")
|
||||
public void encodeTo(Writer out) throws IOException {
|
||||
out.write(encodeToBytes().toString());
|
||||
}
|
||||
|
@ -223,6 +224,7 @@ public abstract class ConsoleNote<T> implements Serializable, Describable<Consol
|
|||
/**
|
||||
* Works like {@link #encodeTo(Writer)} but obtain the result as a string.
|
||||
*/
|
||||
@SuppressFBWarnings(value = "DM_DEFAULT_ENCODING", justification = "TODO needs triage")
|
||||
public String encode() throws IOException {
|
||||
return encodeToBytes().toString();
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@ package hudson.lifecycle;
|
|||
import static hudson.util.jna.Kernel32.MOVEFILE_DELAY_UNTIL_REBOOT;
|
||||
import static hudson.util.jna.Kernel32.MOVEFILE_REPLACE_EXISTING;
|
||||
|
||||
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
||||
import hudson.FilePath;
|
||||
import hudson.Launcher.LocalLauncher;
|
||||
import hudson.Util;
|
||||
|
@ -118,6 +119,7 @@ public class WindowsServiceLifecycle extends Lifecycle {
|
|||
}
|
||||
|
||||
@Override
|
||||
@SuppressFBWarnings(value = "DM_DEFAULT_ENCODING", justification = "TODO needs triage")
|
||||
public void restart() throws IOException, InterruptedException {
|
||||
Jenkins jenkins = Jenkins.getInstanceOrNull();
|
||||
try {
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
package hudson.model;
|
||||
|
||||
import edu.umd.cs.findbugs.annotations.CheckForNull;
|
||||
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
||||
import hudson.search.Search;
|
||||
import hudson.search.UserSearchProperty;
|
||||
import jakarta.servlet.ServletException;
|
||||
|
@ -90,6 +91,7 @@ public class AutoCompletionCandidates implements HttpResponse {
|
|||
* The nearby contextual {@link ItemGroup} to resolve relative job names from.
|
||||
* @since 1.489
|
||||
*/
|
||||
@SuppressFBWarnings(value = "EC_UNRELATED_TYPES_USING_POINTER_EQUALITY", justification = "TODO needs triage")
|
||||
public static <T extends Item> AutoCompletionCandidates ofJobNames(final Class<T> type, final String value, @CheckForNull Item self, ItemGroup container) {
|
||||
if (self == container)
|
||||
container = self.getParent();
|
||||
|
|
|
@ -112,6 +112,7 @@ import jenkins.model.DisplayExecutor;
|
|||
import jenkins.model.IComputer;
|
||||
import jenkins.model.IDisplayExecutor;
|
||||
import jenkins.model.Jenkins;
|
||||
import jenkins.search.SearchGroup;
|
||||
import jenkins.security.ExtendedReadRedaction;
|
||||
import jenkins.security.ImpersonatingExecutorService;
|
||||
import jenkins.security.MasterToSlaveCallable;
|
||||
|
@ -1112,6 +1113,11 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces
|
|||
return getUrl();
|
||||
}
|
||||
|
||||
@Override
|
||||
public SearchGroup getSearchGroup() {
|
||||
return SearchGroup.get(SearchGroup.ComputerSearchGroup.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link RetentionStrategy} associated with this computer.
|
||||
*
|
||||
|
@ -1676,6 +1682,7 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces
|
|||
relocateOldLogs(Jenkins.get().getRootDir());
|
||||
}
|
||||
|
||||
@SuppressFBWarnings(value = "REDOS", justification = "TODO needs triage")
|
||||
/*package*/ static void relocateOldLogs(File dir) {
|
||||
final Pattern logfile = Pattern.compile("slave-(.*)\\.log(\\.[0-9]+)?");
|
||||
File[] logfiles = dir.listFiles((dir1, name) -> logfile.matcher(name).matches());
|
||||
|
|
|
@ -869,9 +869,11 @@ public abstract class Descriptor<T extends Describable<T>> implements Loadable,
|
|||
public boolean configure(StaplerRequest2 req, JSONObject json) throws FormException {
|
||||
if (Util.isOverridden(Descriptor.class, getClass(), "configure", StaplerRequest.class, JSONObject.class)) {
|
||||
return configure(StaplerRequest.fromStaplerRequest2(req), json);
|
||||
} else {
|
||||
} else if (Util.isOverridden(Descriptor.class, getClass(), "configure", StaplerRequest.class)) {
|
||||
// compatibility
|
||||
return configure(StaplerRequest.fromStaplerRequest2(req));
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -96,6 +96,7 @@ public class FileParameterValue extends ParameterValue {
|
|||
* @deprecated use {@link #FileParameterValue(String, FileItem)}
|
||||
*/
|
||||
@Deprecated
|
||||
@SuppressFBWarnings(value = "FILE_UPLOAD_FILENAME", justification = "TODO needs triage")
|
||||
public FileParameterValue(String name, org.apache.commons.fileupload.FileItem file) {
|
||||
this(name, file.toFileUpload2FileItem(), FilenameUtils.getName(file.getName()));
|
||||
}
|
||||
|
|
|
@ -39,6 +39,7 @@ import hudson.util.Secret;
|
|||
import java.io.IOException;
|
||||
import java.util.Collection;
|
||||
import jenkins.model.Jenkins;
|
||||
import jenkins.search.SearchGroup;
|
||||
import jenkins.util.SystemProperties;
|
||||
import jenkins.util.io.OnMaster;
|
||||
import org.kohsuke.stapler.StaplerRequest2;
|
||||
|
@ -249,6 +250,11 @@ public interface Item extends PersistenceRoot, SearchableModelObject, AccessCont
|
|||
*/
|
||||
void delete() throws IOException, InterruptedException;
|
||||
|
||||
@Override
|
||||
default SearchGroup getSearchGroup() {
|
||||
return SearchGroup.get(SearchGroup.ItemSearchGroup.class);
|
||||
}
|
||||
|
||||
PermissionGroup PERMISSIONS = new PermissionGroup(Item.class, Messages._Item_Permissions_Title());
|
||||
Permission CREATE =
|
||||
new Permission(
|
||||
|
|
|
@ -193,6 +193,7 @@ public abstract class Job<JobT extends Job<JobT, RunT>, RunT extends Run<JobT, R
|
|||
protected CopyOnWriteList<JobProperty<? super JobT>> properties = new CopyOnWriteList<>();
|
||||
|
||||
@Restricted(NoExternalUse.class)
|
||||
@SuppressFBWarnings(value = "PA_PUBLIC_PRIMITIVE_ATTRIBUTE", justification = "Preserve API compatibility")
|
||||
public transient RunIdMigrator runIdMigrator;
|
||||
|
||||
protected Job(ItemGroup parent, String name) {
|
||||
|
|
|
@ -1203,12 +1203,14 @@ public abstract class Run<JobT extends Job<JobT, RunT>, RunT extends Run<JobT, R
|
|||
}
|
||||
|
||||
/** {@link Run.ArtifactList} without the implicit link to {@link Run} */
|
||||
@SuppressFBWarnings(value = "EQ_DOESNT_OVERRIDE_EQUALS", justification = "TODO needs triage")
|
||||
private static final class SerializableArtifactList extends ArrayList<SerializableArtifact> {
|
||||
private static final long serialVersionUID = 1L;
|
||||
private LinkedHashMap<SerializableArtifact, String> tree = new LinkedHashMap<>();
|
||||
private int idSeq = 0;
|
||||
}
|
||||
|
||||
@SuppressFBWarnings(value = "EQ_DOESNT_OVERRIDE_EQUALS", justification = "TODO needs triage")
|
||||
public final class ArtifactList extends ArrayList<Artifact> {
|
||||
private static final long serialVersionUID = 1L;
|
||||
/**
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
|
||||
package hudson.model;
|
||||
|
||||
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
||||
import hudson.EnvVars;
|
||||
import hudson.Util;
|
||||
import hudson.util.VariableResolver;
|
||||
|
@ -40,6 +41,7 @@ import org.kohsuke.stapler.export.Exported;
|
|||
public class StringParameterValue extends ParameterValue {
|
||||
@Exported(visibility = 4)
|
||||
@Restricted(NoExternalUse.class)
|
||||
@SuppressFBWarnings(value = "PA_PUBLIC_PRIMITIVE_ATTRIBUTE", justification = "Preserve API compatibility")
|
||||
public String value;
|
||||
|
||||
@DataBoundConstructor
|
||||
|
|
|
@ -208,7 +208,7 @@ public class UpdateSite {
|
|||
* Opens a connection to the given URL
|
||||
* @param src the url to connect to
|
||||
* @return A {@code URLConnection} for the given src URL
|
||||
* @since TODO
|
||||
* @since 2.499
|
||||
*/
|
||||
public URLConnection connect(URL src) throws IOException {
|
||||
return ProxyConfiguration.open(src);
|
||||
|
@ -219,7 +219,7 @@ public class UpdateSite {
|
|||
*
|
||||
* @param src The location of the resource on the network
|
||||
* @throws IOException if the validation fails
|
||||
* @since TODO
|
||||
* @since 2.499
|
||||
*/
|
||||
public void preValidate(URL src) throws IOException {
|
||||
// no validation needed in the default setup
|
||||
|
|
|
@ -233,6 +233,7 @@ public class UsageStatistics extends PageDecorator implements PersistentDescript
|
|||
* with the asymmetric cipher. The rest of the stream will be encrypted by a symmetric cipher.
|
||||
*/
|
||||
public static final class CombinedCipherOutputStream extends FilterOutputStream {
|
||||
@SuppressFBWarnings(value = "STATIC_IV", justification = "TODO needs triage")
|
||||
public CombinedCipherOutputStream(OutputStream out, Cipher asym, String algorithm) throws IOException, GeneralSecurityException {
|
||||
super(out);
|
||||
|
||||
|
|
|
@ -72,6 +72,7 @@ import jenkins.model.Jenkins;
|
|||
import jenkins.model.Loadable;
|
||||
import jenkins.model.ModelObjectWithContextMenu;
|
||||
import jenkins.scm.RunWithSCM;
|
||||
import jenkins.search.SearchGroup;
|
||||
import jenkins.security.ImpersonatingUserDetailsService2;
|
||||
import jenkins.security.LastGrantedAuthoritiesProperty;
|
||||
import jenkins.security.UserDetailsCache;
|
||||
|
@ -171,6 +172,7 @@ public class User extends AbstractModelObject implements AccessControlled, Descr
|
|||
private static final String[] ILLEGAL_PERSISTED_USERNAMES = new String[]{ACL.ANONYMOUS_USERNAME,
|
||||
ACL.SYSTEM_USERNAME, UNKNOWN_USERNAME};
|
||||
|
||||
@SuppressFBWarnings(value = "SS_SHOULD_BE_STATIC", justification = "Reserved for future use")
|
||||
private final int version = 10; // Not currently used, but it may be helpful in the future to store a version.
|
||||
private String id;
|
||||
private volatile String fullName;
|
||||
|
@ -284,6 +286,11 @@ public class User extends AbstractModelObject implements AccessControlled, Descr
|
|||
return UserAvatarResolver.resolve(this, "48x48");
|
||||
}
|
||||
|
||||
@Override
|
||||
public SearchGroup getSearchGroup() {
|
||||
return SearchGroup.get(SearchGroup.UserSearchGroup.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* The URL of the user page.
|
||||
*/
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
package hudson.model;
|
||||
|
||||
import edu.umd.cs.findbugs.annotations.CheckForNull;
|
||||
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
||||
import hudson.Extension;
|
||||
import hudson.ExtensionList;
|
||||
import hudson.Util;
|
||||
|
@ -57,6 +58,7 @@ public class UserIdMapper {
|
|||
private static final Logger LOGGER = Logger.getLogger(UserIdMapper.class.getName());
|
||||
private static final int PREFIX_MAX = 15;
|
||||
private static final Pattern PREFIX_PATTERN = Pattern.compile("[^A-Za-z0-9]");
|
||||
@SuppressFBWarnings(value = "SS_SHOULD_BE_STATIC", justification = "Reserved for future use")
|
||||
private final int version = 1; // Not currently used, but it may be helpful in the future to store a version.
|
||||
|
||||
private transient File usersDirectory;
|
||||
|
|
|
@ -95,6 +95,7 @@ import jenkins.model.ModelObjectWithContextMenu;
|
|||
import jenkins.model.item_category.Categories;
|
||||
import jenkins.model.item_category.Category;
|
||||
import jenkins.model.item_category.ItemCategory;
|
||||
import jenkins.search.SearchGroup;
|
||||
import jenkins.security.ExtendedReadRedaction;
|
||||
import jenkins.security.stapler.StaplerNotDispatchable;
|
||||
import jenkins.util.xml.XMLUtils;
|
||||
|
@ -567,6 +568,11 @@ public abstract class View extends AbstractModelObject implements AccessControll
|
|||
return "symbol-jobs";
|
||||
}
|
||||
|
||||
@Override
|
||||
public SearchGroup getSearchGroup() {
|
||||
return SearchGroup.get(SearchGroup.ViewSearchGroup.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the transient {@link Action}s associated with the top page.
|
||||
*
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
package hudson.os;
|
||||
|
||||
import edu.umd.cs.findbugs.annotations.NonNull;
|
||||
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
||||
import hudson.Functions;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
@ -95,6 +96,7 @@ public class WindowsUtil {
|
|||
* @param argv arguments to be quoted or escaped for {@code cmd.exe /C ...}.
|
||||
* @return properly quoted and escaped arguments to {@code cmd.exe /C ...}.
|
||||
*/
|
||||
@SuppressFBWarnings(value = "COMMAND_INJECTION", justification = "TODO needs triage")
|
||||
public static @NonNull Process execCmd(String... argv) throws IOException {
|
||||
String command = Arrays.stream(argv).map(WindowsUtil::quoteArgumentForCmd).collect(Collectors.joining(" "));
|
||||
return Runtime.getRuntime().exec(new String[]{"cmd.exe", "/C", command});
|
||||
|
|
|
@ -29,6 +29,8 @@ import static jakarta.servlet.http.HttpServletResponse.SC_NOT_FOUND;
|
|||
|
||||
import edu.umd.cs.findbugs.annotations.CheckForNull;
|
||||
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
||||
import hudson.ExtensionComponent;
|
||||
import hudson.ExtensionList;
|
||||
import hudson.Util;
|
||||
import hudson.util.EditDistance;
|
||||
import io.jenkins.servlet.ServletExceptionWrapper;
|
||||
|
@ -37,12 +39,16 @@ import java.io.IOException;
|
|||
import java.util.AbstractList;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.stream.Collectors;
|
||||
import jenkins.model.Jenkins;
|
||||
import jenkins.search.SearchGroup;
|
||||
import jenkins.security.stapler.StaplerNotDispatchable;
|
||||
import jenkins.util.MemoryReductionUtil;
|
||||
import jenkins.util.SystemProperties;
|
||||
|
@ -171,11 +177,26 @@ public class Search implements StaplerProxy {
|
|||
|
||||
if (iconName.startsWith("symbol")) {
|
||||
r.suggestions.add(new Item(curItem.getPath(), curItem.getUrl(),
|
||||
Symbol.get(new SymbolRequest.Builder().withRaw(iconName).build())));
|
||||
Symbol.get(new SymbolRequest.Builder().withRaw(iconName).build()), "symbol", curItem.item.getSearchGroup().getDisplayName()));
|
||||
} else {
|
||||
r.suggestions.add(new Item(curItem.getPath(), curItem.getUrl(), iconName, "image"));
|
||||
r.suggestions.add(new Item(curItem.getPath(), curItem.getUrl(), iconName, "image", curItem.item.getSearchGroup().getDisplayName()));
|
||||
}
|
||||
}
|
||||
|
||||
// Sort results by group
|
||||
ExtensionList<SearchGroup> groupsExtensionList = ExtensionList.lookup(SearchGroup.class);
|
||||
List<ExtensionComponent<SearchGroup>> components = groupsExtensionList.getComponents();
|
||||
Map<String, Double> searchGroupOrdinal = components.stream()
|
||||
.collect(Collectors.toMap(
|
||||
(k) -> k.getInstance().getDisplayName(),
|
||||
ExtensionComponent::ordinal
|
||||
));
|
||||
r.suggestions.sort(
|
||||
Comparator.comparingDouble((Item item) -> searchGroupOrdinal.getOrDefault(item.getGroup(), Double.MAX_VALUE))
|
||||
.reversed()
|
||||
.thenComparing(item -> item.name)
|
||||
);
|
||||
|
||||
rsp.serveExposedBean(req, r, new ExportConfig());
|
||||
}
|
||||
|
||||
|
@ -250,6 +271,7 @@ public class Search implements StaplerProxy {
|
|||
return builder.make();
|
||||
}
|
||||
|
||||
@SuppressFBWarnings(value = "EQ_DOESNT_OVERRIDE_EQUALS", justification = "TODO needs triage")
|
||||
private static class SearchResultImpl extends ArrayList<SuggestedItem> implements SearchResult {
|
||||
|
||||
private boolean hasMoreResults = false;
|
||||
|
@ -270,7 +292,6 @@ public class Search implements StaplerProxy {
|
|||
public static class Item {
|
||||
|
||||
@Exported
|
||||
@SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD", justification = "read by Stapler")
|
||||
public String name;
|
||||
|
||||
private final String url;
|
||||
|
@ -279,22 +300,19 @@ public class Search implements StaplerProxy {
|
|||
|
||||
private final String icon;
|
||||
|
||||
private final String group;
|
||||
|
||||
public Item(String name) {
|
||||
this(name, null, null);
|
||||
this(name, null, null, "symbol", null);
|
||||
}
|
||||
|
||||
public Item(String name, String url, String icon) {
|
||||
public Item(String name, String url, String icon, String type, String group) {
|
||||
this.name = name;
|
||||
this.url = url;
|
||||
this.icon = icon;
|
||||
this.type = "symbol";
|
||||
}
|
||||
|
||||
public Item(String name, String url, String icon, String type) {
|
||||
this.name = name;
|
||||
this.url = url;
|
||||
this.icon = icon;
|
||||
this.type = type;
|
||||
this.group = group;
|
||||
}
|
||||
|
||||
@Exported
|
||||
|
@ -311,6 +329,11 @@ public class Search implements StaplerProxy {
|
|||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
@Exported
|
||||
public String getGroup() {
|
||||
return group;
|
||||
}
|
||||
}
|
||||
|
||||
private enum Mode {
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
package hudson.search;
|
||||
|
||||
import hudson.model.Build;
|
||||
import jenkins.search.SearchGroup;
|
||||
import org.jenkins.ui.icon.IconSpec;
|
||||
|
||||
/**
|
||||
|
@ -63,6 +64,10 @@ public interface SearchItem {
|
|||
return "symbol-search";
|
||||
}
|
||||
|
||||
default SearchGroup getSearchGroup() {
|
||||
return SearchGroup.get(SearchGroup.UnclassifiedSearchGroup.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the {@link SearchIndex} to further search sub items inside this item.
|
||||
*
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package hudson.security;
|
||||
|
||||
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
||||
import io.jenkins.servlet.http.HttpServletResponseWrapper;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import java.io.PrintWriter;
|
||||
|
@ -75,6 +76,7 @@ public class AccessDeniedException3 extends AccessDeniedException {
|
|||
* This method is similar to {@link #reportAsHeaders(HttpServletResponse)} for the intention
|
||||
* but instead of using HTTP headers, this version is meant to go inside the payload.
|
||||
*/
|
||||
@SuppressFBWarnings(value = "XSS_SERVLET", justification = "TODO needs triage")
|
||||
public void report(PrintWriter w) {
|
||||
w.println("You are authenticated as: " + authentication.getName());
|
||||
w.println("Groups that you are in:");
|
||||
|
|
|
@ -26,6 +26,7 @@ package hudson.security;
|
|||
|
||||
import edu.umd.cs.findbugs.annotations.CheckForNull;
|
||||
import edu.umd.cs.findbugs.annotations.NonNull;
|
||||
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
||||
import hudson.model.Hudson;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
|
@ -105,6 +106,7 @@ public final class Permission {
|
|||
*
|
||||
* @since 1.325
|
||||
*/
|
||||
@SuppressFBWarnings(value = "PA_PUBLIC_PRIMITIVE_ATTRIBUTE", justification = "Preserve API compatibility")
|
||||
public boolean enabled;
|
||||
|
||||
/**
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
|
||||
package hudson.slaves;
|
||||
|
||||
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
||||
import hudson.FilePath;
|
||||
import hudson.Launcher.LocalLauncher;
|
||||
import hudson.Proc;
|
||||
|
@ -219,6 +220,7 @@ public class Channels {
|
|||
* @deprecated removed without replacement
|
||||
*/
|
||||
@Deprecated
|
||||
@SuppressFBWarnings(value = "UNENCRYPTED_SERVER_SOCKET", justification = "TODO needs triage")
|
||||
public static Channel newJVM(String displayName, TaskListener listener, JVMBuilder vmb, FilePath workDir, ClasspathBuilder classpath) throws IOException {
|
||||
ServerSocket serverSocket = new ServerSocket();
|
||||
serverSocket.bind(new InetSocketAddress("localhost", 0));
|
||||
|
|
|
@ -58,6 +58,7 @@ public class JNLPLauncher extends ComputerLauncher {
|
|||
* Deprecated (only used with deprecated {@code -jnlpUrl} mode), but cannot mark it as such without breaking CasC.
|
||||
*/
|
||||
@CheckForNull
|
||||
@SuppressFBWarnings(value = "PA_PUBLIC_PRIMITIVE_ATTRIBUTE", justification = "Preserve API compatibility")
|
||||
public String tunnel;
|
||||
|
||||
/**
|
||||
|
|
|
@ -31,6 +31,7 @@ import com.thoughtworks.xstream.converters.UnmarshallingContext;
|
|||
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
|
||||
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
|
||||
import edu.umd.cs.findbugs.annotations.CheckForNull;
|
||||
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
||||
import hudson.model.Node;
|
||||
import hudson.util.RobustCollectionConverter;
|
||||
import java.util.ArrayList;
|
||||
|
@ -47,6 +48,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
|
|||
*
|
||||
* @author Kohsuke Kawaguchi
|
||||
*/
|
||||
@SuppressFBWarnings(value = "EQ_DOESNT_OVERRIDE_EQUALS", justification = "TODO needs triage")
|
||||
public final class NodeList extends ArrayList<Node> {
|
||||
|
||||
private Map<String, Node> map = new HashMap<>();
|
||||
|
|
|
@ -955,6 +955,7 @@ public class SlaveComputer extends Computer {
|
|||
}
|
||||
|
||||
@Override
|
||||
@SuppressFBWarnings(value = "UR_UNINIT_READ_CALLED_FROM_SUPER_CONSTRUCTOR", justification = "TODO needs triage")
|
||||
protected void setNode(final Node node) {
|
||||
super.setNode(node);
|
||||
launcher = grabLauncher(node);
|
||||
|
|
|
@ -485,6 +485,7 @@ public class Fingerprinter extends Recorder implements Serializable, DependencyD
|
|||
* the result, even if it doesn't exist
|
||||
* @since 1.430
|
||||
*/
|
||||
@SuppressFBWarnings(value = "EC_UNRELATED_TYPES_USING_POINTER_EQUALITY", justification = "TODO needs triage")
|
||||
public Map<AbstractProject, Integer> getDependencies(boolean includeMissing) {
|
||||
Map<AbstractProject, Integer> r = new HashMap<>();
|
||||
|
||||
|
|
|
@ -127,6 +127,7 @@ public class Maven extends Builder {
|
|||
*
|
||||
* @since 1.322
|
||||
*/
|
||||
@SuppressFBWarnings(value = "PA_PUBLIC_PRIMITIVE_ATTRIBUTE", justification = "Preserve API compatibility")
|
||||
public boolean usePrivateRepository;
|
||||
|
||||
/**
|
||||
|
|
|
@ -252,6 +252,7 @@ public abstract class Trigger<J extends Item> implements Describable<Trigger<?>>
|
|||
|
||||
private static Future previousSynchronousPolling;
|
||||
|
||||
@SuppressFBWarnings(value = "LI_LAZY_INIT_STATIC", justification = "TODO needs triage")
|
||||
public static void checkTriggers(final Calendar cal) {
|
||||
Jenkins inst = Jenkins.get();
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ package hudson.util;
|
|||
import com.google.common.annotations.VisibleForTesting;
|
||||
import edu.umd.cs.findbugs.annotations.CheckForNull;
|
||||
import edu.umd.cs.findbugs.annotations.NonNull;
|
||||
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
||||
import hudson.Util;
|
||||
import jakarta.servlet.ServletOutputStream;
|
||||
import java.awt.Color;
|
||||
|
@ -72,6 +73,7 @@ public abstract class Graph {
|
|||
private final long timestamp;
|
||||
private final int defaultWidth;
|
||||
private final int defaultHeight;
|
||||
@SuppressFBWarnings(value = "SS_SHOULD_BE_STATIC", justification = "Reserved for future use")
|
||||
private final int defaultScale = 1;
|
||||
private volatile JFreeChart graph;
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
package hudson.util;
|
||||
|
||||
import edu.umd.cs.findbugs.annotations.NonNull;
|
||||
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
||||
import jakarta.servlet.ServletException;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
@ -44,6 +45,7 @@ import org.kohsuke.stapler.StaplerResponse2;
|
|||
*
|
||||
* @author Kohsuke Kawaguchi
|
||||
*/
|
||||
@SuppressFBWarnings(value = "NM_SAME_SIMPLE_NAME_AS_SUPERCLASS", justification = "Used for backward compatibility and extending utility classes")
|
||||
public class HttpResponses extends org.kohsuke.stapler.HttpResponses {
|
||||
public static HttpResponse staticResource(File f) throws IOException {
|
||||
return staticResource(f.toURI().toURL());
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
package hudson.util;
|
||||
|
||||
import edu.umd.cs.findbugs.annotations.CheckForNull;
|
||||
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
||||
import java.beans.PropertyDescriptor;
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.lang.reflect.AnnotatedElement;
|
||||
|
@ -45,6 +46,7 @@ import org.kohsuke.stapler.ClassDescriptor;
|
|||
* @author Kohsuke Kawaguchi
|
||||
* @since 1.351
|
||||
*/
|
||||
@SuppressFBWarnings(value = "NM_SAME_SIMPLE_NAME_AS_SUPERCLASS", justification = "Used for backward compatibility and extending utility classes")
|
||||
public class ReflectionUtils extends org.springframework.util.ReflectionUtils {
|
||||
/**
|
||||
* Finds a public method of the given name, regardless of its parameter definitions,
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
package hudson.util;
|
||||
|
||||
import edu.umd.cs.findbugs.annotations.NonNull;
|
||||
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
||||
import hudson.Util;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
|
@ -111,6 +112,7 @@ public class TextFile {
|
|||
/**
|
||||
* Reads the first N characters or until we hit EOF.
|
||||
*/
|
||||
@SuppressFBWarnings(value = "DM_DEFAULT_ENCODING", justification = "TODO needs triage")
|
||||
public @NonNull String head(int numChars) throws IOException {
|
||||
char[] buf = new char[numChars];
|
||||
int read = 0;
|
||||
|
|
|
@ -26,6 +26,7 @@ package hudson.widgets;
|
|||
|
||||
import edu.umd.cs.findbugs.annotations.CheckForNull;
|
||||
import edu.umd.cs.findbugs.annotations.NonNull;
|
||||
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
||||
import hudson.Extension;
|
||||
import hudson.Functions;
|
||||
import hudson.model.Job;
|
||||
|
@ -71,6 +72,7 @@ public class HistoryWidget<O extends ModelObject, T> extends Widget {
|
|||
/**
|
||||
* The given data model of records. Newer ones first.
|
||||
*/
|
||||
@SuppressFBWarnings(value = "PA_PUBLIC_PRIMITIVE_ATTRIBUTE", justification = "Preserve API compatibility")
|
||||
public Iterable<T> baseList;
|
||||
|
||||
/**
|
||||
|
|
|
@ -633,6 +633,7 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
|
|||
*/
|
||||
public final transient PluginManager pluginManager;
|
||||
|
||||
@SuppressFBWarnings(value = "PA_PUBLIC_PRIMITIVE_ATTRIBUTE", justification = "Preserve API compatibility")
|
||||
public transient volatile TcpSlaveAgentListener tcpSlaveAgentListener;
|
||||
|
||||
private final transient Object tcpSlaveAgentListenerLock = new Object();
|
||||
|
@ -870,6 +871,7 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
|
|||
/**
|
||||
* HTTP proxy configuration.
|
||||
*/
|
||||
@SuppressFBWarnings(value = "PA_PUBLIC_PRIMITIVE_ATTRIBUTE", justification = "Preserve API compatibility")
|
||||
public transient volatile ProxyConfiguration proxy;
|
||||
|
||||
/**
|
||||
|
@ -5619,10 +5621,11 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
|
|||
/**
|
||||
* Version number of this Jenkins.
|
||||
*/
|
||||
@SuppressFBWarnings(value = "MS_CANNOT_BE_FINAL", justification = "cannot be made immutable without breaking compatibility")
|
||||
@SuppressFBWarnings(value = {"MS_CANNOT_BE_FINAL", "PA_PUBLIC_PRIMITIVE_ATTRIBUTE"}, justification = "Preserve API compatibility")
|
||||
public static String VERSION = UNCOMPUTED_VERSION;
|
||||
|
||||
@Restricted(NoExternalUse.class)
|
||||
@SuppressFBWarnings(value = "PA_PUBLIC_PRIMITIVE_ATTRIBUTE", justification = "Preserve API compatibility")
|
||||
public static String CHANGELOG_URL;
|
||||
|
||||
/**
|
||||
|
@ -5685,6 +5688,7 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
|
|||
/**
|
||||
* Hash of {@link #VERSION}.
|
||||
*/
|
||||
@SuppressFBWarnings(value = "PA_PUBLIC_PRIMITIVE_ATTRIBUTE", justification = "Preserve API compatibility")
|
||||
public static String VERSION_HASH;
|
||||
|
||||
/**
|
||||
|
@ -5694,7 +5698,7 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
|
|||
* 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")
|
||||
@SuppressFBWarnings(value = {"MS_CANNOT_BE_FINAL", "PA_PUBLIC_PRIMITIVE_ATTRIBUTE"}, justification = "Preserve API compatibility")
|
||||
public static String SESSION_HASH;
|
||||
|
||||
/**
|
||||
|
@ -5704,7 +5708,7 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
|
|||
* <p>
|
||||
* Value computed in {@link WebAppMain}.
|
||||
*/
|
||||
@SuppressFBWarnings(value = "MS_CANNOT_BE_FINAL", justification = "cannot be made immutable without breaking compatibility")
|
||||
@SuppressFBWarnings(value = {"MS_CANNOT_BE_FINAL", "PA_PUBLIC_PRIMITIVE_ATTRIBUTE"}, justification = "Preserve API compatibility")
|
||||
public static String RESOURCE_PATH = "";
|
||||
|
||||
/**
|
||||
|
@ -5714,7 +5718,7 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
|
|||
* <p>
|
||||
* Value computed in {@link WebAppMain}.
|
||||
*/
|
||||
@SuppressFBWarnings(value = "MS_CANNOT_BE_FINAL", justification = "cannot be made immutable without breaking compatibility")
|
||||
@SuppressFBWarnings(value = {"MS_CANNOT_BE_FINAL", "PA_PUBLIC_PRIMITIVE_ATTRIBUTE"}, justification = "Preserve API compatibility")
|
||||
public static String VIEW_RESOURCE_PATH = "/resources/TBD";
|
||||
|
||||
@SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console")
|
||||
|
|
|
@ -0,0 +1,73 @@
|
|||
package jenkins.search;
|
||||
|
||||
import static jenkins.search.Messages.SearchGroup_ComputerSearchGroup_DisplayName;
|
||||
import static jenkins.search.Messages.SearchGroup_ItemSearchGroup_DisplayName;
|
||||
import static jenkins.search.Messages.SearchGroup_UnclassifiedSearchGroup_DisplayName;
|
||||
import static jenkins.search.Messages.SearchGroup_UserSearchGroup_DisplayName;
|
||||
import static jenkins.search.Messages.SearchGroup_ViewSearchGroup_DisplayName;
|
||||
|
||||
import edu.umd.cs.findbugs.annotations.NonNull;
|
||||
import hudson.Extension;
|
||||
import hudson.ExtensionList;
|
||||
import hudson.ExtensionPoint;
|
||||
import hudson.model.ModelObject;
|
||||
|
||||
public interface SearchGroup extends ExtensionPoint, ModelObject {
|
||||
|
||||
static ExtensionList<SearchGroup> all() {
|
||||
return ExtensionList.lookup(SearchGroup.class);
|
||||
}
|
||||
|
||||
static @NonNull <T extends SearchGroup> T get(Class<T> type) {
|
||||
T category = all().get(type);
|
||||
if (category == null) {
|
||||
throw new AssertionError("Group not found. It seems the " + type + " is not annotated with @Extension and so not registered");
|
||||
}
|
||||
return category;
|
||||
}
|
||||
|
||||
@Extension(ordinal = -1)
|
||||
class UnclassifiedSearchGroup implements SearchGroup {
|
||||
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return SearchGroup_UnclassifiedSearchGroup_DisplayName();
|
||||
}
|
||||
}
|
||||
|
||||
@Extension(ordinal = 999)
|
||||
class ItemSearchGroup implements SearchGroup {
|
||||
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return SearchGroup_ItemSearchGroup_DisplayName();
|
||||
}
|
||||
}
|
||||
|
||||
@Extension
|
||||
class ComputerSearchGroup implements SearchGroup {
|
||||
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return SearchGroup_ComputerSearchGroup_DisplayName();
|
||||
}
|
||||
}
|
||||
|
||||
@Extension
|
||||
class ViewSearchGroup implements SearchGroup {
|
||||
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return SearchGroup_ViewSearchGroup_DisplayName();
|
||||
}
|
||||
}
|
||||
|
||||
@Extension
|
||||
class UserSearchGroup implements SearchGroup {
|
||||
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return SearchGroup_UserSearchGroup_DisplayName();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
package jenkins.security;
|
||||
|
||||
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
||||
import hudson.util.Secret;
|
||||
import java.io.IOException;
|
||||
import java.security.GeneralSecurityException;
|
||||
|
@ -71,6 +72,7 @@ public class CryptoConfidentialKey extends ConfidentialKey {
|
|||
* @return the cipher
|
||||
*/
|
||||
@Restricted(NoExternalUse.class) // TODO pending API
|
||||
@SuppressFBWarnings(value = "STATIC_IV", justification = "TODO needs triage")
|
||||
public Cipher encrypt(byte[] iv) {
|
||||
try {
|
||||
Cipher cipher = Secret.getCipher(ALGORITHM);
|
||||
|
|
|
@ -311,6 +311,7 @@ public class StaplerDispatchValidator implements DispatchValidator {
|
|||
}
|
||||
}
|
||||
|
||||
@SuppressFBWarnings(value = "SIC_INNER_SHOULD_BE_STATIC", justification = "TODO needs triage")
|
||||
private class Validator {
|
||||
// lazy load parents to avoid trying to load potentially unavailable classes
|
||||
private final Supplier<Collection<Validator>> parentsSupplier;
|
||||
|
|
|
@ -3,6 +3,7 @@ package jenkins.slaves.restarter;
|
|||
import static java.util.logging.Level.FINE;
|
||||
import static org.apache.commons.io.IOUtils.copy;
|
||||
|
||||
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
||||
import hudson.Extension;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
|
@ -29,6 +30,7 @@ public class WinswSlaveRestarter extends SlaveRestarter {
|
|||
}
|
||||
}
|
||||
|
||||
@SuppressFBWarnings(value = "COMMAND_INJECTION", justification = "TODO needs triage")
|
||||
private int exec(String cmd) throws InterruptedException, IOException {
|
||||
ProcessBuilder pb = new ProcessBuilder(exe, cmd);
|
||||
pb.redirectErrorStream(true);
|
||||
|
|
|
@ -61,15 +61,17 @@ public class HistoryPageFilter<T> {
|
|||
public final List<HistoryPageEntry<QueueItem>> queueItems = new ArrayList<>();
|
||||
public final List<HistoryPageEntry<HistoricalBuild>> runs = new ArrayList<>();
|
||||
|
||||
@SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD", justification = "read by Stapler")
|
||||
@SuppressFBWarnings(value = {"PA_PUBLIC_PRIMITIVE_ATTRIBUTE", "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"}, justification = "Preserve API compatibility; read by Stapler")
|
||||
public boolean hasUpPage = false; // there are newer builds than on this page
|
||||
@SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD", justification = "read by Stapler")
|
||||
@SuppressFBWarnings(value = {"PA_PUBLIC_PRIMITIVE_ATTRIBUTE", "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"}, justification = "Preserve API compatibility; read by Stapler")
|
||||
public boolean hasDownPage = false; // there are older builds than on this page
|
||||
@SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD", justification = "read by Stapler")
|
||||
@SuppressFBWarnings(value = {"PA_PUBLIC_PRIMITIVE_ATTRIBUTE", "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"}, justification = "Preserve API compatibility; read by Stapler")
|
||||
public long nextBuildNumber;
|
||||
public HistoryWidget widget;
|
||||
|
||||
@SuppressFBWarnings(value = "PA_PUBLIC_PRIMITIVE_ATTRIBUTE", justification = "Preserve API compatibility")
|
||||
public long newestOnPage = Long.MIN_VALUE; // see updateNewestOldest()
|
||||
@SuppressFBWarnings(value = "PA_PUBLIC_PRIMITIVE_ATTRIBUTE", justification = "Preserve API compatibility")
|
||||
public long oldestOnPage = Long.MAX_VALUE; // see updateNewestOldest()
|
||||
|
||||
/**
|
||||
|
|
|
@ -40,14 +40,13 @@ THE SOFTWARE.
|
|||
<j:set var="initialDescription" value="${request2.getParameter('description')}" defaultValue="${it.description}"/>
|
||||
<l:ajax>
|
||||
<form action="${submissionUrl}" method="post">
|
||||
<table>
|
||||
<f:entry help="${app.markupFormatter.helpUrl}">
|
||||
<f:textarea name="description" value="${initialDescription}"
|
||||
codemirror-mode="${app.markupFormatter.codeMirrorMode}" codemirror-config="${app.markupFormatter.codeMirrorConfig}" previewEndpoint="/markupFormatter/previewDescription"/>
|
||||
</f:entry>
|
||||
</table>
|
||||
<div align="right">
|
||||
<div class="jenkins-buttons-row jenkins-buttons-row--equal-width">
|
||||
<f:submit value="${%Save}" />
|
||||
<button type="button" class="jenkins-button description-cancel-button">${%Cancel}</button>
|
||||
</div>
|
||||
</form>
|
||||
</l:ajax>
|
||||
|
|
|
@ -2,7 +2,7 @@ package jenkins.model.InterruptedBuildAction
|
|||
|
||||
def t = namespace(lib.JenkinsTagLib.class)
|
||||
|
||||
t.summary(icon:"orange-square.png") {
|
||||
t.summary(icon:"symbol-close-circle") {
|
||||
my.causes.each { c ->
|
||||
p { include(c,"summary") }
|
||||
}
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
# The MIT License
|
||||
#
|
||||
# Copyright (c) 2025 Jan Faracik
|
||||
#
|
||||
# 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.
|
||||
|
||||
SearchGroup.UnclassifiedSearchGroup.DisplayName=Other
|
||||
SearchGroup.ItemSearchGroup.DisplayName=Items
|
||||
SearchGroup.ComputerSearchGroup.DisplayName=Nodes
|
||||
SearchGroup.ViewSearchGroup.DisplayName=Views
|
||||
SearchGroup.UserSearchGroup.DisplayName=Users
|
|
@ -1,8 +1,8 @@
|
|||
/* global replaceDescription */
|
||||
(function () {
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
let descriptionLink = document.querySelector("#description-link");
|
||||
let description = document.getElementById("description");
|
||||
const descriptionLink = document.querySelector("#description-link");
|
||||
const description = document.getElementById("description");
|
||||
if (description != null) {
|
||||
descriptionLink.classList.remove("jenkins-hidden");
|
||||
descriptionLink.addEventListener("click", function (e) {
|
||||
|
@ -14,4 +14,25 @@
|
|||
});
|
||||
}
|
||||
});
|
||||
|
||||
Behaviour.specify(
|
||||
".description-cancel-button",
|
||||
"description-cancel-button",
|
||||
0,
|
||||
function (b) {
|
||||
b.onclick = function () {
|
||||
const descriptionLink = document.getElementById("description-link");
|
||||
const descriptionContent = document.getElementById(
|
||||
"description-content",
|
||||
);
|
||||
const descriptionEditForm = document.getElementById(
|
||||
"description-edit-form",
|
||||
);
|
||||
descriptionEditForm.innerHTML = "";
|
||||
descriptionEditForm.classList.add("jenkins-hidden");
|
||||
descriptionContent.classList.remove("jenkins-hidden");
|
||||
descriptionLink.classList.remove("jenkins-hidden");
|
||||
};
|
||||
},
|
||||
);
|
||||
})();
|
||||
|
|
|
@ -47,13 +47,13 @@ THE SOFTWARE.
|
|||
<j:set var="actualDescription" value="${description}" defaultValue="${it.description}"/>
|
||||
<j:set var="hideDescriptionButton" value="${hideButton}" defaultValue="false"/>
|
||||
|
||||
<div id="description" class="jenkins-!-margin-bottom-${hideButton?'3':'0'}">
|
||||
<div>
|
||||
<div id="description" class="jenkins-!-margin-bottom-${hideButton?'3':'1'}">
|
||||
<div id="description-content">
|
||||
<j:out value="${actualDescription!=null ? app.markupFormatter.translate(actualDescription) : ''}" />
|
||||
</div>
|
||||
|
||||
<div id="description-edit-form" class="jenkins-hidden"/>
|
||||
<j:if test="${!hideDescriptionButton}">
|
||||
<div class="jenkins-buttons-row jenkins-buttons-row--invert">
|
||||
<div class="jenkins-buttons-row jenkins-buttons-row--invert description-edit-button">
|
||||
<t:editDescriptionButton permission="${permission}" description="${actualDescription}" submissionUrl="${submissionUrl}"/>
|
||||
</div>
|
||||
</j:if>
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
<skin>
|
||||
<groupId>org.apache.maven.skins</groupId>
|
||||
<artifactId>maven-fluido-skin</artifactId>
|
||||
<version>2.0.1</version>
|
||||
<version>2.1.0</version>
|
||||
</skin>
|
||||
<custom>
|
||||
<matomo>
|
||||
|
|
|
@ -7,14 +7,8 @@
|
|||
<Or>
|
||||
<!-- We don't care about this behavior -->
|
||||
<Bug pattern="CRLF_INJECTION_LOGS"/>
|
||||
<!-- Pending https://github.com/spotbugs/spotbugs/issues/1515 -->
|
||||
<Bug pattern="DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED"/>
|
||||
<!-- Silly check; it is perfectly reasonable to implement Comparable by writing a compareTo without an equals. -->
|
||||
<Bug pattern="EQ_COMPARETO_USE_OBJECT_EQUALS"/>
|
||||
<!-- Jenkins handles this issue differently or doesn't care about it -->
|
||||
<Bug pattern="INFORMATION_EXPOSURE_THROUGH_AN_ERROR_MESSAGE"/>
|
||||
<!-- Used for backward compatibility and extending utility classes -->
|
||||
<Bug pattern="NM_SAME_SIMPLE_NAME_AS_SUPERCLASS"/>
|
||||
</Or>
|
||||
</Match>
|
||||
<Match>
|
||||
|
@ -53,125 +47,6 @@
|
|||
<Bug pattern="SF_SWITCH_NO_DEFAULT"/>
|
||||
<Class name="hudson.scheduler.CrontabParser"/>
|
||||
</Match>
|
||||
<Match>
|
||||
<!-- Preserve API compatibility -->
|
||||
<Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
|
||||
<Class name="hudson.PluginManager"/>
|
||||
<Field name="pluginUploaded"/>
|
||||
</Match>
|
||||
<Match>
|
||||
<Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
|
||||
<Class name="hudson.ProxyConfiguration"/>
|
||||
<Field name="noProxyHost"/>
|
||||
</Match>
|
||||
<Match>
|
||||
<Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
|
||||
<Class name="hudson.cli.CLICommand"/>
|
||||
<Or>
|
||||
<Field name="locale"/>
|
||||
<Field name="stderr"/>
|
||||
<Field name="stdin"/>
|
||||
<Field name="stdout"/>
|
||||
</Or>
|
||||
</Match>
|
||||
<Match>
|
||||
<Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
|
||||
<Class name="hudson.cli.CopyJobCommand"/>
|
||||
<Field name="dst"/>
|
||||
</Match>
|
||||
<Match>
|
||||
<Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
|
||||
<Class name="hudson.cli.CreateJobCommand"/>
|
||||
<Field name="name"/>
|
||||
</Match>
|
||||
<Match>
|
||||
<Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
|
||||
<Class name="hudson.cli.SetBuildDescriptionCommand"/>
|
||||
<Field name="description"/>
|
||||
</Match>
|
||||
<Match>
|
||||
<Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
|
||||
<Class name="hudson.cli.SetBuildDisplayNameCommand"/>
|
||||
<Field name="displayName"/>
|
||||
</Match>
|
||||
<Match>
|
||||
<Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
|
||||
<Class name="hudson.model.Job"/>
|
||||
<Field name="runIdMigrator"/>
|
||||
</Match>
|
||||
<Match>
|
||||
<Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
|
||||
<Class name="hudson.model.StringParameterValue"/>
|
||||
<Field name="value"/>
|
||||
</Match>
|
||||
<Match>
|
||||
<Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
|
||||
<Class name="hudson.security.Permission"/>
|
||||
<Field name="enabled"/>
|
||||
</Match>
|
||||
<Match>
|
||||
<Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
|
||||
<Class name="hudson.tasks.Maven"/>
|
||||
<Field name="usePrivateRepository"/>
|
||||
</Match>
|
||||
<Match>
|
||||
<Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
|
||||
<Class name="hudson.util.Graph"/>
|
||||
<Field name="defaultScale"/>
|
||||
</Match>
|
||||
<Match>
|
||||
<Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
|
||||
<Class name="hudson.widgets.HistoryWidget"/>
|
||||
<Field name="baseList"/>
|
||||
</Match>
|
||||
<Match>
|
||||
<Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
|
||||
<Class name="jenkins.model.Jenkins"/>
|
||||
<Or>
|
||||
<Field name="tcpSlaveAgentListener"/>
|
||||
<Field name="proxy"/>
|
||||
<Field name="VERSION"/>
|
||||
<Field name="CHANGELOG_URL"/>
|
||||
<Field name="VERSION_HASH"/>
|
||||
<Field name="SESSION_HASH"/>
|
||||
<Field name="RESOURCE_PATH"/>
|
||||
<Field name="VIEW_RESOURCE_PATH"/>
|
||||
</Or>
|
||||
</Match>
|
||||
<Match>
|
||||
<Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
|
||||
<Class name="jenkins.widgets.HistoryPageFilter"/>
|
||||
<Or>
|
||||
<Field name="hasDownPage"/>
|
||||
<Field name="hasUpPage"/>
|
||||
<Field name="newestOnPage"/>
|
||||
<Field name="nextBuildNumber"/>
|
||||
<Field name="oldestOnPage"/>
|
||||
</Or>
|
||||
</Match>
|
||||
<Match>
|
||||
<Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
|
||||
<Class name="hudson.slaves.JNLPLauncher"/>
|
||||
<Field name="tunnel"/>
|
||||
</Match>
|
||||
<Match>
|
||||
<!-- Reserved for future use -->
|
||||
<Bug pattern="SS_SHOULD_BE_STATIC"/>
|
||||
<Class name="hudson.model.User"/>
|
||||
<Field name="version"/>
|
||||
</Match>
|
||||
<Match>
|
||||
<!-- Reserved for future use -->
|
||||
<Bug pattern="SS_SHOULD_BE_STATIC"/>
|
||||
<Class name="hudson.model.UserIdMapper"/>
|
||||
<Field name="version"/>
|
||||
</Match>
|
||||
<Match>
|
||||
<!-- Reserved for future use -->
|
||||
<Bug pattern="SS_SHOULD_BE_STATIC"/>
|
||||
<Class name="hudson.util.Graph"/>
|
||||
<Field name="defaultScale"/>
|
||||
</Match>
|
||||
<!--
|
||||
Here lies technical debt. Exclusions in this section have not yet been triaged. When working on
|
||||
on this section, pick an exclusion to triage, then:
|
||||
|
@ -180,69 +55,9 @@
|
|||
this section.
|
||||
- If it is not a false positive, fix the bug, then remove the exclusion from this section.
|
||||
-->
|
||||
<Match>
|
||||
<And>
|
||||
<Bug pattern="DM_DEFAULT_ENCODING"/>
|
||||
<Or>
|
||||
<Class name="hudson.console.ConsoleNote"/>
|
||||
<Class name="hudson.lifecycle.WindowsServiceLifecycle"/>
|
||||
<Class name="hudson.util.TextFile"/>
|
||||
</Or>
|
||||
</And>
|
||||
</Match>
|
||||
<Match>
|
||||
<Confidence value="2"/>
|
||||
<Or>
|
||||
<And>
|
||||
<Bug pattern="COMMAND_INJECTION"/>
|
||||
<Or>
|
||||
<Class name="hudson.Launcher$LocalLauncher"/>
|
||||
<Class name="hudson.Launcher$RemoteChannelLaunchCallable"/>
|
||||
<Class name="hudson.os.WindowsUtil"/>
|
||||
<Class name="jenkins.slaves.restarter.WinswSlaveRestarter"/>
|
||||
</Or>
|
||||
</And>
|
||||
<And>
|
||||
<Bug pattern="EC_UNRELATED_TYPES_USING_POINTER_EQUALITY"/>
|
||||
<Or>
|
||||
<Class name="hudson.model.AutoCompletionCandidates"/>
|
||||
<Class name="hudson.tasks.Fingerprinter$FingerprintAction"/>
|
||||
</Or>
|
||||
</And>
|
||||
<And>
|
||||
<Bug pattern="EQ_DOESNT_OVERRIDE_EQUALS"/>
|
||||
<Or>
|
||||
<Class name="hudson.model.Run$ArtifactList"/>
|
||||
<Class name="hudson.model.Run$SerializableArtifactList"/>
|
||||
<Class name="hudson.search.Search$SearchResultImpl"/>
|
||||
<Class name="hudson.slaves.NodeList"/>
|
||||
</Or>
|
||||
</And>
|
||||
<And>
|
||||
<Bug pattern="FILE_UPLOAD_FILENAME"/>
|
||||
<Or>
|
||||
<Class name="hudson.model.FileParameterDefinition"/>
|
||||
<Class name="hudson.model.FileParameterValue"/>
|
||||
<Class name="hudson.PluginManager"/>
|
||||
</Or>
|
||||
</And>
|
||||
<And>
|
||||
<Bug pattern="HTTP_PARAMETER_POLLUTION"/>
|
||||
<Class name="hudson.ProxyConfiguration$DescriptorImpl"/>
|
||||
</And>
|
||||
<And>
|
||||
<Bug pattern="HTTP_RESPONSE_SPLITTING"/>
|
||||
<Or>
|
||||
<Class name="hudson.Functions"/>
|
||||
<Class name="jenkins.install.InstallUtil"/>
|
||||
<Class name="jenkins.model.Jenkins"/>
|
||||
<Class name="jenkins.util.xml.XMLUtils"/>
|
||||
</Or>
|
||||
</And>
|
||||
<And>
|
||||
<Bug pattern="LI_LAZY_INIT_STATIC"/>
|
||||
<Class name="hudson.triggers.Trigger"/>
|
||||
</And>
|
||||
<And>
|
||||
<Bug pattern="NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE"/>
|
||||
<Or>
|
||||
|
@ -273,7 +88,6 @@
|
|||
<Class name="hudson.model.Run"/>
|
||||
<Class name="hudson.model.RunParameterValue"/>
|
||||
<Class name="hudson.model.Slave"/>
|
||||
<Class name="hudson.model.TopLevelItemDescriptor"/>
|
||||
<Class name="hudson.model.UpdateCenter$HudsonDowngradeJob"/>
|
||||
<Class name="hudson.model.UpdateCenter$HudsonUpgradeJob"/>
|
||||
<Class name="hudson.model.UpdateSite$Plugin"/>
|
||||
|
@ -287,7 +101,6 @@
|
|||
<Class name="hudson.tasks.BuildTrigger"/>
|
||||
<Class name="hudson.tasks.Maven"/>
|
||||
<Class name="hudson.tasks.Maven$MavenInstallation"/>
|
||||
<Class name="hudson.TcpSlaveAgentListener$TcpSlaveAgentListenerRescheduler"/>
|
||||
<Class name="hudson.tools.DownloadFromUrlInstaller$DescriptorImpl"/>
|
||||
<Class name="hudson.tools.ToolInstallation"/>
|
||||
<Class name="hudson.triggers.SCMTrigger$DescriptorImpl"/>
|
||||
|
@ -299,7 +112,6 @@
|
|||
<Class name="jenkins.fingerprints.FingerprintStorage"/>
|
||||
<Class name="jenkins.install.SetupWizard"/>
|
||||
<Class name="jenkins.model.Jenkins"/>
|
||||
<Class name="jenkins.model.Nodes"/>
|
||||
<Class name="jenkins.model.RunIdMigrator"/>
|
||||
<Class name="jenkins.mvn.SettingsPathHelper"/>
|
||||
<Class name="jenkins.security.CustomClassFilter$Contributed"/>
|
||||
|
@ -336,7 +148,6 @@
|
|||
<Class name="hudson.Launcher$RemoteLaunchCallable"/>
|
||||
<Class name="hudson.lifecycle.Lifecycle"/>
|
||||
<Class name="hudson.lifecycle.WindowsServiceLifecycle"/>
|
||||
<Class name="hudson.LocalPluginManager"/>
|
||||
<Class name="hudson.logging.LogRecorder"/>
|
||||
<Class name="hudson.model.AsyncAperiodicWork"/>
|
||||
<Class name="hudson.model.AsyncPeriodicWork"/>
|
||||
|
@ -352,7 +163,6 @@
|
|||
<Class name="hudson.model.Run"/>
|
||||
<Class name="hudson.model.Run$Artifact"/>
|
||||
<Class name="hudson.model.UpdateCenter"/>
|
||||
<Class name="hudson.model.UpdateCenter$DownloadJob"/>
|
||||
<Class name="hudson.model.UpdateCenter$HudsonDowngradeJob"/>
|
||||
<Class name="hudson.model.UpdateCenter$InstallationJob"/>
|
||||
<Class name="hudson.model.UpdateCenter$PluginDowngradeJob"/>
|
||||
|
@ -385,19 +195,15 @@
|
|||
<Class name="jenkins.model.Jenkins"/>
|
||||
<Class name="jenkins.model.Nodes"/>
|
||||
<Class name="jenkins.model.PeepholePermalink"/>
|
||||
<Class name="jenkins.model.RunIdMigrator"/>
|
||||
<Class name="jenkins.mvn.FilePathGlobalSettingsProvider"/>
|
||||
<Class name="jenkins.mvn.FilePathSettingsProvider"/>
|
||||
<Class name="jenkins.mvn.SettingsPathHelper"/>
|
||||
<Class name="jenkins.plugins.DetachedPluginsUtil$DetachedPlugin"/>
|
||||
<Class name="jenkins.security.ClassFilterImpl"/>
|
||||
<Class name="jenkins.security.ConfidentialKey"/>
|
||||
<Class name="jenkins.security.DefaultConfidentialStore"/>
|
||||
<Class name="jenkins.security.s2m.ConfigDirectory"/>
|
||||
<Class name="jenkins.security.stapler.StaplerDispatchValidator$ValidatorCache"/>
|
||||
<Class name="jenkins.security.stapler.StaticRoutingDecisionProvider"/>
|
||||
<Class name="jenkins.slaves.restarter.UnixSlaveRestarter"/>
|
||||
<Class name="jenkins.SoloFilePathFilter"/>
|
||||
<Class name="jenkins.util.groovy.GroovyHookScript"/>
|
||||
<Class name="jenkins.util.io.FileBoolean"/>
|
||||
<Class name="jenkins.util.JavaVMArguments"/>
|
||||
|
@ -408,58 +214,7 @@
|
|||
</And>
|
||||
<And>
|
||||
<Bug pattern="REDOS"/>
|
||||
<Or>
|
||||
<Class name="hudson.model.Computer"/>
|
||||
<Class name="jenkins.org.apache.commons.validator.routines.UrlValidator"/>
|
||||
</Or>
|
||||
</And>
|
||||
<And>
|
||||
<Bug pattern="REQUESTDISPATCHER_FILE_DISCLOSURE"/>
|
||||
<Or>
|
||||
<Class name="hudson.cli.CLIAction"/>
|
||||
<Class name="hudson.model.AbstractProject"/>
|
||||
<Class name="hudson.model.Descriptor"/>
|
||||
<Class name="hudson.model.DirectoryBrowserSupport"/>
|
||||
<Class name="hudson.model.RSS"/>
|
||||
<Class name="hudson.model.Run"/>
|
||||
<Class name="hudson.scm.AbstractScmTagAction"/>
|
||||
<Class name="hudson.search.Search"/>
|
||||
<Class name="hudson.security.BasicAuthenticationFilter"/>
|
||||
<Class name="hudson.security.FederatedLoginService$UnclaimedIdentityException"/>
|
||||
<Class name="hudson.security.HudsonPrivateSecurityRealm"/>
|
||||
<Class name="hudson.slaves.NodeDescriptor"/>
|
||||
<Class name="hudson.slaves.SlaveComputer"/>
|
||||
<Class name="hudson.util.DoubleLaunchChecker"/>
|
||||
<Class name="hudson.util.ErrorObject"/>
|
||||
<Class name="hudson.util.HudsonIsLoading"/>
|
||||
<Class name="hudson.util.HudsonIsRestarting"/>
|
||||
<Class name="hudson.widgets.HistoryWidget"/>
|
||||
<Class name="jenkins.agents.CloudSet"/>
|
||||
<Class name="jenkins.management.AdministrativeMonitorsApi"/>
|
||||
<Class name="jenkins.model.Jenkins"/>
|
||||
<Class name="jenkins.model.ParameterizedJobMixIn"/>
|
||||
<Class name="jenkins.slaves.EncryptedSlaveAgentJnlpFile"/>
|
||||
</Or>
|
||||
</And>
|
||||
<And>
|
||||
<Bug pattern="SE_BAD_FIELD"/>
|
||||
<Class name="hudson.scm.PollingResult"/>
|
||||
</And>
|
||||
<And>
|
||||
<Bug pattern="STATIC_IV"/>
|
||||
<Or>
|
||||
<Class name="hudson.cli.Connection"/>
|
||||
<Class name="hudson.model.UsageStatistics$CombinedCipherOutputStream"/>
|
||||
<Class name="jenkins.security.CryptoConfidentialKey"/>
|
||||
</Or>
|
||||
</And>
|
||||
<And>
|
||||
<Bug pattern="UNENCRYPTED_SERVER_SOCKET"/>
|
||||
<Class name="hudson.slaves.Channels"/>
|
||||
</And>
|
||||
<And>
|
||||
<Bug pattern="UNENCRYPTED_SOCKET"/>
|
||||
<Class name="hudson.TcpSlaveAgentListener"/>
|
||||
</And>
|
||||
<And>
|
||||
<Bug pattern="URLCONNECTION_SSRF_FD"/>
|
||||
|
@ -475,21 +230,6 @@
|
|||
<Class name="jenkins.security.ResourceDomainConfiguration"/>
|
||||
</Or>
|
||||
</And>
|
||||
<And>
|
||||
<Bug pattern="UR_UNINIT_READ_CALLED_FROM_SUPER_CONSTRUCTOR"/>
|
||||
<Class name="hudson.slaves.SlaveComputer"/>
|
||||
</And>
|
||||
<And>
|
||||
<Bug pattern="XSS_SERVLET"/>
|
||||
<Or>
|
||||
<Class name="hudson.Functions"/>
|
||||
<Class name="hudson.security.AccessDeniedException3"/>
|
||||
</Or>
|
||||
</And>
|
||||
</Or>
|
||||
</Match>
|
||||
<Match>
|
||||
<Bug pattern="SIC_INNER_SHOULD_BE_STATIC"/>
|
||||
<Class name="jenkins.security.stapler.StaplerDispatchValidator$ValidatorCache$Validator"/>
|
||||
</Match>
|
||||
</FindBugsFilter>
|
||||
|
|
12
package.json
12
package.json
|
@ -24,15 +24,15 @@
|
|||
},
|
||||
"devDependencies": {
|
||||
"@babel/cli": "7.26.4",
|
||||
"@babel/core": "7.26.9",
|
||||
"@babel/core": "7.26.10",
|
||||
"@babel/preset-env": "7.26.9",
|
||||
"@eslint/js": "9.21.0",
|
||||
"@eslint/js": "9.22.0",
|
||||
"babel-loader": "10.0.0",
|
||||
"clean-webpack-plugin": "4.0.0",
|
||||
"css-loader": "7.1.2",
|
||||
"css-minimizer-webpack-plugin": "7.0.0",
|
||||
"eslint": "9.21.0",
|
||||
"eslint-config-prettier": "10.0.2",
|
||||
"css-minimizer-webpack-plugin": "7.0.2",
|
||||
"eslint": "9.22.0",
|
||||
"eslint-config-prettier": "10.1.1",
|
||||
"eslint-formatter-checkstyle": "8.40.0",
|
||||
"globals": "16.0.0",
|
||||
"handlebars-loader": "1.7.3",
|
||||
|
@ -45,7 +45,7 @@
|
|||
"sass": "1.85.1",
|
||||
"sass-loader": "16.0.5",
|
||||
"style-loader": "4.0.0",
|
||||
"stylelint": "16.15.0",
|
||||
"stylelint": "16.16.0",
|
||||
"stylelint-checkstyle-reporter": "1.0.0",
|
||||
"stylelint-config-standard-scss": "14.0.0",
|
||||
"webpack": "5.98.0",
|
||||
|
|
8
pom.xml
8
pom.xml
|
@ -73,9 +73,9 @@ THE SOFTWARE.
|
|||
</issueManagement>
|
||||
|
||||
<properties>
|
||||
<revision>2.501</revision>
|
||||
<revision>2.502</revision>
|
||||
<changelist>-SNAPSHOT</changelist>
|
||||
<project.build.outputTimestamp>2025-03-04T10:34:35Z</project.build.outputTimestamp>
|
||||
<project.build.outputTimestamp>2025-03-11T13:49:05Z</project.build.outputTimestamp>
|
||||
|
||||
<!-- configuration for patch tracker plugin -->
|
||||
<project.patchManagement.system>github</project.patchManagement.system>
|
||||
|
@ -97,8 +97,8 @@ THE SOFTWARE.
|
|||
<bridge-method-injector.version>1.30</bridge-method-injector.version>
|
||||
<spotless.check.skip>false</spotless.check.skip>
|
||||
<!-- Make sure to keep the jetty-ee9-maven-plugin version in war/pom.xml in sync with the Jetty release in Winstone: -->
|
||||
<winstone.version>8.4</winstone.version>
|
||||
<node.version>20.18.3</node.version>
|
||||
<winstone.version>8.5</winstone.version>
|
||||
<node.version>20.19.0</node.version>
|
||||
</properties>
|
||||
|
||||
<!--
|
||||
|
|
|
@ -21,6 +21,7 @@ export const JenkinsSearchSource = {
|
|||
type: e.type,
|
||||
label: e.name,
|
||||
url: correctAddress(e.url),
|
||||
group: e.group,
|
||||
}),
|
||||
);
|
||||
}),
|
||||
|
|
|
@ -5,6 +5,7 @@ import * as Symbols from "./symbols";
|
|||
import makeKeyboardNavigable from "@/util/keyboard";
|
||||
import { xmlEscape } from "@/util/security";
|
||||
import { createElementFromHtml } from "@/util/dom";
|
||||
import { groupResultsByCategory } from "@/components/command-palette/utils";
|
||||
|
||||
const datasources = [JenkinsSearchSource];
|
||||
|
||||
|
@ -68,6 +69,7 @@ function init() {
|
|||
label: i18n.dataset.getHelp,
|
||||
url: headerCommandPaletteButton.dataset.searchHelpUrl,
|
||||
isExternal: true,
|
||||
group: null,
|
||||
}),
|
||||
]);
|
||||
} else {
|
||||
|
@ -77,15 +79,26 @@ function init() {
|
|||
}
|
||||
|
||||
results.then((results) => {
|
||||
results = groupResultsByCategory(results);
|
||||
|
||||
// Clear current search results
|
||||
searchResults.innerHTML = "";
|
||||
|
||||
if (query.length === 0 || Object.keys(results).length > 0) {
|
||||
results.forEach(function (obj) {
|
||||
for (const [group, items] of Object.entries(results)) {
|
||||
if (group !== "null") {
|
||||
const heading = document.createElement("p");
|
||||
heading.className = "jenkins-command-palette__results__heading";
|
||||
heading.innerText = group;
|
||||
searchResults.append(heading);
|
||||
}
|
||||
|
||||
items.forEach(function (obj) {
|
||||
const link = createElementFromHtml(obj.render());
|
||||
link.addEventListener("mouseenter", (e) => itemMouseEnter(e));
|
||||
searchResults.append(link);
|
||||
});
|
||||
}
|
||||
|
||||
updateSelectedItem(0);
|
||||
} else {
|
||||
|
|
|
@ -7,12 +7,14 @@ import { xmlEscape } from "@/util/security";
|
|||
* @param {string} params.label
|
||||
* @param {'symbol' | 'image'} params.type
|
||||
* @param {string} params.url
|
||||
* @param {string | null} params.group
|
||||
* @param {boolean | undefined} params.isExternal
|
||||
*/
|
||||
export function LinkResult(params) {
|
||||
return {
|
||||
label: params.label,
|
||||
url: params.url,
|
||||
group: params.group,
|
||||
render: () => {
|
||||
return `<a class="jenkins-command-palette__results__item" href="${xmlEscape(
|
||||
params.url,
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
/**
|
||||
* Group results by 'group' field into a map
|
||||
*/
|
||||
export function groupResultsByCategory(array) {
|
||||
return array.reduce((hash, obj) => {
|
||||
if (obj.group === undefined) {
|
||||
return hash;
|
||||
}
|
||||
return Object.assign(hash, {
|
||||
[obj.group]: (hash[obj.group] || []).concat(obj),
|
||||
});
|
||||
}, {});
|
||||
}
|
|
@ -19,15 +19,24 @@ function generateDropdown(element, callback, immediate) {
|
|||
tippy(
|
||||
element,
|
||||
Object.assign({}, Templates.dropdown(), {
|
||||
hideOnClick: element.dataset["hideOnClick"] !== "false",
|
||||
hideOnClick:
|
||||
element.dataset["hideOnClick"] !== "false" ? "toggle" : false,
|
||||
onCreate(instance) {
|
||||
const onload = () => {
|
||||
if (instance.loaded) {
|
||||
return;
|
||||
}
|
||||
|
||||
instance.popper.addEventListener("click", () => {
|
||||
document.addEventListener("click", (event) => {
|
||||
const isClickInAnyDropdown =
|
||||
!!event.target.closest("[data-tippy-root]");
|
||||
const isClickOnReference = instance.reference.contains(
|
||||
event.target,
|
||||
);
|
||||
|
||||
if (!isClickInAnyDropdown && !isClickOnReference) {
|
||||
instance.hide();
|
||||
}
|
||||
});
|
||||
|
||||
callback(instance);
|
||||
|
|
|
@ -197,17 +197,17 @@ $semantics: (
|
|||
--link-font-weight: var(--font-bold-weight);
|
||||
|
||||
// Command Palette
|
||||
--command-palette-results-backdrop-filter: contrast(0.7) brightness(1.5)
|
||||
saturate(1.4) blur(20px);
|
||||
--command-palette-results-backdrop-filter: saturate(1.5) blur(5px);
|
||||
--command-palette-inset-shadow:
|
||||
inset 0 0 2px 2px rgb(255 255 255 / 0.1),
|
||||
var(--jenkins-border--subtle-shadow);
|
||||
var(--jenkins-border--subtle-shadow),
|
||||
0 5px 10px var(--jenkins-border-color--subtle);
|
||||
|
||||
::backdrop {
|
||||
--command-palette-backdrop-background: radial-gradient(
|
||||
farthest-corner at 50% 30vh,
|
||||
rgb(0 0 0 / 0.3),
|
||||
rgb(0 0 0 / 0.1)
|
||||
--command-palette-backdrop-background: color-mix(
|
||||
in sRGB,
|
||||
var(--black) 17.5%,
|
||||
transparent
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,12 @@
|
|||
@use "../abstracts/mixins";
|
||||
@use "../base/breakpoints";
|
||||
|
||||
$command-palette-background: color-mix(
|
||||
in sRGB,
|
||||
var(--card-background) 92.5%,
|
||||
transparent
|
||||
);
|
||||
|
||||
.jenkins-command-palette__dialog {
|
||||
background: none;
|
||||
border: none;
|
||||
|
@ -14,19 +20,19 @@
|
|||
|
||||
&::backdrop {
|
||||
background: var(--command-palette-backdrop-background);
|
||||
backdrop-filter: contrast(0.7) brightness(0.9) saturate(1.25) blur(3px);
|
||||
animation: jenkins-dialog-backdrop-animate-in 0.1s linear;
|
||||
backdrop-filter: blur(1px);
|
||||
animation: jenkins-dialog-backdrop-animate-in 0.075s linear;
|
||||
}
|
||||
|
||||
&[open] {
|
||||
animation: command-palette-animate-in 0.1s cubic-bezier(0, 0.68, 0.5, 1.5);
|
||||
animation: command-palette-animate-in 0.075s cubic-bezier(0, 0.68, 0.5, 1.5);
|
||||
}
|
||||
|
||||
&[closing] {
|
||||
animation: command-palette-animate-out 0.1s linear;
|
||||
animation: command-palette-animate-out 0.05s linear;
|
||||
|
||||
&::backdrop {
|
||||
animation: jenkins-dialog-backdrop-animate-out 0.1s linear;
|
||||
animation: jenkins-dialog-backdrop-animate-out 0.05s linear;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -48,7 +54,7 @@
|
|||
}
|
||||
|
||||
.jenkins-command-palette__wrapper {
|
||||
--inset: 15vh;
|
||||
--inset: 10vh;
|
||||
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
@ -76,7 +82,7 @@
|
|||
&__search {
|
||||
--search-bar-height: 3rem !important;
|
||||
|
||||
background: transparent;
|
||||
background: $command-palette-background;
|
||||
box-shadow: var(--command-palette-inset-shadow);
|
||||
margin-bottom: var(--section-padding);
|
||||
border-radius: 1rem;
|
||||
|
@ -109,12 +115,13 @@
|
|||
display: flex;
|
||||
flex-direction: column;
|
||||
border-radius: 1rem;
|
||||
background: $command-palette-background;
|
||||
backdrop-filter: var(--command-palette-results-backdrop-filter);
|
||||
box-shadow: var(--command-palette-inset-shadow);
|
||||
|
||||
// If set to 0, Safari won't always show the backdrop-filter
|
||||
height: 1px;
|
||||
transition: height var(--standard-transition);
|
||||
transition: height 0.15s ease;
|
||||
overflow: hidden;
|
||||
will-change: height;
|
||||
}
|
||||
|
@ -125,14 +132,13 @@
|
|||
padding: 0.5rem;
|
||||
|
||||
&__heading {
|
||||
font-weight: var(--font-bold-weight);
|
||||
font-size: var(--font-size-sm);
|
||||
margin: 0;
|
||||
padding: 0.75rem 0.75rem 0.625rem;
|
||||
padding: 0.375rem 0.625rem;
|
||||
color: var(--text-color-secondary);
|
||||
|
||||
&:not(:first-of-type) {
|
||||
padding-top: 2rem;
|
||||
padding-top: 1.375rem;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -153,10 +159,9 @@
|
|||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
padding: 0.75rem;
|
||||
padding: 0.625rem;
|
||||
border-radius: 0.5rem;
|
||||
color: var(--text-color) !important;
|
||||
transition: var(--standard-transition);
|
||||
|
||||
&--hover {
|
||||
&::before {
|
||||
|
@ -171,7 +176,7 @@
|
|||
justify-content: center;
|
||||
width: 1.375rem;
|
||||
height: 1.375rem;
|
||||
margin-right: 0.75rem;
|
||||
margin-right: 0.625rem;
|
||||
overflow: hidden;
|
||||
pointer-events: none;
|
||||
color: var(--text-color);
|
||||
|
@ -210,8 +215,8 @@
|
|||
&__info {
|
||||
font-size: var(--font-size-sm);
|
||||
margin: 0;
|
||||
padding: 0 14px;
|
||||
line-height: 46px;
|
||||
padding: 0 0.625rem;
|
||||
line-height: 42px;
|
||||
color: var(--text-color);
|
||||
|
||||
span {
|
||||
|
|
|
@ -134,7 +134,7 @@ THE SOFTWARE.
|
|||
<!-- Required by plugin-util-api -->
|
||||
<groupId>org.jenkins-ci.plugins.workflow</groupId>
|
||||
<artifactId>workflow-support</artifactId>
|
||||
<version>961.v51869f7b_d409</version>
|
||||
<version>963.va_600813d04a_a_</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
@ -178,7 +178,7 @@ THE SOFTWARE.
|
|||
<dependency>
|
||||
<groupId>org.jenkins-ci.main</groupId>
|
||||
<artifactId>jenkins-test-harness</artifactId>
|
||||
<version>2411.v1e79b_0dc94b_7</version>
|
||||
<version>2414.v185474555e66</version>
|
||||
<scope>test</scope>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
|
@ -206,7 +206,7 @@ THE SOFTWARE.
|
|||
<dependency>
|
||||
<groupId>org.jenkins-ci.modules</groupId>
|
||||
<artifactId>instance-identity</artifactId>
|
||||
<version>201.vd2a_b_5a_468a_a_6</version>
|
||||
<version>203.v15e81a_1b_7a_38</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
@ -358,7 +358,7 @@ THE SOFTWARE.
|
|||
<artifactItem>
|
||||
<groupId>io.jenkins.plugins</groupId>
|
||||
<artifactId>prism-api</artifactId>
|
||||
<version>1.29.0-19</version>
|
||||
<version>1.30.0-1</version>
|
||||
<type>hpi</type>
|
||||
<outputDirectory>${project.build.outputDirectory}/plugins</outputDirectory>
|
||||
<destFileName>prism-api.jpi</destFileName>
|
||||
|
|
|
@ -54,7 +54,7 @@ public class PluginTest {
|
|||
r.createWebClient().assertFails("plugin/matrix-auth/images/%2e%2e%2fWEB-INF/licenses.xml", HttpServletResponse.SC_BAD_REQUEST);
|
||||
r.createWebClient().assertFails("plugin/matrix-auth/images/%2e.%2fWEB-INF/licenses.xml", HttpServletResponse.SC_BAD_REQUEST);
|
||||
r.createWebClient().assertFails("plugin/matrix-auth/images/..%2f..%2f..%2f" + r.jenkins.getRootDir().getName() + "%2fsecrets%2fmaster.key", HttpServletResponse.SC_BAD_REQUEST);
|
||||
r.createWebClient().assertFails("plugin/matrix-auth/" + r.jenkins.getRootDir() + "/secrets/master.key", /* ./ prepended anyway */ Functions.isWindows() ? HttpServletResponse.SC_BAD_REQUEST : HttpServletResponse.SC_NOT_FOUND);
|
||||
r.createWebClient().assertFails("plugin/matrix-auth/" + r.jenkins.getRootDir() + "/secrets/master.key", /* ./ prepended anyway */ HttpServletResponse.SC_NOT_FOUND);
|
||||
// SECURITY-155:
|
||||
r.createWebClient().assertFails("plugin/matrix-auth/WEB-INF/licenses.xml", HttpServletResponse.SC_BAD_REQUEST);
|
||||
r.createWebClient().assertFails("plugin/matrix-auth/META-INF/MANIFEST.MF", HttpServletResponse.SC_BAD_REQUEST);
|
||||
|
|
|
@ -666,6 +666,7 @@ public class AbstractProjectTest {
|
|||
o.put("url", JSONObject.fromObject(null));
|
||||
o.put("icon", JSONObject.fromObject(null));
|
||||
o.put("type", "symbol");
|
||||
o.put("group", JSONObject.fromObject(null));
|
||||
expected.add(o);
|
||||
}
|
||||
assertThat(suggestions.containsAll(expected), is(true));
|
||||
|
|
|
@ -151,13 +151,8 @@ public class DirectoryBrowserSupportTest {
|
|||
|
||||
try (JenkinsRule.WebClient wc = j.createWebClient()) {
|
||||
// normal path provided by the UI succeeds
|
||||
wc.goTo("job/" + p.getName() + "/ws/abc/def.bin", "application/octet-stream");
|
||||
|
||||
// suspicious path is rejected with 400
|
||||
wc.setThrowExceptionOnFailingStatusCode(false);
|
||||
HtmlPage page = wc.goTo("job/" + p.getName() + "/ws/abc%5Cdef.bin");
|
||||
assertEquals(400, page.getWebResponse().getStatusCode());
|
||||
assertEquals("Error 400 Suspicious Path Character", page.getTitleText());
|
||||
Page page = wc.goTo("job/" + p.getName() + "/ws/abc%5Cdef.bin", "application/octet-stream");
|
||||
assertEquals(200, page.getWebResponse().getStatusCode());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1117,11 +1112,9 @@ public class DirectoryBrowserSupportTest {
|
|||
Files.writeString(targetTmpPath, content, StandardCharsets.UTF_8);
|
||||
|
||||
try (JenkinsRule.WebClient wc = j.createWebClient()) {
|
||||
// suspicious path is rejected with 400
|
||||
wc.setThrowExceptionOnFailingStatusCode(false);
|
||||
HtmlPage page = wc.goTo("userContent/" + targetTmpPath.toAbsolutePath() + "/*view*");
|
||||
assertEquals(400, page.getWebResponse().getStatusCode());
|
||||
assertEquals("Error 400 Suspicious Path Character", page.getTitleText());
|
||||
assertEquals(404, page.getWebResponse().getStatusCode());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -352,7 +352,7 @@ THE SOFTWARE.
|
|||
<!-- dependency of checks-api and plugin-util-api -->
|
||||
<groupId>org.jenkins-ci.plugins.workflow</groupId>
|
||||
<artifactId>workflow-support</artifactId>
|
||||
<version>961.v51869f7b_d409</version>
|
||||
<version>963.va_600813d04a_a_</version>
|
||||
<type>hpi</type>
|
||||
</artifactItem>
|
||||
|
||||
|
@ -360,7 +360,7 @@ THE SOFTWARE.
|
|||
<!-- dependency of junit and echarts-api -->
|
||||
<groupId>org.jenkins-ci.plugins</groupId>
|
||||
<artifactId>jackson2-api</artifactId>
|
||||
<version>2.17.0-389.va_5c7e45cd806</version>
|
||||
<version>2.18.3-402.v74c4eb_f122b_2</version>
|
||||
<type>hpi</type>
|
||||
</artifactItem>
|
||||
<artifactItem>
|
||||
|
@ -490,7 +490,7 @@ THE SOFTWARE.
|
|||
<!-- detached after 2.356 -->
|
||||
<groupId>org.jenkins-ci.modules</groupId>
|
||||
<artifactId>instance-identity</artifactId>
|
||||
<version>201.vd2a_b_5a_468a_a_6</version>
|
||||
<version>203.v15e81a_1b_7a_38</version>
|
||||
<type>hpi</type>
|
||||
</artifactItem>
|
||||
<artifactItem>
|
||||
|
@ -647,7 +647,7 @@ THE SOFTWARE.
|
|||
<plugin>
|
||||
<groupId>org.eclipse.jetty.ee9</groupId>
|
||||
<artifactId>jetty-ee9-maven-plugin</artifactId>
|
||||
<version>12.0.16</version>
|
||||
<version>12.0.17</version>
|
||||
<configuration>
|
||||
<!--
|
||||
Reload webapp when you hit ENTER. (See JETTY-282 for more)
|
||||
|
|
|
@ -1874,12 +1874,10 @@ function xor(a, b) {
|
|||
// used by editableDescription.jelly to replace the description field with a form
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
function replaceDescription(initialDescription, submissionUrl) {
|
||||
var d = document.getElementById("description");
|
||||
let button = d.firstElementChild.nextElementSibling;
|
||||
if (button !== null) {
|
||||
d.firstElementChild.nextElementSibling.innerHTML =
|
||||
"<div class='jenkins-spinner'></div>";
|
||||
}
|
||||
const descriptionContent = document.getElementById("description-content");
|
||||
const descriptionEditForm = document.getElementById("description-edit-form");
|
||||
descriptionEditForm.innerHTML = "<div class='jenkins-spinner'></div>";
|
||||
descriptionContent.classList.add("jenkins-hidden");
|
||||
let parameters = {};
|
||||
if (initialDescription !== null && initialDescription !== "") {
|
||||
parameters["description"] = initialDescription;
|
||||
|
@ -1895,10 +1893,11 @@ function replaceDescription(initialDescription, submissionUrl) {
|
|||
body: objectToUrlFormEncoded(parameters),
|
||||
}).then((rsp) => {
|
||||
rsp.text().then((responseText) => {
|
||||
d.innerHTML = responseText;
|
||||
descriptionEditForm.innerHTML = responseText;
|
||||
descriptionEditForm.classList.remove("jenkins-hidden");
|
||||
evalInnerHtmlScripts(responseText, function () {
|
||||
Behaviour.applySubtree(d);
|
||||
d.getElementsByTagName("TEXTAREA")[0].focus();
|
||||
Behaviour.applySubtree(descriptionEditForm);
|
||||
descriptionEditForm.getElementsByTagName("TEXTAREA")[0].focus();
|
||||
});
|
||||
layoutUpdateCallback.call();
|
||||
return false;
|
||||
|
|
226
yarn.lock
226
yarn.lock
|
@ -60,39 +60,39 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/core@npm:7.26.9":
|
||||
version: 7.26.9
|
||||
resolution: "@babel/core@npm:7.26.9"
|
||||
"@babel/core@npm:7.26.10":
|
||||
version: 7.26.10
|
||||
resolution: "@babel/core@npm:7.26.10"
|
||||
dependencies:
|
||||
"@ampproject/remapping": "npm:^2.2.0"
|
||||
"@babel/code-frame": "npm:^7.26.2"
|
||||
"@babel/generator": "npm:^7.26.9"
|
||||
"@babel/generator": "npm:^7.26.10"
|
||||
"@babel/helper-compilation-targets": "npm:^7.26.5"
|
||||
"@babel/helper-module-transforms": "npm:^7.26.0"
|
||||
"@babel/helpers": "npm:^7.26.9"
|
||||
"@babel/parser": "npm:^7.26.9"
|
||||
"@babel/helpers": "npm:^7.26.10"
|
||||
"@babel/parser": "npm:^7.26.10"
|
||||
"@babel/template": "npm:^7.26.9"
|
||||
"@babel/traverse": "npm:^7.26.9"
|
||||
"@babel/types": "npm:^7.26.9"
|
||||
"@babel/traverse": "npm:^7.26.10"
|
||||
"@babel/types": "npm:^7.26.10"
|
||||
convert-source-map: "npm:^2.0.0"
|
||||
debug: "npm:^4.1.0"
|
||||
gensync: "npm:^1.0.0-beta.2"
|
||||
json5: "npm:^2.2.3"
|
||||
semver: "npm:^6.3.1"
|
||||
checksum: 10c0/ed7212ff42a9453765787019b7d191b167afcacd4bd8fec10b055344ef53fa0cc648c9a80159ae4ecf870016a6318731e087042dcb68d1a2a9d34eb290dc014b
|
||||
checksum: 10c0/e046e0e988ab53841b512ee9d263ca409f6c46e2a999fe53024688b92db394346fa3aeae5ea0866331f62133982eee05a675d22922a4603c3f603aa09a581d62
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/generator@npm:^7.26.9":
|
||||
version: 7.26.9
|
||||
resolution: "@babel/generator@npm:7.26.9"
|
||||
"@babel/generator@npm:^7.26.10":
|
||||
version: 7.26.10
|
||||
resolution: "@babel/generator@npm:7.26.10"
|
||||
dependencies:
|
||||
"@babel/parser": "npm:^7.26.9"
|
||||
"@babel/types": "npm:^7.26.9"
|
||||
"@babel/parser": "npm:^7.26.10"
|
||||
"@babel/types": "npm:^7.26.10"
|
||||
"@jridgewell/gen-mapping": "npm:^0.3.5"
|
||||
"@jridgewell/trace-mapping": "npm:^0.3.25"
|
||||
jsesc: "npm:^3.0.2"
|
||||
checksum: 10c0/6b78872128205224a9a9761b9ea7543a9a7902a04b82fc2f6801ead4de8f59056bab3fd17b1f834ca7b049555fc4c79234b9a6230dd9531a06525306050becad
|
||||
checksum: 10c0/88b3b3ea80592fc89349c4e1a145e1386e4042866d2507298adf452bf972f68d13bf699a845e6ab8c028bd52c2247013eb1221b86e1db5c9779faacba9c4b10e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -280,24 +280,24 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/helpers@npm:^7.26.9":
|
||||
version: 7.26.9
|
||||
resolution: "@babel/helpers@npm:7.26.9"
|
||||
"@babel/helpers@npm:^7.26.10":
|
||||
version: 7.26.10
|
||||
resolution: "@babel/helpers@npm:7.26.10"
|
||||
dependencies:
|
||||
"@babel/template": "npm:^7.26.9"
|
||||
"@babel/types": "npm:^7.26.9"
|
||||
checksum: 10c0/3d4dbc4a33fe4181ed810cac52318b578294745ceaec07e2f6ecccf6cda55d25e4bfcea8f085f333bf911c9e1fc13320248dd1d5315ab47ad82ce1077410df05
|
||||
"@babel/types": "npm:^7.26.10"
|
||||
checksum: 10c0/f99e1836bcffce96db43158518bb4a24cf266820021f6461092a776cba2dc01d9fc8b1b90979d7643c5c2ab7facc438149064463a52dd528b21c6ab32509784f
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/parser@npm:^7.26.9":
|
||||
version: 7.26.9
|
||||
resolution: "@babel/parser@npm:7.26.9"
|
||||
"@babel/parser@npm:^7.26.10, @babel/parser@npm:^7.26.9":
|
||||
version: 7.26.10
|
||||
resolution: "@babel/parser@npm:7.26.10"
|
||||
dependencies:
|
||||
"@babel/types": "npm:^7.26.9"
|
||||
"@babel/types": "npm:^7.26.10"
|
||||
bin:
|
||||
parser: ./bin/babel-parser.js
|
||||
checksum: 10c0/4b9ef3c9a0d4c328e5e5544f50fe8932c36f8a2c851e7f14a85401487cd3da75cad72c2e1bcec1eac55599a6bbb2fdc091f274c4fcafa6bdd112d4915ff087fc
|
||||
checksum: 10c0/c47f5c0f63cd12a663e9dc94a635f9efbb5059d98086a92286d7764357c66bceba18ccbe79333e01e9be3bfb8caba34b3aaebfd8e62c3d5921c8cf907267be75
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -1102,28 +1102,28 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.26.5, @babel/traverse@npm:^7.26.8, @babel/traverse@npm:^7.26.9":
|
||||
version: 7.26.9
|
||||
resolution: "@babel/traverse@npm:7.26.9"
|
||||
"@babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.26.10, @babel/traverse@npm:^7.26.5, @babel/traverse@npm:^7.26.8":
|
||||
version: 7.26.10
|
||||
resolution: "@babel/traverse@npm:7.26.10"
|
||||
dependencies:
|
||||
"@babel/code-frame": "npm:^7.26.2"
|
||||
"@babel/generator": "npm:^7.26.9"
|
||||
"@babel/parser": "npm:^7.26.9"
|
||||
"@babel/generator": "npm:^7.26.10"
|
||||
"@babel/parser": "npm:^7.26.10"
|
||||
"@babel/template": "npm:^7.26.9"
|
||||
"@babel/types": "npm:^7.26.9"
|
||||
"@babel/types": "npm:^7.26.10"
|
||||
debug: "npm:^4.3.1"
|
||||
globals: "npm:^11.1.0"
|
||||
checksum: 10c0/51dd57fa39ea34d04816806bfead04c74f37301269d24c192d1406dc6e244fea99713b3b9c5f3e926d9ef6aa9cd5c062ad4f2fc1caa9cf843d5e864484ac955e
|
||||
checksum: 10c0/4e86bb4e3c30a6162bb91df86329df79d96566c3e2d9ccba04f108c30473a3a4fd360d9990531493d90f6a12004f10f616bf9b9229ca30c816b708615e9de2ac
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/types@npm:^7.25.9, @babel/types@npm:^7.26.9, @babel/types@npm:^7.4.4":
|
||||
version: 7.26.9
|
||||
resolution: "@babel/types@npm:7.26.9"
|
||||
"@babel/types@npm:^7.25.9, @babel/types@npm:^7.26.10, @babel/types@npm:^7.26.9, @babel/types@npm:^7.4.4":
|
||||
version: 7.26.10
|
||||
resolution: "@babel/types@npm:7.26.10"
|
||||
dependencies:
|
||||
"@babel/helper-string-parser": "npm:^7.25.9"
|
||||
"@babel/helper-validator-identifier": "npm:^7.25.9"
|
||||
checksum: 10c0/999c56269ba00e5c57aa711fbe7ff071cd6990bafd1b978341ea7572cc78919986e2aa6ee51dacf4b6a7a6fa63ba4eb3f1a03cf55eee31b896a56d068b895964
|
||||
checksum: 10c0/7a7f83f568bfc3dfabfaf9ae3a97ab5c061726c0afa7dcd94226d4f84a81559da368ed79671e3a8039d16f12476cf110381a377ebdea07587925f69628200dac
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -1660,6 +1660,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@eslint/config-helpers@npm:^0.1.0":
|
||||
version: 0.1.0
|
||||
resolution: "@eslint/config-helpers@npm:0.1.0"
|
||||
checksum: 10c0/3562b5325f42740fc83b0b92b7d13a61b383f8db064915143eec36184f09a09fad73eca6c2955ab6c248b0d04fa03c140f9af2f2c4c06770781a6b79f300a01e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@eslint/core@npm:^0.12.0":
|
||||
version: 0.12.0
|
||||
resolution: "@eslint/core@npm:0.12.0"
|
||||
|
@ -1686,10 +1693,10 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@eslint/js@npm:9.21.0":
|
||||
version: 9.21.0
|
||||
resolution: "@eslint/js@npm:9.21.0"
|
||||
checksum: 10c0/86c24a2668808995037e3f40c758335df2ae277c553ac0cf84381a1a8698f3099d8a22dd9c388947e6b7f93fcc1142f62406072faaa2b83c43ca79993fc01bb3
|
||||
"@eslint/js@npm:9.22.0":
|
||||
version: 9.22.0
|
||||
resolution: "@eslint/js@npm:9.22.0"
|
||||
checksum: 10c0/5bcd009bb579dc6c6ed760703bdd741e08a48cd9decd677aa2cf67fe66236658cb09a00185a0369f3904e5cffba9e6e0f2ff4d9ba4fdf598fcd81d34c49213a5
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -1846,12 +1853,12 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@keyv/serialize@npm:^1.0.2":
|
||||
version: 1.0.2
|
||||
resolution: "@keyv/serialize@npm:1.0.2"
|
||||
"@keyv/serialize@npm:^1.0.3":
|
||||
version: 1.0.3
|
||||
resolution: "@keyv/serialize@npm:1.0.3"
|
||||
dependencies:
|
||||
buffer: "npm:^6.0.3"
|
||||
checksum: 10c0/31c5cb0938d22ce890314befc4d00c248c4c9be9664885978d6449b1787993dbc91999041076d53437888bb5f4280233276fbc4c72f97955d111d7a6ccd4cd67
|
||||
checksum: 10c0/24a257870b0548cfe430680c2ae1641751e6a6ec90c573eaf51bfe956839b6cfa462b4d2827157363b6d620872d32d69fa2f37210a864ba488f8ec7158436398
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -2787,13 +2794,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"cacheable@npm:^1.8.8":
|
||||
version: 1.8.8
|
||||
resolution: "cacheable@npm:1.8.8"
|
||||
"cacheable@npm:^1.8.9":
|
||||
version: 1.8.9
|
||||
resolution: "cacheable@npm:1.8.9"
|
||||
dependencies:
|
||||
hookified: "npm:^1.7.0"
|
||||
keyv: "npm:^5.2.3"
|
||||
checksum: 10c0/24e0f93782015be75b1ec9fe3fb151b2921f61c282091b873f78a0efeb141e95a21d8aa5f4c6bd99a8acb0b485deb5801aa32b4ecf4b666efa7446739368588b
|
||||
hookified: "npm:^1.7.1"
|
||||
keyv: "npm:^5.3.1"
|
||||
checksum: 10c0/355ed0b9a312542176bf98b8d0582f8882163b7831baea3fdc6ba78d7a698e15abc3818ec049b79ad969de0f50771148bb99a616c5632c809ef7fc40f266397d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -3077,14 +3084,14 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"css-minimizer-webpack-plugin@npm:7.0.0":
|
||||
version: 7.0.0
|
||||
resolution: "css-minimizer-webpack-plugin@npm:7.0.0"
|
||||
"css-minimizer-webpack-plugin@npm:7.0.2":
|
||||
version: 7.0.2
|
||||
resolution: "css-minimizer-webpack-plugin@npm:7.0.2"
|
||||
dependencies:
|
||||
"@jridgewell/trace-mapping": "npm:^0.3.25"
|
||||
cssnano: "npm:^7.0.1"
|
||||
cssnano: "npm:^7.0.4"
|
||||
jest-worker: "npm:^29.7.0"
|
||||
postcss: "npm:^8.4.38"
|
||||
postcss: "npm:^8.4.40"
|
||||
schema-utils: "npm:^4.2.0"
|
||||
serialize-javascript: "npm:^6.0.2"
|
||||
peerDependencies:
|
||||
|
@ -3102,7 +3109,7 @@ __metadata:
|
|||
optional: true
|
||||
lightningcss:
|
||||
optional: true
|
||||
checksum: 10c0/607258ea16b753b42cbcf88b0b20c99406d7f162ad3a4da50ec3e23d1fb652d1304815c0d0c577944256c76dff3df64e1708e5c5e255318694ba8aaba7820ca3
|
||||
checksum: 10c0/da12f3214220cec8240af7206477f1d1a0036943b704ae36c75617bda8f1905b4d0f71869eda70dfbb184d3e200be541fc5b8b65781294bde71ede1660406a5b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -3230,7 +3237,7 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"cssnano@npm:^7.0.1":
|
||||
"cssnano@npm:^7.0.4":
|
||||
version: 7.0.6
|
||||
resolution: "cssnano@npm:7.0.6"
|
||||
dependencies:
|
||||
|
@ -3455,14 +3462,14 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"eslint-config-prettier@npm:10.0.2":
|
||||
version: 10.0.2
|
||||
resolution: "eslint-config-prettier@npm:10.0.2"
|
||||
"eslint-config-prettier@npm:10.1.1":
|
||||
version: 10.1.1
|
||||
resolution: "eslint-config-prettier@npm:10.1.1"
|
||||
peerDependencies:
|
||||
eslint: ">=7.0.0"
|
||||
bin:
|
||||
eslint-config-prettier: build/bin/cli.js
|
||||
checksum: 10c0/e0ef3c442661a26fc6e82acec5bb9a418c4a8f65ec8adf0983d3aaba7716d2ed448358b063cce6e3c272c847d14cb856ddf30031770c6571e2b2c3e2a439afd4
|
||||
eslint-config-prettier: bin/cli.js
|
||||
checksum: 10c0/3dbfdf6495dd62e2e1644ea9e8e978100dabcd8740fd264df1222d130001a1e8de05d6ed6c67d3a60727386a07507f067d1ca79af6d546910414beab19e7966e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -3483,13 +3490,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"eslint-scope@npm:^8.2.0":
|
||||
version: 8.2.0
|
||||
resolution: "eslint-scope@npm:8.2.0"
|
||||
"eslint-scope@npm:^8.3.0":
|
||||
version: 8.3.0
|
||||
resolution: "eslint-scope@npm:8.3.0"
|
||||
dependencies:
|
||||
esrecurse: "npm:^4.3.0"
|
||||
estraverse: "npm:^5.2.0"
|
||||
checksum: 10c0/8d2d58e2136d548ac7e0099b1a90d9fab56f990d86eb518de1247a7066d38c908be2f3df477a79cf60d70b30ba18735d6c6e70e9914dca2ee515a729975d70d6
|
||||
checksum: 10c0/23bf54345573201fdf06d29efa345ab508b355492f6c6cc9e2b9f6d02b896f369b6dd5315205be94b8853809776c4d13353b85c6b531997b164ff6c3328ecf5b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -3507,16 +3514,17 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"eslint@npm:9.21.0":
|
||||
version: 9.21.0
|
||||
resolution: "eslint@npm:9.21.0"
|
||||
"eslint@npm:9.22.0":
|
||||
version: 9.22.0
|
||||
resolution: "eslint@npm:9.22.0"
|
||||
dependencies:
|
||||
"@eslint-community/eslint-utils": "npm:^4.2.0"
|
||||
"@eslint-community/regexpp": "npm:^4.12.1"
|
||||
"@eslint/config-array": "npm:^0.19.2"
|
||||
"@eslint/config-helpers": "npm:^0.1.0"
|
||||
"@eslint/core": "npm:^0.12.0"
|
||||
"@eslint/eslintrc": "npm:^3.3.0"
|
||||
"@eslint/js": "npm:9.21.0"
|
||||
"@eslint/js": "npm:9.22.0"
|
||||
"@eslint/plugin-kit": "npm:^0.2.7"
|
||||
"@humanfs/node": "npm:^0.16.6"
|
||||
"@humanwhocodes/module-importer": "npm:^1.0.1"
|
||||
|
@ -3528,7 +3536,7 @@ __metadata:
|
|||
cross-spawn: "npm:^7.0.6"
|
||||
debug: "npm:^4.3.2"
|
||||
escape-string-regexp: "npm:^4.0.0"
|
||||
eslint-scope: "npm:^8.2.0"
|
||||
eslint-scope: "npm:^8.3.0"
|
||||
eslint-visitor-keys: "npm:^4.2.0"
|
||||
espree: "npm:^10.3.0"
|
||||
esquery: "npm:^1.5.0"
|
||||
|
@ -3552,7 +3560,7 @@ __metadata:
|
|||
optional: true
|
||||
bin:
|
||||
eslint: bin/eslint.js
|
||||
checksum: 10c0/558edb25b440cd51825d66fed3e84f1081bd6f4cb2cf994e60ece4c5978fa0583e88b75faf187c1fc21688c4ff7072f12bf5f6d1be1e09a4d6af78cff39dc520
|
||||
checksum: 10c0/7b5ab6f2365971c16efe97349565f75d8343347562fb23f12734c6ab2cd5e35301373a0d51e194789ddcfdfca21db7b62ff481b03d524b8169896c305b65ff48
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -3694,12 +3702,12 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"file-entry-cache@npm:^10.0.6":
|
||||
version: 10.0.6
|
||||
resolution: "file-entry-cache@npm:10.0.6"
|
||||
"file-entry-cache@npm:^10.0.7":
|
||||
version: 10.0.7
|
||||
resolution: "file-entry-cache@npm:10.0.7"
|
||||
dependencies:
|
||||
flat-cache: "npm:^6.1.6"
|
||||
checksum: 10c0/4e7226a5dbe7b5130c848c5fd3a352bb16e4ddb1de10cb4b3ea8375f6ab6085ed10da4db2db8119c61fc7e56fc59a40eeb837a4ae1a3a7c8357a17e69004f113
|
||||
flat-cache: "npm:^6.1.7"
|
||||
checksum: 10c0/b56ea1b6f3f0faf7954667c1991d8ff50901c53cd37c775b72d18d6fa5641bbf0e2cddb84b9d10f900a6ad3d1432f1525405a966b113d7512d9d8f820f1bb7a4
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -3751,14 +3759,14 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"flat-cache@npm:^6.1.6":
|
||||
version: 6.1.6
|
||||
resolution: "flat-cache@npm:6.1.6"
|
||||
"flat-cache@npm:^6.1.7":
|
||||
version: 6.1.7
|
||||
resolution: "flat-cache@npm:6.1.7"
|
||||
dependencies:
|
||||
cacheable: "npm:^1.8.8"
|
||||
flatted: "npm:^3.3.2"
|
||||
hookified: "npm:^1.7.0"
|
||||
checksum: 10c0/2aeba555b61d32d7f0803e6b6b3ba959610cdc0e5b591ed0f80a3ad70c4e80e81afb6853c495cafdcbc3a02386d76a1522babcf04e50c4a1e81df2decfd02e9f
|
||||
cacheable: "npm:^1.8.9"
|
||||
flatted: "npm:^3.3.3"
|
||||
hookified: "npm:^1.7.1"
|
||||
checksum: 10c0/37bf101b35483e2df3f2fbee46e549d8e6ebd932fb4969a800dc595a13bd239b7dfe804a8f565518b39bec78d827344afa21d66849f1f12ca8f13901411f2b9d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -3771,10 +3779,10 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"flatted@npm:^3.2.9, flatted@npm:^3.3.2":
|
||||
version: 3.3.2
|
||||
resolution: "flatted@npm:3.3.2"
|
||||
checksum: 10c0/24cc735e74d593b6c767fe04f2ef369abe15b62f6906158079b9874bdb3ee5ae7110bb75042e70cd3f99d409d766f357caf78d5ecee9780206f5fdc5edbad334
|
||||
"flatted@npm:^3.2.9, flatted@npm:^3.3.3":
|
||||
version: 3.3.3
|
||||
resolution: "flatted@npm:3.3.3"
|
||||
checksum: 10c0/e957a1c6b0254aa15b8cce8533e24165abd98fadc98575db082b786b5da1b7d72062b81bfdcd1da2f4d46b6ed93bec2434e62333e9b4261d79ef2e75a10dd538
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -4043,10 +4051,10 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"hookified@npm:^1.7.0":
|
||||
version: 1.7.1
|
||||
resolution: "hookified@npm:1.7.1"
|
||||
checksum: 10c0/779cb2f912d19f9cf00ec081d2fb07068553093e8cfaab7fb536b45a04b5743ac836e7fd4d09f1473f82c105338aa2539a104e5fb28e55f4ec1ce0be28ea9acc
|
||||
"hookified@npm:^1.7.1":
|
||||
version: 1.8.1
|
||||
resolution: "hookified@npm:1.8.1"
|
||||
checksum: 10c0/f3ed2ec2e522946cbf9c673f05ff5ead266bb6fd8ff2c2beb8bea0ea786658131fdb72f3aa2c2c154451f08316a3c266ecb74522647c35c25c3e9c16d9584d55
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -4342,15 +4350,15 @@ __metadata:
|
|||
resolution: "jenkins-ui@workspace:."
|
||||
dependencies:
|
||||
"@babel/cli": "npm:7.26.4"
|
||||
"@babel/core": "npm:7.26.9"
|
||||
"@babel/core": "npm:7.26.10"
|
||||
"@babel/preset-env": "npm:7.26.9"
|
||||
"@eslint/js": "npm:9.21.0"
|
||||
"@eslint/js": "npm:9.22.0"
|
||||
babel-loader: "npm:10.0.0"
|
||||
clean-webpack-plugin: "npm:4.0.0"
|
||||
css-loader: "npm:7.1.2"
|
||||
css-minimizer-webpack-plugin: "npm:7.0.0"
|
||||
eslint: "npm:9.21.0"
|
||||
eslint-config-prettier: "npm:10.0.2"
|
||||
css-minimizer-webpack-plugin: "npm:7.0.2"
|
||||
eslint: "npm:9.22.0"
|
||||
eslint-config-prettier: "npm:10.1.1"
|
||||
eslint-formatter-checkstyle: "npm:8.40.0"
|
||||
globals: "npm:16.0.0"
|
||||
handlebars: "npm:4.7.8"
|
||||
|
@ -4368,7 +4376,7 @@ __metadata:
|
|||
sass-loader: "npm:16.0.5"
|
||||
sortablejs: "npm:1.15.6"
|
||||
style-loader: "npm:4.0.0"
|
||||
stylelint: "npm:16.15.0"
|
||||
stylelint: "npm:16.16.0"
|
||||
stylelint-checkstyle-reporter: "npm:1.0.0"
|
||||
stylelint-config-standard-scss: "npm:14.0.0"
|
||||
tippy.js: "npm:6.3.7"
|
||||
|
@ -4551,12 +4559,12 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"keyv@npm:^5.2.3":
|
||||
version: 5.2.3
|
||||
resolution: "keyv@npm:5.2.3"
|
||||
"keyv@npm:^5.3.1":
|
||||
version: 5.3.1
|
||||
resolution: "keyv@npm:5.3.1"
|
||||
dependencies:
|
||||
"@keyv/serialize": "npm:^1.0.2"
|
||||
checksum: 10c0/76b87dd2c21a4c1c5c05e9ff3b85670beab98f153429aaa9aee544b72b65411a7d80d96c29f3fef3e9dcebb672c8268e7209d6f80beb5da939b4e019722948b4
|
||||
"@keyv/serialize": "npm:^1.0.3"
|
||||
checksum: 10c0/d5ffe3d2d547a50a5e1189d5acbc0480821c22c025082851a8eeb26667d789f3f7b7ee7beb933660d98c239f7e7c403c652a511693670a78a73f06cd411e04fa
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -6046,7 +6054,7 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"postcss@npm:8.5.3, postcss@npm:^8.4.33, postcss@npm:^8.4.38, postcss@npm:^8.5.3":
|
||||
"postcss@npm:8.5.3, postcss@npm:^8.4.33, postcss@npm:^8.4.40, postcss@npm:^8.5.3":
|
||||
version: 8.5.3
|
||||
resolution: "postcss@npm:8.5.3"
|
||||
dependencies:
|
||||
|
@ -6698,9 +6706,9 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"stylelint@npm:16.15.0":
|
||||
version: 16.15.0
|
||||
resolution: "stylelint@npm:16.15.0"
|
||||
"stylelint@npm:16.16.0":
|
||||
version: 16.16.0
|
||||
resolution: "stylelint@npm:16.16.0"
|
||||
dependencies:
|
||||
"@csstools/css-parser-algorithms": "npm:^3.0.4"
|
||||
"@csstools/css-tokenizer": "npm:^3.0.3"
|
||||
|
@ -6715,7 +6723,7 @@ __metadata:
|
|||
debug: "npm:^4.3.7"
|
||||
fast-glob: "npm:^3.3.3"
|
||||
fastest-levenshtein: "npm:^1.0.16"
|
||||
file-entry-cache: "npm:^10.0.6"
|
||||
file-entry-cache: "npm:^10.0.7"
|
||||
global-modules: "npm:^2.0.0"
|
||||
globby: "npm:^11.1.0"
|
||||
globjoin: "npm:^0.1.4"
|
||||
|
@ -6742,7 +6750,7 @@ __metadata:
|
|||
write-file-atomic: "npm:^5.0.1"
|
||||
bin:
|
||||
stylelint: bin/stylelint.mjs
|
||||
checksum: 10c0/32dee221fe8980e08adcdc7c48ddab51eac263784b0cc2f4eb9c029e3589ad6ce7dae710ec2aadb57bdbfecec579326c75918686f1563576715cbd3095c5dd12
|
||||
checksum: 10c0/7884a347fbaf04215f205bb9630bce91c72a3d08ddd5aec1d1ad7ccfdff50854bb6ad995945d5d6a6a4052a1c5fadb3fd4929e8e7db4cde5a6ce0f7dbe537800
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
|
Loading…
Reference in New Issue