jenkinsci / plugin-installation-manager-tool

Plugin Manager CLI tool for Jenkins
MIT License
390 stars 202 forks source link

List of available plugins is different between GUI and script #351

Closed AssafKatz3 closed 1 year ago

AssafKatz3 commented 3 years ago

Version report

Jenkins and plugins versions report:

Jenkins: 2.289.2
OS: Linux - 3.10.0-1160.15.2.el7.x86_64
---
jaxb:2.3.0
ace-editor:1.1
ant:1.11
antisamy-markup-formatter:2.1
apache-httpcomponents-client-4-api:4.5.13-1.0
authentication-tokens:1.4
bootstrap4-api:4.6.0-3
bootstrap5-api:5.0.2-1
bouncycastle-api:2.21
branch-api:2.6.5
build-timeout:1.20
caffeine-api:2.9.1-23.v51c4e2c879c8
checks-api:1.7.2
cloudbees-folder:6.15
command-launcher:1.6
credentials-binding:1.27
credentials:2.5
display-url-api:2.3.5
docker-commons:1.17
docker-workflow:1.26
durable-task:1.38
echarts-api:5.1.2-3
email-ext:2.83
font-awesome-api:5.15.3-4
git-client:3.8.0
git-server:1.10
git:4.8.0
github-api:1.123
github-branch-source:2.11.1
github:1.33.1
gradle:1.37.1
handlebars:3.0.8
jackson2-api:2.12.4
jdk-tool:1.5
jjwt-api:0.11.2-9.c8b45b8bb173
jquery3-api:3.6.0-2
jsch:0.1.55.2
junit:1.51
ldap:2.7
lockable-resources:2.11
mailer:1.34
matrix-auth:2.6.8
matrix-project:1.19
momentjs:1.1.1
okhttp-api:3.14.9
pam-auth:1.6
pipeline-build-step:2.14
pipeline-github-lib:1.0
pipeline-graph-analysis:1.11
pipeline-input-step:2.12
pipeline-milestone-step:1.3.2
pipeline-model-api:1.8.5
pipeline-model-definition:1.8.5
pipeline-model-extensions:1.8.5
pipeline-rest-api:2.19
pipeline-stage-step:2.5
pipeline-stage-tags-metadata:1.8.5
pipeline-stage-view:2.19
pipeline-utility-steps:2.8.0
plain-credentials:1.7
plugin-util-api:2.4.0
popper-api:1.16.1-2
popper2-api:2.5.4-3
resource-disposer:0.16
scm-api:2.6.4
script-security:1.77
snakeyaml-api:1.29.1
ssh-credentials:1.19
ssh-slaves:1.32.0
sshd:3.1.0
structs:1.23
timestamper:1.13
token-macro:2.15
trilead-api:1.0.13
workflow-aggregator:2.6
workflow-api:2.46
workflow-basic-steps:2.23
workflow-cps-global-lib:2.21
workflow-cps:2.93
workflow-durable-task-step:2.39
workflow-job:2.41
workflow-multibranch:2.26
workflow-scm-step:2.13
workflow-step-api:2.24
workflow-support:3.8
ws-cleanup:0.39
See docker file below

Reproduction steps

  1. Buiild with Dockerfile
  2. Open JENKINS_URL/pluginManager and see: Possible updates
  3. Validate JENKINS_URL/pluginManager/advanced, the only filled value is Update Site=https://updates.jenkins.io/update-center.json.
  4. Run: jenkins-plugin-cli --available-updates

Results

Expected result:

Get a list of available updates like in GUI

Actual result:

No available updates

timja commented 3 years ago

Available updates is based off of an input plugins file and not based off of what is installed, it assumes you’re managing all plugins in that file

AssafKatz3 commented 3 years ago

Available updates is based off of an input plugins file and not based off of what is installed, it assumes you’re managing all plugins in that file

Hi,

So I don't understand, how can (if any) I update all plugins to latest versions by this tool?

Thanks

timja commented 3 years ago

This is the normal work flow: https://github.com/jenkinsci/docker#updating-plugins-file-preview

AssafKatz3 commented 3 years ago

This is the normal work flow: https://github.com/jenkinsci/docker#updating-plugins-file-preview

Hi,

Unfortunately, I create docker image for offline so it won't help me, at least as is :-( I will check if I can use the bash command in dockerfile.

Thanks

AssafKatz3 commented 3 years ago

This is the normal work flow: https://github.com/jenkinsci/docker#updating-plugins-file-preview

Hi,

I checked and /usr/share/jenkins/ref/plugins.txt isn't existed at all, the documentation is wrong :-(... Moreover I used:

jenkins-plugin-cli --pluginsls /var/jenkins_home/plugins/*.jpi | xargs -I{} basename {} .jpi--available-updates

And still got "No available updates". Actually, I want to force upgrades of plugins that have been manually upgraded during the build, but the instructions in the link refer to case that I run the container, not build the image.

Thanks

fostermi commented 2 years ago

Regardless of what's used for updating, this should be resolved. If another user installs a plugin via the UI, it won't be reflected in the cli, which affects using the cli to manage the instance via Infrastructure as Code or orchestration.

timja commented 2 years ago

If you're managing it via infra as code why is someone installing plugins via the UI?

fostermi commented 2 years ago

It also doesn't list plugins that are installed as dependencies of plugins that ARE installed via the CLI. For example "oic-auth" seems to install "JDK Tool Plugin" and "Oracle Java SE Development Kit Installer". The point is, its not in sync and makes it difficult to find dependencies. Installing a plugin via the cli that doesn't report its dependencies makes taking a diff impossible.

AssafKatz3 commented 1 year ago

We finally found workaround (that I forgot to document here..)