[JIRA] (JENKINS-60245) @Library annotation does not work in load()'d scripts

5 views
Skip to first unread message

witt.austin@gmail.com (JIRA)

unread,
Nov 21, 2019, 12:34:05 PM11/21/19
to jenkinsc...@googlegroups.com
Austin created an issue
 
Jenkins / Bug JENKINS-60245
@Library annotation does not work in load()'d scripts
Issue Type: Bug Bug
Assignee: Unassigned
Components: workflow-cps-global-lib-plugin
Created: 2019-11-21 17:33
Priority: Minor Minor
Reporter: Austin

Problem Statement

On a Jenkins master with global definition of a Shared Library named shared-library, And the following files in a repository:

Jenkinsfile

node {
	stage( "setup" ) {
		checkout scm
	}
	stage( "pipeline" ) {
		load( "Pipeline.groovy" ).run_pipeline()
	}
}

Pipeline.groovy

@Library( 'shared-library@master' )

def run_pipeline() {
	someMethodFromSharedLibrary()
}

return this

Where someMethodFromSharedLibrary() is a Global Variable in the vars/someMethodFromSharedLibrary.groovy file in the shared library,

The pipeline errors on the load(...) step of the Jenkinsfile with a "no definition of libraries found" error:

ERROR: Could not find any definition of libraries [shared-library@master]

Analysis

This is because of the algorithm in LibraryAdder here:

LibrariesAction action = build.getAction(LibrariesAction.class);
if (action != null) {

https://github.com/jenkinsci/workflow-cps-global-lib-plugin/blob/f371b987a3e79928962043f18a5d95aef7397b76/src/main/java/org/jenkinsci/plugins/workflow/libs/LibraryAdder.java#L88-L89

After the main Jenkinsfile script is processed, a LibrariesAction is added to the build with no library definitions. When the new script Pipeline.groovy is processed during load(..), it sees the action from the previous script and uses the empty set of library definitions to match against actual library requests that are correctly detected in the @Library annotation in the load()'d script.

This causes the "no definition for libraries" error message. The library definitions in the load()'d script are never considered.

Add Comment Add Comment
 
This message was sent by Atlassian Jira (v7.13.6#713006-sha1:cc4451f)
Atlassian logo

witt.austin@gmail.com (JIRA)

unread,
Nov 21, 2019, 12:35:03 PM11/21/19
to jenkinsc...@googlegroups.com
Austin updated an issue
Change By: Austin
h1. Problem Statement

On a Jenkins master with global definition of a Shared Library named {{shared-library}}, And the following files in a repository:

{{Jenkinsfile}}
{code
:java }

node {
stage( "setup" ) {
  checkout scm
}
stage( "pipeline" ) {
  load( "Pipeline.groovy" ).run_pipeline()
}
}
{code}
{{Pipeline.groovy}}
{code
:java }
@Library( 'shared-library@master' )
_

def run_pipeline() {
someMethodFromSharedLibrary()
}

return this
{code}

Where {{someMethodFromSharedLibrary()}} is a Global Variable in the {{vars/someMethodFromSharedLibrary.groovy}} file in the shared library,

The pipeline errors on the {{load(...)}} step of the {{Jenkinsfile}} with a "no definition of libraries found" error:
{code:java}

ERROR: Could not find any definition of libraries [shared-library@master]
{code}
h1. Analysis


This is because of the algorithm in {{LibraryAdder}} here:
{quote}
{code:java}

LibrariesAction action = build.getAction(LibrariesAction.class);
if (action != null) {
{code}
– [https://github.com/jenkinsci/workflow-cps-global-lib-plugin/blob/f371b987a3e79928962043f18a5d95aef7397b76/src/main/java/org/jenkinsci/plugins/workflow/libs/LibraryAdder.java#L88-L89]
{quote}
After the main {{Jenkinsfile}} script is processed, a {{LibrariesAction}} is added to the build with no library definitions. When the new script {{Pipeline.groovy}} is processed during {{load(..)}}, it sees the action from the previous script and uses the empty set of library definitions to match against actual library requests that are correctly detected in the {{@Library}} annotation in the {{load()}}'d script.


This causes the "no definition for libraries" error message. The library definitions in the {{load()}}'d script are never considered.

witt.austin@gmail.com (JIRA)

unread,
Nov 21, 2019, 12:55:03 PM11/21/19
to jenkinsc...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages