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

Support scripted and declarative pipelines in `ListRecipientProvider`

    Details

    • Type: Improvement
    • Status: Closed (View Workflow)
    • Priority: Major
    • Resolution: Not A Defect
    • Component/s: email-ext-plugin
    • Labels:
      None
    • Environment:
      - Jenkins 2.95
      - Email Extension Plugin 2.61
    • Similar Issues:

      Description

      https://github.com/jenkinsci/email-ext-plugin/blob/ac54d2684668d12eae40189a55a30e677a813b03/src/main/java/hudson/plugins/emailext/plugins/recipients/ListRecipientProvider.java#L60

      @Override public boolean isApplicable(Class<? extends Job> jobType) {
          return !jobType.getName().equals("org.jenkinsci.plugins.workflow.job.WorkflowJob");
      }
      

       

      I wonder what is the problem with supporting `WorkflowJob` here? I believe, it is the job class used in both scripted and declarative pipelines. Pipeline script

      node {
         emailext recipientProviders: [[$class: 'ListRecipientProvider']]
      }
      

      gives me the following error:

      java.lang.IllegalArgumentException: The following recipient providers do not support org.jenkinsci.plugins.workflow.job.WorkflowJob hudson.plugins.emailext.plugins.recipients.ListRecipientProvider
      	at hudson.plugins.emailext.plugins.RecipientProvider.checkAllSupport(RecipientProvider.java:57)
      	at hudson.plugins.emailext.EmailExtStep$EmailExtStepExecution.run(EmailExtStep.java:186)
      	at hudson.plugins.emailext.EmailExtStep$EmailExtStepExecution.run(EmailExtStep.java:163)
      	at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1$1.call(AbstractSynchronousNonBlockingStepExecution.java:47)
      	at hudson.security.ACL.impersonate(ACL.java:273)
      	at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1.run(AbstractSynchronousNonBlockingStepExecution.java:44)
      	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	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)
      

       

      I am trying to make email-ext in my scripted pipeline job send email notifications to the globally configured recipients list—the same that is used in the following freestyle job:

        Attachments

          Activity

          Hide
          earshinov Evgeny Arshinov added a comment - - edited

          Without `ListRecipientProvider` there is no way to send email notifications to a fixed recipients list that does not fall into any predefined recipientProviders category (see `recipientProvides` on https://jenkins.io/doc/pipeline/steps/email-ext/). This issue is a blocker for us, preventing the use of the plugin in our scripted pipeline jobs.

          Update: Nevermind, I have just discovered the `to` argument.

          Show
          earshinov Evgeny Arshinov added a comment - - edited Without `ListRecipientProvider` there is no way to send email notifications to a fixed recipients list that does not fall into any predefined recipientProviders category (see `recipientProvides` on https://jenkins.io/doc/pipeline/steps/email-ext/ ). This issue is a blocker for us, preventing the use of the plugin in our scripted pipeline jobs. Update : Nevermind, I have just discovered the `to` argument.
          Hide
          earshinov Evgeny Arshinov added a comment - - edited

          It turned out that one can use `$DEFAULT_zzz` placeholders in pipelines, too. Normally, such things should be covered in the documentation.

          I also found out that one has to explicitly pass `subject: "$DEFAULT_SUBJECT" and to: "$DEFAULT_TO"`, although it would be nice if the plugin used these values by default.

          Having discovered all that, we can now use email-ext in our project, despite its poor documentation. The question about `ListRecipientProvider` remains open, though.

          Show
          earshinov Evgeny Arshinov added a comment - - edited It turned out that one can use `$DEFAULT_zzz` placeholders in pipelines, too. Normally, such things should be covered in the documentation. I also found out that one has to explicitly pass `subject: "$DEFAULT_SUBJECT" and to: "$DEFAULT_TO"`, although it would be nice if the plugin used these values by default. Having discovered all that, we can now use email-ext in our project, despite its poor documentation. The question about `ListRecipientProvider` remains open, though.
          Hide
          slide_o_mix Alex Earl added a comment -

          I don't think ListRecipientProvider makes sense in the case of workflow since you can just use `to` like you found. FYI, feel free to make updates to the wiki if you find things missing.

          Show
          slide_o_mix Alex Earl added a comment - I don't think ListRecipientProvider makes sense in the case of workflow since you can just use `to` like you found. FYI, feel free to make updates to the wiki if you find things missing.

            People

            • Assignee:
              slide_o_mix Alex Earl
              Reporter:
              earshinov Evgeny Arshinov
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: