Skip to content

Commit ac9f40a

Browse files
committed
LibraryConfiguration.java: attempt to first extractDefaultedVersionSCMFS() [JENKINS-69731]
1 parent 6379716 commit ac9f40a

File tree

1 file changed

+60
-1
lines changed

1 file changed

+60
-1
lines changed

src/main/java/org/jenkinsci/plugins/workflow/libs/LibraryConfiguration.java

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@
3939
import hudson.util.FormValidation;
4040
import jenkins.branch.Branch;
4141
import jenkins.model.Jenkins;
42+
import jenkins.scm.api.SCMFileSystem;
43+
import jenkins.scm.api.SCMHead;
44+
import jenkins.scm.api.SCMRevision;
4245
import jenkins.scm.api.SCMSourceOwner;
4346
import org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition;
4447
import org.jenkinsci.plugins.workflow.flow.FlowDefinition;
@@ -335,6 +338,59 @@ private String extractDefaultedVersionGitSCM(@NonNull SCM scm, @NonNull Run<?, ?
335338
return runVersion;
336339
}
337340

341+
private String extractDefaultedVersionSCMFS(@NonNull SCM scm, @NonNull Run<?, ?> run, @NonNull TaskListener listener, PrintStream logger) {
342+
String runVersion = null;
343+
Item runParent = run.getParent();
344+
if (runParent == null)
345+
return null;
346+
347+
SCMFileSystem fs;
348+
try {
349+
fs = SCMFileSystem.of(runParent, scm);
350+
if (fs == null && logger != null) {
351+
logger.println("defaultedVersion(): " +
352+
"got no SCMFileSystem: " +
353+
"method of() returned null");
354+
}
355+
} catch (Exception x) {
356+
fs = null;
357+
if (logger != null) {
358+
logger.println("defaultedVersion(): " +
359+
"failed to get SCMFileSystem: " +
360+
x.getMessage());
361+
}
362+
}
363+
if (fs == null)
364+
return null;
365+
366+
SCMRevision rev = fs.getRevision();
367+
if (rev == null) {
368+
if (logger != null) {
369+
logger.println("defaultedVersion(): " +
370+
"got no SCMRevision from SCMFileSystem");
371+
}
372+
return null;
373+
}
374+
375+
SCMHead head = rev.getHead();
376+
if (head == null) {
377+
if (logger != null) {
378+
logger.println("defaultedVersion(): " +
379+
"got no SCMHead of SCMRevision from SCMFileSystem");
380+
}
381+
return null;
382+
}
383+
384+
if (logger != null) {
385+
logger.println("defaultedVersion(): " +
386+
"got SCMHead of SCMRevision from SCMFileSystem: " +
387+
"name='" + head.getName() + "' " +
388+
"toString='" + head.toString() + "'");
389+
}
390+
391+
return runVersion;
392+
}
393+
338394
private String extractDefaultedVersionSCM(@NonNull SCM scm, @NonNull Run<?, ?> run, @NonNull TaskListener listener, PrintStream logger) {
339395
String runVersion = null;
340396

@@ -348,7 +404,10 @@ private String extractDefaultedVersionSCM(@NonNull SCM scm, @NonNull Run<?, ?> r
348404
// until a non-null result.
349405
// Ideally SCM API itself would have all classes return this
350406
// value (or null if branch concept is not supported there):
351-
runVersion = extractDefaultedVersionGitSCM(scm, run, listener, logger);
407+
runVersion = extractDefaultedVersionSCMFS(scm, run, listener, logger);
408+
if (runVersion == null) {
409+
runVersion = extractDefaultedVersionGitSCM(scm, run, listener, logger);
410+
}
352411

353412
if (runVersion == null) {
354413
// got SVN, Gerritt or some other SCM -

0 commit comments

Comments
 (0)