-
Notifications
You must be signed in to change notification settings - Fork 1
132 lines (126 loc) · 5.43 KB
/
Copy pathlinux-release.yml
File metadata and controls
132 lines (126 loc) · 5.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
name: ManyLinux CI - Release Slim and Fat Jar
on: [workflow_dispatch]
jobs:
linux_jars:
name: manylinux_jars
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
container: ["monetdb/dev-builds:default_manylinux","monetdb/dev-builds:Aug2024_manylinux","monetdb/dev-builds:Dec2023_manylinux"]
artifact: ["slim","fat"]
include:
- container: "monetdb/dev-builds:default_manylinux"
artifact: "slim"
mdb_version: "default"
- container: "monetdb/dev-builds:default_manylinux"
artifact: "fat"
mdb_version: "default"
- container: "monetdb/dev-builds:Aug2024_manylinux"
artifact: "slim"
mdb_version: "Aug2024"
- container: "monetdb/dev-builds:Aug2024_manylinux"
artifact: "fat"
mdb_version: "Aug2024"
- container: "monetdb/dev-builds:Dec2023_manylinux"
artifact: "slim"
mdb_version: "Dec2023"
- container: "monetdb/dev-builds:Dec2023_manylinux"
artifact: "fat"
mdb_version: "Dec2023"
container:
image: ${{ matrix.container }}
env:
MDBE_JAVA_VERSION: "1.11-SNAPSHOT"
MONETDB_INSTALL: /usr/local
MDB_VERSION: ${{ matrix.mdb_version }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
ref: "master"
#Set global environment variables
- name: Env variables (slim jar)
if: ${{ matrix.artifact == 'slim' }}
run: |
echo "MVN_FLAGS=linux-slim" >> $GITHUB_ENV
echo "ARTIFACT=monetdbe-java-${{ env.MDBE_JAVA_VERSION }}-linux-slim.jar" >> $GITHUB_ENV
echo "M2_REPO=/root/.m2/repository/monetdb/monetdbe-java/${{ env.MDBE_JAVA_VERSION }}" >> $GITHUB_ENV+
- name: Env variables (fat jar)
if: ${{ matrix.artifact == 'fat' }}
run: |
echo "MVN_FLAGS=linux-slim,linux-fat" >> $GITHUB_ENV
echo "ARTIFACT=monetdbe-java-${{ env.MDBE_JAVA_VERSION }}-linux-fat.jar" >> $GITHUB_ENV
echo "M2_REPO=/root/.m2/repository/monetdb/monetdbe-java/${{ env.MDBE_JAVA_VERSION }}" >> $GITHUB_ENV
#Java, maven, gpg and patchelf setup; set up test env
- name: Set up JDK 1.8 and maven settings.xml
uses: actions/setup-java@v1
with:
java-version: 1.8
server-id: ossrh
server-username: MVN_DEPLOY_USERNAME
server-password: MVN_DEPLOY_PASSWORD
gpg-passphrase: MVN_GPG_PASSPHRASE
settings-path: /root/.m2/
- name: Setup Maven
uses: stCarolas/setup-maven@v4
with:
maven-version: 3.6.3
- name: Install packages
run: yum install -y patchelf chrpath wget
#- name: Import GPG private key for maven release (for sign-maven-plugin)
# run: |
# touch /root/.m2/sign-key.asc
# echo -e "${{ secrets.MVN_GPG_PRIVATE_KEY_SIMPLIFY }}" > /root/.m2/sign-key.asc
- name: Set up test environment
run: |
mkdir -p $GITHUB_WORKSPACE/testdata/taxi $GITHUB_WORKSPACE/testdata/localdb
wget -O testdata/taxi/yellow_tripdata_2016-01.csv https://s3.amazonaws.com/nyc-tlc/trip+data/yellow_tripdata_2016-01.csv
#Install native library; collect library dependencies
- name: Install native library (libmonetdbe-java.dylib)
run: |
cd native
mvn clean install -DMonetDB_dir=$MONETDB_INSTALL -P linux-release --no-transfer-progress
cd ..
- name: Collect direct dependencies
run: |
mkdir collect_libs
cp $MONETDB_LIBS/libbat.so.?? $MONETDB_LIBS/libmapi.so.?? $MONETDB_LIBS/libmonetdb5.so.?? $MONETDB_LIBS/libmonetdbe.so.? $MONETDB_LIBS/libmonetdbsql.so.?? $MONETDB_LIBS/libstream.so.?? collect_libs
env:
MONETDB_LIBS: ${{ env.MONETDB_INSTALL }}/lib64
- name: Change rpath of MonetDB libraries to package
run: |
ldd $GITHUB_WORKSPACE/collect_libs/*
for file in $GITHUB_WORKSPACE/collect_libs/*; do chrpath -r \$\ORIGIN/. $file; done
ldd $GITHUB_WORKSPACE/collect_libs/*
- name: Collect transitive dependencies (only for fat jar)
if: ${{ matrix.artifact == 'fat' }}
run: cp /lib64/libz.so.1 /lib64/libpcre.so.1 collect_libs
#Package jar, test and deploy
- name: Compile Java, package into jar, do unit tests and deploy
run: |
cd java
mvn clean install -DCOLLECT_LIBS=$GITHUB_WORKSPACE/collect_libs -P ${{ env.MVN_FLAGS }} --no-transfer-progress
cd ..
env:
MVN_DEPLOY_USERNAME: monetdb
MVN_DEPLOY_PASSWORD: ${{ secrets.MVN_DEPLOY_PASSWORD }}
MVN_GPG_PRIVATE_KEY: ${{ secrets.MVN_GPG_PRIVATE_KEY }}
MVN_GPG_PASSPHRASE: ${{ secrets.MVN_GPG_PASSPHRASE }}
#Run example and publish jar
- name: Run example class (SimpleTypes)
run: |
javac -cp ${{env.M2_REPO}}/${{env.ARTIFACT}} example/SimpleTypes.java
java -cp ${{env.M2_REPO}}/${{env.ARTIFACT}}:example/ SimpleTypes
- name: Publish error log
if: ${{ failure() }}
uses: actions/upload-artifact@v2
with:
name: hs_err.log
path: /__w/MonetDBe-Java/MonetDBe-Java/hs_err_pid*.log
- name: Publish Linux jar
uses: actions/upload-artifact@v2
if: always()
with:
name: ${{ env.MDB_VERSION }}-${{env.ARTIFACT}}
path: ${{env.M2_REPO}}/${{env.ARTIFACT}}