Giter Club home page Giter Club logo

sidebar-link-plugin's Introduction

Build Status Build Appveyor

Sidebar Link Plug-in for Jenkins

Add links in the sidebar of the Jenkins main page, view tabs and project pages.

This simple plugin adds an Additional Sidebar Links section in the main Jenkins configuration page, with settings for link URLs, texts and icons. These links will be shown in the top-level Jenkins pages (main page, user list, build history, My Projects and other project view tabs). Sidebar links for particular jobs may also be added in the job configuration pages.

Change log

See CHANGELOG.md.

sidebar-link-plugin's People

Contributors

alanharder avatar alecharp avatar alexbrjo avatar basil avatar damianszczepanik avatar dan-heath avatar daniel-beck avatar daniel-beck-bot avatar dependabot[bot] avatar dohbedoh avatar huybrechts avatar jglick avatar jonesbusy avatar kalleolaviniemitalo avatar kevin-cb avatar larrys avatar lvotypko avatar mawinter69 avatar ndeloof avatar oleg-nenashev avatar olivergondza avatar programbeginnertw avatar timja avatar timja-bot avatar tyuki39 avatar verhagen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sidebar-link-plugin's Issues

Sidebar link with Jenkins user name veriable

Feature Request

Hi, thank you for the great useful plugin.

It seems that the sidebar plugin does not allow to use any environment variable for the URL (e.g., https://example.com&user=$USER_NAME). I wish to use the dynamic URL link containing the logged-in Jenkins user ID. Is there any way to do this?

[JENKINS-68250] Icon defaults to help.png, which was deleted in Jenkins 2.333

This issue is also tracked as JENKINS-68250.

Jenkins and plugins versions report

I have not reproduced this bug yet, but I think it will occur when Sidebar Link 2.1.0 is used with Jenkins 2.333 or later.

What Operating System are you using (both controller, and any agents involved in the problem)?

Any

Reproduction steps

  1. Define a sidebar link in the global configuration, without specifying an icon.
  2. Save the settings.
  3. View the sidebar on the main page.

Expected Results

The sidebar link should have a default icon.

Actual Results

Icon won't load.

Anything else?

PR #25 made LinkAction use "static/efbf17e4/images/16x16/help.png" as the default icon. As of Sidebar Link 2.1.0, LinkAction still does so:

if(StringUtils.isBlank(iconFileName)) {
iconFileName = "static/efbf17e4/images/16x16/help.png";
}

However, jenkinsci/jenkins#5778 deleted war/src/main/webapp/images/16x16/help.png from the Jenkins core. This change was released in Jenkins 2.333 (2022-01-31). The icon has been replaced with war/src/main/webapp/images/svgs/help.svg, which was moved to that directory in jenkinsci/jenkins#5663 and released in Jenkins 2.308 (2021-08-24).

There is a migration guide in Icon path to icon class migration but it looks a bit difficult to apply in the Sidebar Link plugin. I think the best fix is to save an empty string as the icon file name in the persistent configuration and substitute a version-specific default when the link is rendered. This would require separating LinkAction.getIconFileName() to two methods: one that implements Action.getIconFileName() and another that is used for the configuration UI and CasC. I hope @Symbol can be used to retain compatibility with existing CasC jenkins.yaml files.

Alternatively, Sidebar Link could ship with its own copy of help.svg and always default to that.

Link Icon complains about missing image

Jenkins and plugins versions report

Environment

Jenkins version 2.334
Sidebar Link version 2.0.1

What Operating System are you using (both controller, and any agents involved in the problem)?

Windows

Reproduction steps

Set a native Jenkins icon according to the help button and the "Link Icon" field complains about the icon missing.

Expected Results

No errors

Actual Results

The error is true, there is no such icon in that path, but Jenkins provides it and the icon is displayed fine, therefore the error is wrong.

Anything else?

No response

add support for build pages

What feature do you want to see added?

So far one can add sidebar links to various classes incl. jobs.
One cannot add a sidebar link to a single build page.
Within a pipeline when using "sidebarlinks" inside "options" this always changes the job: no change on the build page can be seen.

Upstream changes

No response

Are you interested in contributing this feature?

No response

Don't work with variables

Hi! I want add links with variables: https://jenkins.albus/job/projja/job/Release/parambuild/?commit=${commit}&branch=${branch}&build=${build}

But error in GUI:

The provided URL is malformed: https://jenkins.albus/job/projja/job/Release/parambuild/?commit=${commit}&branch=${branch}&build=${build}
java.net.URISyntaxException: Illegal character in query at index 74: https://jenkins.albus/job/projja/job/Release/parambuild/?commit=${commit}&branch=${branch}&build=${build}
	at java.net.URI$Parser.fail(URI.java:2848)
	at java.net.URI$Parser.checkChars(URI.java:3021)
	at java.net.URI$Parser.parseHierarchical(URI.java:3111)
	at java.net.URI$Parser.parse(URI.java:3053)
	at java.net.URI.<init>(URI.java:588)
	at hudson.plugins.sidebar_link.LinkProtection.verifyUrl(LinkProtection.java:87)
	at hudson.plugins.sidebar_link.SidebarLinkPlugin.doCheckUrl(SidebarLinkPlugin.java:121)
	at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
	at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:396)
	at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:408)
	at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:212)
	at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:145)
	at org.kohsuke.stapler.MetaClass$11.doDispatch(MetaClass.java:536)
	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766)
	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898)
	at org.kohsuke.stapler.MetaClass$4.doDispatch(MetaClass.java:281)
	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766)
	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898)
	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:694)
	at org.kohsuke.stapler.Stapler.service(Stapler.java:240)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:763)
	at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1633)
	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154)
	at org.jenkinsci.plugins.ssegateway.Endpoint$SSEListenChannelFilter.doFilter(Endpoint.java:248)
	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
	at jenkins.telemetry.impl.UserLanguages$AcceptLanguageFilter.doFilter(UserLanguages.java:129)
	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
	at jenkins.security.ResourceDomainFilter.doFilter(ResourceDomainFilter.java:76)
	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
	at io.jenkins.blueocean.ResourceCacheControl.doFilter(ResourceCacheControl.java:134)
	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
	at io.jenkins.blueocean.auth.jwt.impl.JwtAuthenticationFilter.doFilter(JwtAuthenticationFilter.java:60)
	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
	at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:157)
	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1609)
	at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:159)
	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1609)
	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
	at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
	at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)
	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
	at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
	at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
	at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
	at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
	at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
	at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
	at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:90)
	at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1609)
	at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:51)
	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1609)
	at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1609)
	at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1609)
	at jenkins.security.SuspiciousRequestFilter.doFilter(SuspiciousRequestFilter.java:36)
	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1609)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:561)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:578)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1612)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1434)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1582)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1349)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
	at org.eclipse.jetty.server.Server.handle(Server.java:516)
	at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383)
	at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:556)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273)
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
	at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:375)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:773)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:905)
	at java.lang.Thread.run(Thread.java:748)

Could you just add an example image or two so users can see what it looks like?

Describe your use-case which is not covered by existing documentation.

This plugin seems like what I need, but I don't want to have to install it, set it up, and test it before getting to see what it actually looks like.

Is it too much to just throw an example image or two into the docs? Just a screenshot of a build status page with a sidebar link this thing added.

Thanks!

Reference any relevant documentation, other materials or issues/pull requests that can be used for inspiration.

No response

Cannot use relative link

I'm trying to set up a relative link

grafik

The link is displayed:

grafik

But I get

grafik

What do I need to configure that the simple link /test.html works?

(Adding the Protocol/Host/Port is not possible because jenkins is also available via ssh tunnel with other host/port.)

Update Center warns about Sidebar Link upgrade from 2.0.0 to 2.0.1

Jenkins and plugins versions report

Environment
Jenkins: 2.319.3
OS: Windows Server 2012 R2 - 6.3
---
Office-365-Connector:4.15.2
ace-editor:1.1
analysis-model-api:10.9.1
ansicolor:1.0.1
antisamy-markup-formatter:2.7
apache-httpcomponents-client-4-api:4.5.13-1.0
atlassian-bitbucket-server-integration:3.1.0
authentication-tokens:1.4
authorize-project:1.4.0
azure-ad:191.vfc8019068670
azure-sdk:85.v4817a_b_8a_7124
basic-branch-build-strategies:1.3.2
bitbucket-server-checks:1.0-SNAPSHOT (private-49d94041-kalle)
bootstrap4-api:4.6.0-3
bootstrap5-api:5.1.3-4
bouncycastle-api:2.25
branch-api:2.7.0
buildtriggerbadge:2.11
caffeine-api:2.9.2-29.v717aac953ff3
checks-api:1.7.2
cloudbees-bitbucket-branch-source:751.vda_24678a_f781
cloudbees-disk-usage-simple:0.10
cloudbees-folder:6.17
command-launcher:1.6
compress-artifacts:1.10
configuration-as-code:1346.ve8cfa_3473c94
copyartifact:1.46.2
credentials:1074.v60e6c29b_b_44b_
credentials-binding:1.27.1
custom-tools-plugin:0.8
data-tables-api:1.11.3-6
display-url-api:2.3.5
dtkit-api:3.0.0
durable-task:493.v195aefbb0ff2
echarts-api:5.2.2-2
extended-choice-parameter:0.82
extended-read-permission:3.2
fast-track:1.0.0
font-awesome-api:5.15.4-5
forensics-api:1.7.0
git:4.10.3
git-client:3.11.0
git-forensics:1.3.0
git-server:1.10
handlebars:3.0.8
handy-uri-templates-2-api:2.1.8-1.0
hudson-wsclean-plugin:1.0.8
jackson2-api:2.13.1-246.va8a9f3eaf46a
javax-activation-api:1.2.0-2
javax-mail-api:1.6.2-5
jaxb:2.3.0.1
jdk-tool:1.0
jira:3.6
job-restrictions:0.8
jquery:1.12.4-1
jquery3-api:3.6.0-2
jsch:0.1.55.2
junit:1.54
lockable-resources:2.14
mailer:408.vd726a_1130320
matrix-auth:3.0.1
matrix-project:1.20
momentjs:1.1.1
mstest:1.0.0
next-build-number:1.8
nunit:0.27
okhttp-api:4.9.3-105.vb96869f8ac3a
pipeline-build-step:2.15
pipeline-graph-analysis:188.v3a01e7973f2c
pipeline-graph-view:51.v5a693b766483
pipeline-input-step:446.vf27b_0b_83500e
pipeline-milestone-step:100.v60a_03cd446e1
pipeline-model-api:1.9.3
pipeline-model-definition:1.9.3
pipeline-model-extensions:1.9.3
pipeline-rest-api:2.21
pipeline-stage-step:291.vf0a8a7aeeb50
pipeline-stage-tags-metadata:1.9.3
pipeline-stage-view:2.21
pipeline-utility-steps:2.12.0
plain-credentials:1.8
plugin-util-api:2.13.0
popper-api:1.16.1-2
popper2-api:2.11.2-1
prism-api:1.25.0-2
resource-disposer:0.17
scm-api:595.vd5a_df5eb_0e39
script-security:1131.v8b_b_5eda_c328e
sidebar-link:2.0.0
sidebar-update-notification:1.1.0
snakeyaml-api:1.29.1
ssh-credentials:1.19
sshd:3.1.0
structs:308.v852b473a2b8c
timestamper:1.17
token-macro:270.v8c2ce50dc4fc
trilead-api:1.0.13
vstestrunner:1.0.8
warnings-ng:9.11.0
windows-slaves:1.0
workflow-aggregator:2.6
workflow-api:1136.v7f5f1759dc16
workflow-basic-steps:2.24
workflow-cps:2648.va9433432b33c
workflow-cps-global-lib:552.vd9cc05b8a2e1
workflow-durable-task-step:1121.va_65b_d2701486
workflow-job:1145.v7f2433caa07f
workflow-multibranch:706.vd43c65dec013
workflow-scm-step:2.13
workflow-step-api:622.vb_8e7c15b_c95a_
workflow-support:813.vb_d7c3d2984a_0
ws-cleanup:0.40
xunit:3.0.5

What Operating System are you using (both controller, and any agents involved in the problem)?

Windows Server 2012 R2

Reproduction steps

  1. Install Sidebar Link plugin version 2.0.0.
  2. Restart Jenkins controller.
  3. Check for available plugin updates in Update Center.

Expected Results

Sidebar Link 2.0.1 should be listed as available and compatible with the installed version, because 2.0.1 is compatible with 2.0.0 and only incompatible with settings saved by 1.* versions.

Actual Results

Sidebar Link 2.0.1 is listed with this warning:

Warning: The new version of this plugin is marked as incompatible with the installed version. This is usually the case because its behavior changed, or because it uses a different settings format than the installed version. Jobs using this plugin may need to be reconfigured, and/or you may not be able to cleanly revert to the prior version without manually restoring old settings. Consult the plugin release notes for details.

Anything else?

I guess this should say 2.0.0 rather than 2.00.1:

<hpi.compatibleSinceVersion>2.00.1</hpi.compatibleSinceVersion>

Blocked iframe

This plugin uses an iframe, that is blocked on Chrome 96.0.4664.45, Firefox v94.0.1 and Edge based on my testing,

Migrate the plugin documentation from Wiki to GitHub

We have recently introduced support of GitHub documentation on the Jenkins Plugin Site. See this Developer thread for the announcement.

Jenkins users seeking documentation will have a better user experience on plugins.jenkins.io than they do on wiki.jenkins.io. At the same time, maintainers can follow the documentation-as-code approach and make documentation changes a part of pull requests. Documentation changes will be reviewed as part of pull requests and documentation contributors will be recognized, especially when combined with Release Drafter.

Once documentation is moved, the plugin metadata needs to be updated to point to GitHub: documentation URL in the project file (guide) . Then the change will be applied after the release.

P.S: In Jenkins project we track the documentation migration as one of the Hacktoberfest featured project: https://jenkins.io/events/hacktoberfest/ . Please feel free to put hacktoberfest and good first issue label in this repo if you are interested to suggest it for external contributions

How to use this plugin

Describe your use-case which is not covered by existing documentation.

I would like to put a link or button in the navbar.
I've installed the plugin without any issues, but i'm unable to use the plugin.

I'm started from 0

image

Reference any relevant documentation, other materials or issues/pull requests that can be used for inspiration.

No response

Support for ionicon

What feature do you want to see added?

Hi,

It would be amazing if this plugin support ionicon (For example like the custom-folder-icon plugin jenkinsci/custom-folder-icon-plugin#85)

What we have

  • We have some ionicon on the userContent folder
  • The SVG have the stroke="currentColor" but because they are loading by , style is not applied

See the issue with dark-theme (We expect the SVG to be white)

sidebar_link_ionicon

Best regards,

Upstream changes

No response

Add a changelog for releases

Hey @damianszczepanik,

Jenkins plugins typically have some sort of changelog for each release, written in an end-user-friendly way.
The Jenkins plugin portal maintains a native integration with GitHub releases. For example, the release page of a plugin mirrors the associated GitHub release, which are generated based on pull request titles from https://github.com/jenkinsci/git-plugin/blob/master/.github/workflows/release-drafter.yml.

Alternatively, plugin developers can always write their release notes, if they would rather not use the action.

Would you be interested in publishing release notes for your plugin? From an end-user perspective, it's demotivating to not know what changed between versions before updating.

Thanks for considering!

It's impossible to delete all global sidebar links

Jenkins and plugins versions report

Environment
Version 2.3.0 of sidebar-link

What Operating System are you using (both controller, and any agents involved in the problem)?

doesn't matter

Reproduction steps

  1. Go to manage Jenkins -> configure
  2. Add a sidebar link
  3. Press Apply
  4. Delete all sidebar links
  5. Press Save

Expected Results

No sidebar links are shown/configured

Actual Results

The sidebar link is still there.
When you have 2 sidebar links and try to delete both at the same time, both will stay.

Anything else?

Deleting all sidebar links of a jobs and folders works fine

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.