Skip to content

Commit 5c039ea

Browse files
committed
Merge pull request #19 from adriaanm/issue4-multi-jdk
Fix #4: multiple JDKs
2 parents cd4c269 + 6a080ea commit 5c039ea

File tree

6 files changed

+68
-0
lines changed

6 files changed

+68
-0
lines changed

files/default/jvm-select-common

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
function jvmSelectCommon(){
2+
javaHome="/usr/lib/jvm/java-$versionPrefix$version$versionSuffix-$flavor$archSuffix"
3+
$javaHome/bin/java -version 2>&1 | grep "version.*1.$version.0" || (echo "Failed to locate $flavor Java $version. Available JVMs:"; find /usr/lib/jvm/ -name "java-*$archSuffix" ; exit 1)
4+
export JAVA_HOME=$javaHome
5+
export PATH="$JAVA_HOME/bin:$PATH"
6+
}

files/rhel/jvm-select

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
source /usr/local/share/jvm/jvm-select-common
2+
3+
# configure naming for YUMmy distros
4+
function jvmSelect(){
5+
flavor=$1
6+
version=$2
7+
arch=${3-$(arch)}
8+
archSuffix=".$arch"
9+
versionPrefix="1."
10+
versionSuffix=".0"
11+
jvmSelectCommon
12+
}

files/ubuntu/jvm-select

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
source /usr/local/share/jvm/jvm-select-common
2+
3+
# configure naming for debian-based distros
4+
function jvmSelect(){
5+
flavor=$1
6+
version=$2
7+
arch=${3-amd64}
8+
archSuffix="-$arch"
9+
versionPrefix=""
10+
versionSuffix=""
11+
jvmSelectCommon
12+
}

libraries/job_blurbs.rb

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,18 @@ def githubProject(options = {})
7474
timeoutMinutesElasticDefault = options.fetch(:timeoutMinutesElasticDefault, 150)
7575
buildNameScript = options.fetch(:buildNameScript, setBuildNameScript)
7676

77+
jvmFlavor = options[:jvmFlavor]
78+
jvmVersion = options[:jvmVersion]
79+
jvmSelectScript = ""
80+
81+
if jvmFlavor && jvmVersion
82+
params.concat([
83+
{:name => "jvmFlavor", :default => jvmFlavor, :desc => "Java flavor to use (oracle/openjdk)."},
84+
{:name => "jvmVersion", :default => jvmVersion, :desc => "Java version to use (6/7/8)."}
85+
])
86+
jvmSelectScript=jvmSelect
87+
end
88+
7789
restriction =
7890
"""<assignedNode>%{nodes}</assignedNode>
7991
<canRoam>false</canRoam>""".gsub(/ /, '')
@@ -90,6 +102,7 @@ def env(name)
90102
<concurrentBuild>#{concurrent}</concurrentBuild>
91103
<builders>
92104
#{groovySysScript(buildNameScript)}
105+
#{jvmSelectScript}
93106
#{scriptBuild}
94107
</builders>
95108
<buildWrappers>
@@ -138,6 +151,17 @@ def job(name)
138151
versionedJob(@version, name)
139152
end
140153

154+
def jvmSelect
155+
<<-EOH.gsub(/^ /, '')
156+
<hudson.tasks.Shell>
157+
<command>#!/bin/bash -e
158+
source /usr/local/share/jvm/jvm-select
159+
jvmSelect $jvmFlavor $jvmVersion
160+
</command>
161+
</hudson.tasks.Shell>
162+
EOH
163+
end
164+
141165
def scriptBuild
142166
<<-EOH.gsub(/^ /, '')
143167
<hudson.tasks.Shell>

recipes/worker-init.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,15 @@
1818
include_recipe "sbt-extras" unless platform_family?("windows")
1919

2020
include_recipe "scala-jenkins-infra::_worker-init-#{node["platform_family"]}"
21+
22+
directory "/usr/local/share/jvm/" do
23+
mode '755'
24+
recursive true
25+
end
26+
27+
%w{jvm-select jvm-select-common}.each do |f|
28+
cookbook_file f do
29+
mode '755'
30+
path "/usr/local/share/jvm/#{f}"
31+
end
32+
end

templates/default/jobs/integrate/bootstrap.xml.erb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
<p> Use github.com/scala/make-release-notes to build the release notes.
1515
}.gsub(/^ /, ''),
1616
nodeRestriction: "linux && publish",
17+
jvmVersion: 6,
18+
jvmFlavor: "oracle",
1719
params: [
1820
{:name => "SCALA_VER_BASE",
1921
:desc => "Specifying this parameter will cause a release to be built. If it&apos;s empty (and HEAD does not have a tag that parses as a version), a -nightly release is built."},

0 commit comments

Comments
 (0)