Unable to install Jenkins from Helm chart - jenkins

I'm attempting to install Jenkins from a Helm chart for the first time.
I run
helm repo add jenkins https://charts.jenkins.io
helm repo update
helm upgrade --install myjenkins jenkins/jenkins
But the service never starts. The pod logs show the following errors:
Plugin git:4.10.0 (via credentials:1055.v1346ba467ba1) depends on configuration-as-code:1.55, but there is an older version defined on the top level - configuration-as-code:1.54
at io.jenkins.tools.pluginmanager.impl.PluginManager.start(PluginManager.java:222)
at io.jenkins.tools.pluginmanager.impl.PluginManager.start(PluginManager.java:171)
at io.jenkins.tools.pluginmanager.cli.Main.main(Main.java:70)
Suppressed: io.jenkins.tools.pluginmanager.impl.PluginDependencyException: Plugin kubernetes:1.30.11 (via credentials:1055.v1346ba467ba1) depends on configuration-as-code:1.55, but there is an older version defined on the top level - configuration-as-code:1.54
at io.jenkins.tools.pluginmanager.impl.PluginManager.resolveRecursiveDependencies(PluginManager.java:1074)
at io.jenkins.tools.pluginmanager.impl.PluginManager.findPluginsAndDependencies(PluginManager.java:649)
at io.jenkins.tools.pluginmanager.impl.PluginManager.start(PluginManager.java:214)
... 2 more
Suppressed: io.jenkins.tools.pluginmanager.impl.PluginDependencyException: Plugin workflow-aggregator:2.6 (via credentials:1055.v1346ba467ba1) depends on configuration-as-code:1.55, but there is an older version defined on the top level - configuration-as-code:1.54
at io.jenkins.tools.pluginmanager.impl.PluginManager.resolveRecursiveDependencies(PluginManager.java:1074)
at io.jenkins.tools.pluginmanager.impl.PluginManager.findPluginsAndDependencies(PluginManager.java:649)
at io.jenkins.tools.pluginmanager.impl.PluginManager.start(PluginManager.java:214)
... 2 more
Suppressed: io.jenkins.tools.pluginmanager.impl.PluginDependencyException: Plugin git:4.10.0 (via credentials:1055.v1346ba467ba1) depends on configuration-as-code:1.55, but there is an older version defined on the top level - configuration-as-code:1.54
at io.jenkins.tools.pluginmanager.impl.PluginManager.resolveRecursiveDependencies(PluginManager.java:1074)
at io.jenkins.tools.pluginmanager.impl.PluginManager.findPluginsAndDependencies(PluginManager.java:649)
at io.jenkins.tools.pluginmanager.impl.PluginManager.start(PluginManager.java:214)
... 2 more
Multiple plugin prerequisites not met:
Plugin kubernetes:1.30.11 (via credentials:1055.v1346ba467ba1) depends on configuration-as-code:1.55, but there is an older version defined on the top level - configuration-as-code:1.54,
Plugin workflow-aggregator:2.6 (via credentials:1055.v1346ba467ba1) depends on configuration-as-code:1.55, but there is an older version defined on the top level - configuration-as-code:1.54,
Plugin git:4.10.0 (via credentials:1055.v1346ba467ba1) depends on configuration-as-code:1.55, but there is an older version defined on the top level - configuration-as-code:1.54
How can I fix this?

The solution appears to be to force the Helm chart to install updated plugins. The following values.yaml file allowed me to complete the deployment:
controller:
installPlugins:
- configuration-as-code:1.55
- kubernetes:1.31.1
- workflow-aggregator:2.6
- git:4.10.1

There are three options to fix this issue:
Remove top level plugins that are dependencies of other plugins you use ("git" and "configuration-as-code" are most likely offenders). However, sometimes plugins could have conflicting dependency versions and then this would not work.
Jenkins' plugins.txt file supports :latest as a version.
So your configuration could look like this:
controller:
installPlugins:
- configuration-as-code:latest
- kubernetes:latest
- workflow-aggregator:latest
- git:latest
set controller.installLatestPlugins to false. This will set to download minimal required version of plugins. So, if you're not using :latest specifier yourself then it should work. However, you'll be stuck with the old versions of the plugins.

This - configuration-as-code:1.55 in values.yml fix the problem.

You can upgrade to the version suggested in the message (after depends on...)
Plugin kubernetes:1.30.11 (via credentials:1055.v1346ba467ba1) depends on configuration-as-code:1.55, but there is an older version defined on the top level - configuration-as-code:1.54,
Plugin workflow-aggregator:2.6 (via credentials:1055.v1346ba467ba1) depends on configuration-as-code:1.55, but there is an older version defined on the top level - configuration-as-code:1.54,
Plugin git:4.10.0 (via credentials:1055.v1346ba467ba1) depends on configuration-as-code:1.55, but there is an older version defined on the top level - configuration-as-code:1.54

Related

Issue while running dataflow

I am getting below error while running dataflow job. I am trying to update my existing beam version to 2.11.0 but I am getting below error at run time.
java.lang.IncompatibleClassChangeError: Class
org.apache.beam.model.pipeline.v1.RunnerApi$StandardPTransforms$Primitives
does not implement the requested interface
com.google.protobuf.ProtocolMessageEnum at
org.apache.beam.runners.core.construction.BeamUrns.getUrn(BeamUrns.java:27)
at
org.apache.beam.runners.core.construction.PTransformTranslation.(PTransformTranslation.java:58)
at
org.apache.beam.runners.core.construction.UnconsumedReads$1.visitValue(UnconsumedReads.java:49)
at
org.apache.beam.sdk.runners.TransformHierarchy$Node.visit(TransformHierarchy.java:666)
at
org.apache.beam.sdk.runners.TransformHierarchy$Node.visit(TransformHierarchy.java:649)
at
org.apache.beam.sdk.runners.TransformHierarchy$Node.visit(TransformHierarchy.java:649)
at
org.apache.beam.sdk.runners.TransformHierarchy$Node.visit(TransformHierarchy.java:649)
at
org.apache.beam.sdk.runners.TransformHierarchy$Node.access$600(TransformHierarchy.java:311)
at
org.apache.beam.sdk.runners.TransformHierarchy.visit(TransformHierarchy.java:245)
at
org.apache.beam.sdk.Pipeline.traverseTopologically(Pipeline.java:458)
at
org.apache.beam.runners.core.construction.UnconsumedReads.ensureAllReadsConsumed(UnconsumedReads.java:40)
at
org.apache.beam.runners.dataflow.DataflowRunner.replaceTransforms(DataflowRunner.java:868)
at
org.apache.beam.runners.dataflow.DataflowRunner.run(DataflowRunner.java:660)
at
org.apache.beam.runners.dataflow.DataflowRunner.run(DataflowRunner.java:173)
at org.apache.beam.sdk.Pipeline.run(Pipeline.java:313) at
org.apache.beam.sdk.Pipeline.run(Pipeline.java:299)
This usually means that the version of com.google.protobuf:protobuf-java that Beam was built with does not match the version at runtime. Does your pipeline code also depend on protocol buffers?
UPDATE: I have filed https://issues.apache.org/jira/browse/BEAM-6839 to track this. It is not expected.
I don't have enough rep to leave a comment, but I ran into this issue and later figured out that my problem was that I had different beam versions in my pom.xml. Some had 2.19 and some had 2.20.
I would do a quick search of your versions in the pom or gradle file to make sure they are all the same.
This may be caused by incompatible dependencies. I successfully upgraded beam from 2.2.0 to 2.20.0 by upgrading the dependencies at the same time.
beam.version: 2.20.0
guava.version: 29.0-jre
bigquery.version: v2-rev20191211-1.30.9
google-api-client.version: 1.30.9
google-http-client.version: 1.34.0
pubsub.version: v1-rev20200312-1.30.9

Apache Beam - CassandraIO write Async - 2.6.0 error

I am using following libraries for apache beam to run dataflow job to read data from BigQuery and Store/Write to Cassandra.
beam-sdks-java-io-cassandra - 2.6.0
beam-sdks-java-io-jdbc - 2.6.0
beam-sdks-java-io-google-cloud-platform - 2.6.0
beam-sdks-java-core - 2.6.0
google-cloud-dataflow-java-sdk-all - 2.5.0
google-api-client -1.25.0
Since beam-sdks-java-io-cassandra > 2.3 version support saveAsync, I have upgraded all my libraries to 2.6.0.
After libraries update, I am getting following error at the time insert/save data to Cassandra.
java.lang.NoSuchMethodError: com.datastax.driver.mapping.Mapper.saveAsync(Ljava/lang/Object;)Lorg/apache/beam/repackaged/beam_sdks_java_io_cassandra/com/google/common/util/concurrent/ListenableFuture;
at org.apache.beam.sdk.io.cassandra.CassandraServiceImpl$WriterImpl.write(CassandraServiceImpl.java:435)
at org.apache.beam.sdk.io.cassandra.CassandraIO$WriteFn.processElement(CassandraIO.java:493)
It looks like it is an issue of ListenableFuture from Gauva and Cassandra Driver.
I have a workaround for this. Use beam-sdks-java-io-cassandra - 2.4.0.
I'm working on fixing this incl. some other stuff... will update here.
Update: Most likely found the issue. Pushed a fix to my own fork. However it might take sometime until this can be made into a PR and released by the guys at Beam... If anyone wants to use the version I built - you can take a look at how it's done here

