Skip to content

Commit 79df74a

Browse files
committed
Azure Pipelines - Added build and release stages
1 parent 8bdd3c2 commit 79df74a

File tree

7 files changed

+285
-41
lines changed

7 files changed

+285
-41
lines changed

azure-pipelines.yml

Lines changed: 69 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -12,33 +12,73 @@ trigger:
1212
include:
1313
- "*"
1414

15-
jobs:
16-
- job: Windows
17-
strategy:
18-
matrix:
19-
VS2019:
20-
imageName: 'windows-2019'
21-
TILEDB_S3: ON
22-
pool:
23-
vmImage: $(imageName)
24-
steps:
25-
- task: Gradle@2
26-
inputs:
27-
workingDirectory: ''
28-
gradleWrapperFile: 'gradlew.bat'
29-
gradleOptions: '-Xmx3072m'
30-
javaHomeOption: 'JDKVersion'
31-
jdkVersionOption: 'default'
32-
tasks: 'assemble test'
15+
stages:
16+
- stage: CI
17+
condition: not(startsWith(variables['Build.SourceBranch'], 'refs/tags'))
18+
jobs:
19+
- job: Windows
20+
strategy:
21+
matrix:
22+
VS2019:
23+
imageName: 'windows-2019'
24+
TILEDB_S3: ON
25+
pool:
26+
vmImage: $(imageName)
27+
steps:
28+
- task: Gradle@2
29+
inputs:
30+
workingDirectory: ''
31+
gradleWrapperFile: 'gradlew.bat'
32+
gradleOptions: '-Xmx3072m'
33+
javaHomeOption: 'JDKVersion'
34+
jdkVersionOption: 'default'
35+
tasks: 'checkFormat assemble test'
3336

34-
- job: Linux_OSX
35-
strategy:
36-
matrix:
37-
ubuntu_18:
38-
imageName: 'ubuntu-18.04'
39-
macOS:
40-
imageName: 'macOS-10.14'
41-
pool:
42-
vmImage: $(imageName)
43-
steps:
44-
- template: ci/tiledb-java-azure.yml
37+
- job: Linux_OSX
38+
strategy:
39+
matrix:
40+
ubuntu_18:
41+
imageName: 'ubuntu-18.04'
42+
macOS:
43+
imageName: 'macOS-10.14'
44+
pool:
45+
vmImage: $(imageName)
46+
steps:
47+
- template: ci/tiledb-java-linux_osx.yml
48+
49+
- stage: BuildNativeLibs
50+
condition: or(startsWith(variables['Build.SourceBranch'], 'master'), startsWith(variables['Build.SourceBranch'], 'refs/tags'))
51+
jobs:
52+
- job: Linux_OSX
53+
strategy:
54+
matrix:
55+
ubuntu_18:
56+
imageName: 'ubuntu-18.04'
57+
macOS:
58+
imageName: 'macOS-10.14'
59+
pool:
60+
vmImage: $(imageName)
61+
steps:
62+
- template: ci/tiledb-java-linux_osx-release.yml
63+
- job: Windows
64+
strategy:
65+
matrix:
66+
windows_19:
67+
imageName: 'windows-2019'
68+
pool:
69+
vmImage: $(imageName)
70+
steps:
71+
- template: ci/tiledb-java-windows-release.yml
72+
73+
- stage: Release
74+
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags')
75+
jobs:
76+
- job: All_OS
77+
strategy:
78+
matrix:
79+
ubuntu_18:
80+
imageName: 'ubuntu-18.04'
81+
pool:
82+
vmImage: $(imageName)
83+
steps:
84+
- template: ci/tiledb-java-final-jar.yml

build.gradle

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ dependencies {
4646
}
4747

4848
task cmakeTask(type: Exec) {
49+
File jniLibs = new File(buildDir.path + "/tiledb_jni")
50+
File tiledbLibs = new File(buildDir.path + "/install/lib")
51+
52+
onlyIf { !buildDir.exists() || !jniLibs.exists() || !tiledbLibs.exists() }
4953
doFirst {
5054
mkdir buildDir
5155
}
@@ -75,6 +79,14 @@ task cmakeTask(type: Exec) {
7579
}
7680

7781
task cmakeBuildTask(type: Exec) {
82+
File jniLibs = new File(buildDir.path + "/tiledb_jni")
83+
File tiledbLibs = new File(buildDir.path + "/install/lib")
84+
85+
onlyIf { !buildDir.exists() || !jniLibs.exists() || !tiledbLibs.exists() }
86+
doFirst {
87+
mkdir buildDir
88+
}
89+
7890
workingDir = buildDir
7991
executable = 'cmake'
8092
args "--build", ".", "--config", "release"
@@ -106,18 +118,21 @@ test {
106118
}
107119

108120
jar {
109-
into(new File('lib', osdetector.classifier).toString()) {
121+
into(new File('lib').toString()) {
110122
// Linux and macOS
111-
from file("$buildDir/install/lib/${System.mapLibraryName("tiledb")}")
112-
from file("$buildDir/install/lib64/${System.mapLibraryName("tiledb")}")
113-
from file("$buildDir/tiledb_jni/${System.mapLibraryName("tiledbjni")}")
123+
from file("$buildDir/install/lib/libtiledb.dylib")
124+
from file("$buildDir/install/lib64/libtiledb.so")
125+
from file("$buildDir/tiledb_jni/libtiledbjni.so")
126+
127+
from file("$buildDir/install/lib/libtiledb.dylib")
128+
from file("$buildDir/tiledb_jni/libtiledbjni.dylib")
129+
114130
// Windows
115-
from file("$buildDir/install/bin/${System.mapLibraryName("tbb")}")
116-
from file("$buildDir/install/bin/${System.mapLibraryName("tiledb")}")
117-
from file("$buildDir/tiledb_jni/Release/${System.mapLibraryName("tiledbjni")}")
131+
from file("$buildDir/install/bin/tbb.dll")
132+
from file("$buildDir/install/bin/tiledb.dll")
133+
from file("$buildDir/tiledb_jni/Release/tiledbjni.dll")
118134
}
119135

120-
121136
manifest {
122137
attributes("Implementation-Title": "Gradle",
123138
"Implementation-Version": archiveVersion)
@@ -209,6 +224,8 @@ signing {
209224
import com.github.sherter.googlejavaformatgradleplugin.GoogleJavaFormat
210225
import com.github.sherter.googlejavaformatgradleplugin.VerifyGoogleJavaFormat
211226

227+
import java.nio.file.Files
228+
212229
task format(type: GoogleJavaFormat) {
213230
source = sourceSets*.allJava
214231
source 'swig/customCode'

ci/tiledb-java-final-jar.yml

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
steps:
2+
- download: current
3+
patterns: '**/*.tar.gz'
4+
5+
- bash: |
6+
unset SYSTEM
7+
set +e
8+
mv ../libraries/* .
9+
10+
mkdir -p ./build/install/lib
11+
mkdir ./build/install/lib64
12+
mkdir ./build/tiledb_jni/
13+
mkdir ./build/tiledb_jni/Release
14+
mkdir ./build/install/bin
15+
16+
for arch in $(ls | grep .tar.gz)
17+
do
18+
tar -xf $arch
19+
done
20+
21+
# OSX
22+
mv libtiledb.dylib ./build/install/lib
23+
mv libtiledbjni.dylib ./build/tiledb_jni
24+
25+
# Linux
26+
cp libtiledb.so ./build/install/lib
27+
mv libtiledb.so ./build/install/lib64
28+
mv libtiledbjni.so ./build/tiledb_jni
29+
30+
# Windows
31+
mv tbb.dll ./build/install/bin
32+
mv tiledb.dll ./build/install/bin
33+
mv tiledbjni.dll ./build/tiledb_jni/Release
34+
35+
./gradlew assemble
36+
37+
PROJECT_VERSION=$(./gradlew properties -q | grep "version:" | awk '{print $2}')
38+
39+
cp build/libs/*.jar $BUILD_BINARIESDIRECTORY
40+
41+
displayName: 'Building the Fat Jar'
42+
43+
- bash: |
44+
set -e pipefail
45+
# Display log files if the build failed
46+
echo "Dumping log files for failed build"
47+
echo "----------------------------------"
48+
for f in $(find $BUILD_REPOSITORY_LOCALPATH -name *.log);
49+
do echo "------"
50+
echo $f
51+
echo "======"
52+
cat $f
53+
done;
54+
condition: failed() # only run this job if the build step failed
55+
displayName: "Print log files (failed build only)"
56+
57+
- task: PublishBuildArtifacts@1
58+
inputs:
59+
pathtoPublish: $(Build.BinariesDirectory)
60+
artifactName: final-jar
61+
condition: succeeded()

ci/tiledb-java-linux_osx-release.yml

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
steps:
2+
- bash: |
3+
set -e pipefail
4+
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
5+
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -allowUntrusted -target /
6+
condition: eq(variables['Agent.OS'], 'Darwin')
7+
displayName: 'Install system headers (OSX only)'
8+
9+
- bash: |
10+
unset SYSTEM
11+
ls
12+
13+
BUILD_BINARIESDIRECTORY=${BUILD_BINARIESDIRECTORY:-$BUILD_REPOSITORY_LOCALPATH/}
14+
15+
./gradlew assemble
16+
17+
if [[ ( "$AGENT_OS" == "Linux" ) ]]; then
18+
cp ./build/tiledb_jni/*.so ./build/install/lib/*.so $BUILD_BINARIESDIRECTORY
19+
fi
20+
21+
if [[ ( "$AGENT_OS" == "Darwin" ) ]]; then
22+
cp ./build/tiledb_jni/*.dylib ./build/install/lib/*.dylib $BUILD_BINARIESDIRECTORY
23+
fi
24+
25+
echo "Native Libs"
26+
ls $BUILD_BINARIESDIRECTORY
27+
28+
displayName: 'Build and Upload (Ubuntu and OSX)'
29+
30+
- bash: |
31+
set -e pipefail
32+
# Display log files if the build failed
33+
echo "Dumping log files for failed build"
34+
echo "----------------------------------"
35+
for f in $(find $BUILD_REPOSITORY_LOCALPATH -name *.log);
36+
do echo "------"
37+
echo $f
38+
echo "======"
39+
cat $f
40+
done;
41+
condition: failed() # only run this job if the build step failed
42+
displayName: "Print log files (failed build only)"
43+
44+
45+
- script: |
46+
echo $sourceVersion
47+
commitHash=${sourceVersion:0:7}
48+
echo $commitHash
49+
echo "##vso[task.setvariable variable=commitHash]$commitHash" ## Set variable for using in other tasks.
50+
env: { sourceVersion: $(Build.SourceVersion) }
51+
displayName: Git Hash 7-digit
52+
53+
- task: ArchiveFiles@2
54+
inputs:
55+
rootFolderOrFile: '$(Build.BinariesDirectory)'
56+
includeRootFolder: false
57+
archiveType: 'tar' # Options: zip, 7z, tar, wim
58+
tarCompression: 'gz' # Optional. Options: gz, bz2, xz, none
59+
archiveFile: $(Build.ArtifactStagingDirectory)/tiledb-$(Agent.OS)-$(Build.SourceBranchName)-$(commitHash).tar.gz
60+
replaceExistingArchive: true
61+
verbose: true # Optional
62+
condition: succeeded()
63+
64+
- task: PublishBuildArtifacts@1
65+
inputs:
66+
pathtoPublish: $(Build.ArtifactStagingDirectory)/tiledb-$(Agent.OS)-$(Build.SourceBranchName)-$(commitHash).tar.gz
67+
artifactName: libraries
68+
condition: succeeded()

ci/tiledb-java-azure.yml renamed to ci/tiledb-java-linux_osx.yml

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,27 @@
11
steps:
22
- bash: |
3+
unset SYSTEM
34
set -e pipefail
45
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
56
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -allowUntrusted -target /
67
condition: eq(variables['Agent.OS'], 'Darwin')
78
displayName: 'Install system headers (OSX only)'
89
10+
911
- bash: |
1012
unset SYSTEM
11-
ls
12-
./gradlew assemble
1313
./gradlew checkFormat
14+
displayName: 'Check Format'
15+
16+
- bash: |
17+
unset SYSTEM
18+
./gradlew assemble
19+
displayName: 'Assemble'
20+
21+
- bash: |
22+
unset SYSTEM
1423
./gradlew test
15-
displayName: 'Build and Test (Ubuntu and OSX)'
24+
displayName: 'Test'
1625
1726
- bash: |
1827
set -e pipefail

ci/tiledb-java-windows-release.yml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
steps:
2+
3+
- bash: |
4+
ls
5+
cp *.dll $BUILD_BINARIESDIRECTORY
6+
./gradlew.bat assemble
7+
cp ./build/tiledb_jni/Release/*.dll ./build/install/bin/*.dll $BUILD_BINARIESDIRECTORY
8+
9+
displayName: 'Build and Upload (Windows)'
10+
11+
- bash: |
12+
set -e pipefail
13+
# Display log files if the build failed
14+
echo "Dumping log files for failed build"
15+
echo "----------------------------------"
16+
for f in $(find $BUILD_REPOSITORY_LOCALPATH -name *.log);
17+
do echo "------"
18+
echo $f
19+
echo "======"
20+
cat $f
21+
done;
22+
condition: failed() # only run this job if the build step failed
23+
displayName: "Print log files (failed build only)"
24+
25+
26+
- bash: |
27+
echo $sourceVersion
28+
commitHash=${sourceVersion:0:7}
29+
echo $commitHash
30+
echo "##vso[task.setvariable variable=commitHash]$commitHash" ## Set variable for using in other tasks.
31+
env: { sourceVersion: $(Build.SourceVersion) }
32+
displayName: Git Hash 7-digit
33+
34+
- task: ArchiveFiles@2
35+
inputs:
36+
rootFolderOrFile: '$(Build.BinariesDirectory)'
37+
includeRootFolder: false
38+
archiveType: 'tar' # Options: zip, 7z, tar, wim
39+
tarCompression: 'gz' # Optional. Options: gz, bz2, xz, none
40+
archiveFile: $(Build.ArtifactStagingDirectory)/tiledb-$(Agent.OS)-$(Build.SourceBranchName)-$(commitHash).tar.gz
41+
replaceExistingArchive: true
42+
verbose: true # Optional
43+
condition: succeeded()
44+
45+
- task: PublishBuildArtifacts@1
46+
inputs:
47+
pathtoPublish: $(Build.ArtifactStagingDirectory)/tiledb-$(Agent.OS)-$(Build.SourceBranchName)-$(commitHash).tar.gz
48+
artifactName: libraries
49+
condition: succeeded()

src/main/java/io/tiledb/libtiledb/NativeLibLoader.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ private static Path extractLibraryFile(
317317
*/
318318
private static Path findNativeLibrary(String libraryName, boolean mapLibraryName) {
319319
String mappedLibraryName = mapLibraryName ? System.mapLibraryName(libraryName) : libraryName;
320-
String libDir = LIB_RESOURCE_DIR + "/" + getOSClassifier();
320+
String libDir = LIB_RESOURCE_DIR;
321321
String libPath = libDir + "/" + mappedLibraryName;
322322

323323
boolean hasNativeLib = hasResource(libPath);

0 commit comments

Comments
 (0)