Package hudson.model

Class EnvironmentContributor

  • All Implemented Interfaces:
    ExtensionPoint
    Direct Known Subclasses:
    CoreEnvironmentContributor

    public abstract class EnvironmentContributor
    extends Object
    implements ExtensionPoint
    Contributes environment variables to builds.

    This extension point can be used to externally add environment variables. Aside from adding environment variables of the fixed name, a typical strategy is to look for specific JobPropertys and other similar configurations of Jobs to compute values.

    Views

    buildEnv.groovy/.jelly

    When Jenkins displays the help page listing all the environment variables available for a build, it does so by combining all the buildEnv views from this extension point. This view should use the <t:buildEnvVar> tag to render a variable.

    In this view, it points to EnvironmentContributor and job points to Job for which the help is being rendered.

    Jenkins provides other extension points (such as SCM) to contribute environment variables to builds, and for those plugins, Jenkins also looks for /buildEnv.groovy and aggregates them.

    Since:
    1.392
    Author:
    Kohsuke Kawaguchi
    See Also:
    BuildVariableContributor
    • Constructor Detail

      • EnvironmentContributor

        public EnvironmentContributor()
    • Method Detail

      • buildEnvironmentFor

        public void buildEnvironmentFor​(@NonNull
                                        Run r,
                                        @NonNull
                                        EnvVars envs,
                                        @NonNull
                                        TaskListener listener)
                                 throws IOException,
                                        InterruptedException
        Contributes environment variables used for a build.

        This method can be called repeatedly for the same Run, thus the computation of this method needs to be efficient. If you have a time-consuming computation, one strategy is to take the hit once and then add the result as InvisibleAction to Run, then reuse those values later on.

        This method gets invoked concurrently for multiple Runs that are being built at the same time, so it must be concurrent-safe.

        When building environment variables for a build, Jenkins will also invoke buildEnvironmentFor(Job, EnvVars, TaskListener). This method only needs to add variables that are scoped to builds.

        Parameters:
        r - Build that's being performed.
        envs - Partially built environment variable map. Implementation of this method is expected to add additional variables here.
        listener - Connected to the build console. Can be used to report errors.
        Throws:
        IOException
        InterruptedException
      • buildEnvironmentFor

        public void buildEnvironmentFor​(@NonNull
                                        Job j,
                                        @NonNull
                                        EnvVars envs,
                                        @NonNull
                                        TaskListener listener)
                                 throws IOException,
                                        InterruptedException
        Contributes environment variables used for a job.

        This method can be called repeatedly for the same Job, thus the computation of this method needs to be efficient.

        This method gets invoked concurrently for multiple Jobs, so it must be concurrent-safe.

        Parameters:
        j - Job for which some activities are launched.
        envs - Partially built environment variable map. Implementation of this method is expected to add additional variables here.
        listener - Connected to the build console. Can be used to report errors.
        Throws:
        IOException
        InterruptedException
        Since:
        1.527