How do I install LLVM/Clang/libc++ version 3.9 on Travis-CI?

I know how to install LLVM/Clang/libc++ 3.8 on Travis CI, through the whitelisted llvm-toolchain-trusty-3.8, but this doesn't exist (or work) for 3.9.
Note the thing I need is libc++experimental.a, which contains the implementation of std::experimental::filesystem for libc++.
I really find the Travis-CI way of doing things kind of inflexible, so if there is a wholly alternative way of getting specific versions of things installed on a build machine, please enlighten me and free me from these stupid limitations. I also don't want to build every single toolchain dependency on Travis, that would be overkill.
The best way to get new libc++ in Travis-CI is to build it from source after installing LLVM/Clang.
Here is the script I wrote to download, build and install libc++ for Travis, and here is an example usage in Google Benchmarks .travis.yml. The script takes about 120 seconds to complete.
PS. I'm happy to see people using libc++'s std::experimental::filesystem :-)
You can install packages with apt addon into your container-based image.
Add next lines to your .travis.yml
addons:
apt:
sources:
- llvm-toolchain-trusty-3.9
packages:
- clang-3.9
- libc++-dev
- libc++abi-dev
Side note: At the moment you have posted your question llvm-toolchain-trusty-3.9 were whitelisted

Make meta-electron compatible with jethro Yocto version

I'm trying to cross-compile Electron on the DIGI's ConnectCore6. To do so, I'm using Yocto and the 5 layers provided by DIGI (all based on the jethro version of Yocto).
Or, to implement Electron on the SBC, I have to use the meta-electron layer, which has four dependencies :
openembedded-core
meta-openembedded
meta-clang (see this)
meta-browser (see this)
Unfortunately, these dependencies have to be considered in their respective master version, not the jethro ones. Also, DIGI provides the poky layer instead of the openembedded-core layer.
So, to try to use Electron on the ConnectCore6, I downloaded meta-clang (master version), meta-browser (jethro version), meta-electron (master version) and I added these layers to my bblayers.conf.
But, because of the jethro version of my poky layer, I have the following error for meta-clang, which can't find musl in the poky layer.
ERROR: No recipes available for:
/usr/local/dey-2.0/sources/meta-clang/recipes-core/musl/musl_%.bbappend
musl is available in the master branch of poky, but not in the jethro branch. Of course, I tried to copy-paste the musl directory from master to jethro branch of poky but this just bring more errors and more missing recipes (bsd-headers-devs, musl-dev, ...).
Do you know how to fix this last error and/or how to make musl compatible with the jethro version of poky ? I really need help on this point. Thank you.
You can try adding meta-musl layer into the mix (with jethro branch), it adds musl support for oe-core jethro. These days almost all of it is merged into main oe-core repository, but for your particular case it might help.

Annoying SNAPSHOT releases in Grails list-plugin-updates command

Is there a way to tell the Grails list-plugin-updates command to ignore SNAPSHOT releases?
bash-3.2$ grails list-plugin-updates
Plugins with available updates are listed below:
-------------------------------------------------------------
<Plugin> <Current> <Available>
resources 1.2.8 1.2.9-SNAPSHOT
remote-pagination 0.4.6 0.4.7
platform-core 1.0.0 1.0.1-SNAPSHOT
mongodb 2.0.1 3.0.1
mail 1.0.5 1.0.6-SNAPSHOT
joda-time 1.4 1.5-SNAPSHOT
hibernate 3.6.10.15 3.6.10.16-SNAPSHOT
There have been many times when a "real" update has been obscured by a SNAPSHOT release, so I still have to check the Grails website to see the current versions. We are building a production system and almost never want to include a SNAPSHOT release of any plugin.
Documentation:
http://grails.org/doc/latest/ref/Command%20Line/list-plugin-updates.html
Not currently no but it seems like it should be ignoring snapshots so feel free to raise a JIRA issue (and even contribute a fix!)

Resources