Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-53486

email-ext fails when CasC attempts to set smtpHost

    Details

    • Similar Issues:

      Description

      The descriptor throws an error when you attempt to set a value for smtpHost using jcasc plugin.

       

      The error message is identical to this reported github issue and subsequently JENKINS-53467 for the Mailer plugin which was fixed by introducing a getSmtpHost() method. It appears the solution for this plugin may not be as trivial however; I noticed a getSmtpHost() method is already present in MailAccount.java .

       

      SEVERE: Failed ConfigurationAsCode.init
      java.lang.Error: java.lang.reflect.InvocationTargetException
      at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:110)
      at hudson.init.TaskMethodFinder$TaskImpl.run(TaskMethodFinder.java:175)
      at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:296)
      at jenkins.model.Jenkins$5.runTask(Jenkins.java:1068)
      at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:214)
      at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      at java.lang.Thread.run(Thread.java:748)
      Caused by: java.lang.reflect.InvocationTargetException
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:498)
      at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:104)
      ... 8 more
      Caused by: io.jenkins.plugins.casc.ConfiguratorException: unclassified: error configuring 'unclassified' with class io.jenkins.plugins.casc.impl.configurators.GlobalConfigurationCategoryConfigurator configurator
      at io.jenkins.plugins.casc.ConfigurationAsCode.invokeWith(ConfigurationAsCode.java:611)
      at io.jenkins.plugins.casc.ConfigurationAsCode.checkWith(ConfigurationAsCode.java:640)
      at io.jenkins.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:627)
      at io.jenkins.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:539)
      at io.jenkins.plugins.casc.ConfigurationAsCode.configure(ConfigurationAsCode.java:270)
      at io.jenkins.plugins.casc.ConfigurationAsCode.init(ConfigurationAsCode.java:262)
      ... 13 more
      Caused by: io.jenkins.plugins.casc.ConfiguratorException: Invalid configuration elements for type class hudson.plugins.emailext.ExtendedEmailPublisherDescriptor : smtpHost
      at io.jenkins.plugins.casc.BaseConfigurator.handleUnknown(BaseConfigurator.java:355)
      at io.jenkins.plugins.casc.BaseConfigurator.configure(BaseConfigurator.java:345)
      at io.jenkins.plugins.casc.BaseConfigurator.check(BaseConfigurator.java:265)
      at io.jenkins.plugins.casc.BaseConfigurator.configure(BaseConfigurator.java:330)
      at io.jenkins.plugins.casc.BaseConfigurator.check(BaseConfigurator.java:265)
      at io.jenkins.plugins.casc.ConfigurationAsCode.lambda$checkWith$8(ConfigurationAsCode.java:640)
      at io.jenkins.plugins.casc.ConfigurationAsCode.invokeWith(ConfigurationAsCode.java:605)
      ... 18 more

        Attachments

          Activity

          Hide
          robin_smith Robin Smith added a comment -
          Show
          robin_smith Robin Smith added a comment - Done - JENKINS-58570
          Hide
          slide_o_mix Alex Earl added a comment -

          Yes, please file a separate issue.

          Show
          slide_o_mix Alex Earl added a comment - Yes, please file a separate issue.
          Hide
          robin_smith Robin Smith added a comment -

          David van Laatum Ben Fiedler happy to raise this as a separate issue, if you prefer

          Show
          robin_smith Robin Smith added a comment - David van Laatum Ben Fiedler happy to raise this as a separate issue, if you prefer
          Hide
          robin_smith Robin Smith added a comment - - edited

          I think there may still be an issue here. The problem I have happens when I add smtpUsername / smtpPassword configuration fields, to authenticate with an SMTP server. This can be set up 'hands on' in the UI, so using the necessary fields described in the JCasC documentation, I set up something like this:

            extendedEmailPublisher: 
              smtpServer: smtp.server.com
              smtpUsername: alerts@company.com
              smtpPassword: ${SMTPpass}
              useSsl: true
              charset: UTF-8
              defaultContentType: text/plain
              defaultSubject: "Build $BUILD_NUMBER - $BUILD_STATUS"
              defaultBody: "Check console output at $BUILD_URL"
          

          But adding the smtpUsername / smtpPassword fields seems to cause the 'smtpServer' value to be ignored completely (it's not ignored when the smtpUsername / smtpPassword fields are not present). Instead, the 'smtpHost' value from the Mailer plugin configuration is used in its place

          If anyone stumbles across this page and needs to get SMTP authentication working for the Email Extension plugin, I was able to using this setup:

            mailer: 
              smtpHost: smtp.server.com
              useSsl: true
              charset: UTF-8
            extendedEmailPublisher: 
              smtpUsername: alerts@company.com
              smtpPassword: ${SMTPpass}
              defaultContentType: text/plain
              defaultSubject: "Build $BUILD_NUMBER - $BUILD_STATUS"
              defaultBody: "Check console output at $BUILD_URL"
          

          It's not ideal that part of the configuration lives in each plugin though! (mailer plugin does not support SMTP auth fields - JENKINS-55109)

          See also: https://github.com/jenkinsci/configuration-as-code-plugin/issues/772

          Show
          robin_smith Robin Smith added a comment - - edited I think there may still be an issue here. The problem I have happens when I add smtpUsername / smtpPassword configuration fields, to authenticate with an SMTP server. This can be set up 'hands on' in the UI, so using the necessary fields described in the JCasC documentation, I set up something like this: extendedEmailPublisher: smtpServer: smtp.server.com smtpUsername: alerts@company.com smtpPassword: ${SMTPpass} useSsl: true charset: UTF- 8 defaultContentType: text/plain defaultSubject: "Build $BUILD_NUMBER - $BUILD_STATUS" defaultBody: "Check console output at $BUILD_URL" But adding the smtpUsername / smtpPassword fields seems to cause the 'smtpServer' value to be ignored completely (it's not ignored when the smtpUsername / smtpPassword fields are not present). Instead, the 'smtpHost' value from the Mailer plugin configuration is used in its place If anyone stumbles across this page and needs to get SMTP authentication working for the Email Extension plugin, I was able to using this setup: mailer: smtpHost: smtp.server.com useSsl: true charset: UTF- 8 extendedEmailPublisher: smtpUsername: alerts@company.com smtpPassword: ${SMTPpass} defaultContentType: text/plain defaultSubject: "Build $BUILD_NUMBER - $BUILD_STATUS" defaultBody: "Check console output at $BUILD_URL" It's not ideal that part of the configuration lives in each plugin though! (mailer plugin does not support SMTP auth fields - JENKINS-55109 ) See also: https://github.com/jenkinsci/configuration-as-code-plugin/issues/772
          Hide
          benfiedler Ben Fiedler added a comment -

          User error

          Show
          benfiedler Ben Fiedler added a comment - User error

            People

            • Assignee:
              davidvanlaatum David van Laatum
              Reporter:
              benfiedler Ben Fiedler
            • Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: