Skip to content

Commit 62aa10c

Browse files
committed
add Ubuntu ci on appveyor
1 parent 841decf commit 62aa10c

File tree

4 files changed

+142
-89
lines changed

4 files changed

+142
-89
lines changed

appveyor.yml

Lines changed: 65 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,73 @@
1+
# How to use AppVeyor to build a multi-arch Docker image for Linux and Windows
2+
# https://stefanscherer.github.io/use-appveyor-to-build-multi-arch-docker-image/
3+
#
4+
# Building ASP.NET Core apps on both Windows and Linux using AppVeyor
5+
# https://andrewlock.net/building-asp-net-core-apps-on-both-windows-and-linux-using-appveyor/
6+
#
7+
# appveyor.yml Example:
8+
# https://github.com/cdcseacave/openMVS/blob/master/.appveyor.yml
9+
110
version: '{build}'
2-
os: Windows Server 2012
11+
image:
12+
- Visual Studio 2017
13+
- Ubuntu2004
314
build: false
415
clone_depth: 50
516
branches:
617
except:
718
- travis-ci
19+
- gh-pages
820

921
environment:
10-
matrix:
11-
- JAVA_HOME: "C:\\Program Files (x86)\\Java\\jdk1.8.0"
12-
- JAVA_HOME: "C:\\Program Files\\Java\\jdk1.8.0"
13-
- JAVA_HOME: "C:\\Program Files\\Java\\jdk11"
14-
15-
init:
16-
- ps: "ls 'C:/Program Files/Java/jdk*'"
17-
- ps: "ls 'C:/Program Files (x86)/Java/jdk*'"
18-
19-
install:
20-
- cmd: SET MAVEN_OPTS=-Xmx768m -XX:MaxPermSize=128m -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2
21-
- cmd: SET JAVA_OPTS=-Xmx768m -XX:MaxPermSize=128m
22-
- "ECHO JAVA_HOME=%JAVA_HOME%, HOMEPATH=%HOMEPATH%, PATH=%PATH%"
23-
- cmd: ./mvnw.cmd --version
24-
25-
test_script:
26-
- ./mvnw.cmd clean install --batch-mode --no-transfer-progress
27-
28-
cache:
29-
- C:\Users\appveyor\.m2\
22+
APPVEYOR_YML_DISABLE_PS_LINUX: true
23+
24+
for:
25+
-
26+
#------------------
27+
# Windows
28+
#------------------
29+
matrix:
30+
only:
31+
- image: Visual Studio 2017
32+
init:
33+
- ps: "ls 'C:/Program Files/Java/jdk*'"
34+
- ps: "ls 'C:/Program Files (x86)/Java/jdk*'"
35+
- cmd: set MAVEN_OPTS=-Xmx768m -XX:MaxPermSize=128m -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2
36+
- cmd: set JAVA_OPTS=-Xmx768m -XX:MaxPermSize=128m
37+
install:
38+
- cmd: echo JAVA_HOME=%JAVA_HOME%, HOMEPATH=%HOMEPATH%, PATH=%PATH%
39+
- cmd: ./mvnw.cmd --version
40+
41+
test_script:
42+
# test under java 8
43+
- cmd: set JAVA_HOME=C:\Program Files\Java\jdk1.8.0
44+
- ./mvnw.cmd clean install --batch-mode --no-transfer-progress
45+
# test under java 11
46+
- cmd: set JAVA_HOME=C:\Program Files\Java\jdk11
47+
- ./mvnw.cmd clean install --batch-mode --no-transfer-progress
48+
49+
after_test:
50+
- ps: Remove-Item -r -fo C:\Users\appveyor\.m2\repository\com\alibaba\dns-cache-manipulator*
51+
52+
cache:
53+
- C:\Users\appveyor\.m2\
54+
-
55+
#------------------
56+
# Ubuntu
57+
#------------------
58+
matrix:
59+
only:
60+
- image: Ubuntu2004
61+
init:
62+
- sh: export MAVEN_OPTS="-Xmx768m -XX:MaxPermSize=128m -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2"
63+
- sh: export JAVA_OPTS="-Xmx768m -XX:MaxPermSize=128m"
64+
65+
test_script:
66+
- sh: ./scripts/integration-test.sh
67+
68+
after_test:
69+
- sh: rm -rf /home/appveyor/.m2/repository/com/alibaba/dns-cache-manipulator*
70+
71+
cache:
72+
- /home/appveyor/.m2/
73+
- /home/appveyor/.sdkman/

scripts/common_build.sh

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ readonly -a JAVA_CMD=(
2727
)
2828

2929
readonly -a MVN_CMD=(
30-
"$ROOT_PROJECT_DIR/mvnw" -V
30+
"$ROOT_PROJECT_DIR/mvnw" -V --no-transfer-progress
3131
)
3232

3333
#################################################################################
@@ -56,7 +56,7 @@ mvnBuildJar() {
5656
# https://stackoverflow.com/questions/25201430
5757
runCmd "${MVN_CMD[@]}" install -DperformRelease -P '!gen-sign' || die "fail to build jar!"
5858
else
59-
runCmd "${MVN_CMD[@]}" package -Dmaven.test.skip=true || die "fail to build jar!"
59+
runCmd "${MVN_CMD[@]}" install -Dmaven.test.skip=true || die "fail to build jar!"
6060
fi
6161
)
6262
}
@@ -79,11 +79,3 @@ mvnCopyDependencies() {
7979
runCmd "${MVN_CMD[@]}" dependency:copy-dependencies -DincludeScope=test -DexcludeArtifactIds=jsr305,spotbugs-annotations || die "fail to mvn copy-dependencies!"
8080
)
8181
}
82-
83-
#################################################################################
84-
# maven actions
85-
#################################################################################
86-
87-
if [ "${1:-}" != "skipClean" ]; then
88-
mvnClean
89-
fi

scripts/integration-test.sh

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,23 @@ cd "$(dirname "$(readlink -f "$0")")"
55
export CI_TEST_MODE=true
66

77
source ./prepare-jdk.sh
8-
source ./common_build.sh "${1:-}"
8+
source ./common_build.sh
99

10-
# default jdk 8, do build and test
11-
switch_to_jdk 8
12-
headInfo "test with Java: $JAVA_HOME"
13-
# run junit test
14-
runCmd ../library/scripts/run-junit.sh skipClean
15-
runCmd ../tool/scripts/run-junit.sh skipClean
10+
# default jdk 11, do build and test
11+
switch_to_jdk 11
12+
13+
if [ "${1:-}" != "skipClean" ]; then
14+
mvnClean
15+
16+
mvnBuildJar
17+
18+
mvnCopyDependencies
19+
fi
1620

1721
# test multi-version java home env
1822
# shellcheck disable=SC2154
19-
for jdk in "${ci_jdks[@]}"; do
20-
switch_to_jdk "$jdk"
23+
for jhome in "${java_home_var_names[@]}"; do
24+
export JAVA_HOME=${!jhome}
2125

2226
headInfo "test with Java: $JAVA_HOME"
2327
runCmd ../library/scripts/run-junit.sh skipClean

scripts/prepare-jdk.sh

Lines changed: 62 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -3,70 +3,83 @@
33
# https://objectcomputing.com/news/2019/01/07/sdkman-travis
44
set -eEuo pipefail
55

6-
[ -z "${_source_mark_of_prepare_jdk:+dummy}" ] || return 0
7-
export _source_mark_of_prepare_jdk=true
6+
[ -z "${__source_guard_37F50E39_A075_4E05_A3A0_8939EF62D836:+dummy}" ] || return 0
7+
__source_guard_37F50E39_A075_4E05_A3A0_8939EF62D836="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
88

99
# shellcheck source=common.sh
10-
source "$(dirname "$(readlink -f "$BASH_SOURCE")")/common.sh"
11-
12-
if [ ! -f "$HOME/.sdkman/bin/sdkman-init.sh" ]; then
13-
[ -d "$HOME/.sdkman" ] && rm -rf "$HOME/.sdkman"
14-
curl -s get.sdkman.io | bash || die "fail to install sdkman"
15-
echo sdkman_auto_answer=true >>"$HOME/.sdkman/etc/config"
16-
fi
17-
set +u
18-
# shellcheck disable=SC1090
19-
source "$HOME/.sdkman/bin/sdkman-init.sh"
20-
set -u
10+
source "$__source_guard_37F50E39_A075_4E05_A3A0_8939EF62D836/common.sh"
11+
12+
__loadSdkman() {
13+
local this_time_install_sdk_man=false
14+
# install sdkman
15+
if [ ! -f "$HOME/.sdkman/bin/sdkman-init.sh" ]; then
16+
[ -d "$HOME/.sdkman" ] && rm -rf "$HOME/.sdkman"
17+
18+
curl -s get.sdkman.io | bash || die "fail to install sdkman"
19+
this_time_install_sdk_man=true
20+
fi
21+
22+
{
23+
echo sdkman_auto_answer=true
24+
echo sdkman_auto_selfupdate=false
25+
echo sdkman_disable_auto_upgrade_check=true
26+
} >>"$HOME/.sdkman/etc/config"
27+
28+
set +u
29+
# shellcheck disable=SC1090
30+
source "$HOME/.sdkman/bin/sdkman-init.sh"
31+
"$this_time_install_sdk_man" && logAndRun sdk ls java
32+
set -u
33+
}
34+
__loadSdkman
2135

2236
jdks_install_by_sdkman=(
23-
7.0.262-zulu
24-
8.0.252-zulu
25-
26-
# 9.0.7-zulu
27-
# 10.0.2-zulu
28-
#
29-
# 11.0.7-zulu
30-
# 12.0.2-open
31-
# 13.0.3-zulu
32-
# 14.0.1-zulu
33-
# 15.ea.20-open
37+
6.0.119-zulu
38+
8.312.07.1-amzn
39+
11.0.12.7.1-ms
3440
)
41+
java_home_var_names=()
3542

36-
ci_jdks=(
37-
6
38-
"${jdks_install_by_sdkman[@]}"
39-
)
43+
__setJdkHomeVarsAndInstallJdk() {
44+
blueEcho "prepared jdks:"
4045

41-
JDK6_HOME="${JDK6_HOME:-/usr/lib/jvm/java-6-openjdk-amd64}"
42-
JDK8_HOME="$SDKMAN_CANDIDATES_DIR/java/8.0.252-zulu"
43-
#JDK11_HOME="$SDKMAN_CANDIDATES_DIR/java/11.0.7-zulu"
44-
45-
installJdkBySdkman() {
46-
local i
47-
for ((i = 0; i < ${#jdks_install_by_sdkman[@]}; i++)); do
48-
local jdkNameOfSdkman="${jdks_install_by_sdkman[i]}"
49-
local jdkHomePath="$SDKMAN_CANDIDATES_DIR/java/$jdkNameOfSdkman"
50-
51-
# install jdk by sdkman
52-
if [ ! -d "$jdkHomePath" ]; then
53-
set +u
54-
runCmd sdk install java "$jdkNameOfSdkman" || die "fail to install jdk $jdkNameOfSdkman by sdkman"
55-
set -u
46+
local jdkNameOfSdkman
47+
for jdkNameOfSdkman in "${jdks_install_by_sdkman[@]}"; do
48+
local jdkVersion
49+
jdkVersion=$(echo "$jdkNameOfSdkman" | awk -F'[.]' '{print $1}')
50+
51+
# jdkHomeVarName like JDK7_HOME, JDK11_HOME
52+
local jdkHomeVarName="JDK${jdkVersion}_HOME"
53+
54+
if [ ! -d "${!jdkHomeVarName:-}" ]; then
55+
local jdkHomePath="$SDKMAN_CANDIDATES_DIR/java/$jdkNameOfSdkman"
56+
57+
# set JDK7_HOME ~ JDK1x_HOME to global var java_home_var_names
58+
eval "$jdkHomeVarName='${jdkHomePath}'"
59+
60+
# install jdk by sdkman
61+
[ ! -d "$jdkHomePath" ] && {
62+
set +u
63+
logAndRun sdk install java "$jdkNameOfSdkman" || die "fail to install jdk $jdkNameOfSdkman by sdkman"
64+
set -u
65+
}
5666
fi
67+
68+
java_home_var_names=("${java_home_var_names[@]:+"${java_home_var_names[@]}"}" "$jdkHomeVarName")
69+
printf '%s :\n\t%s\n\tspecified is %s\n' "$jdkHomeVarName" "${!jdkHomeVarName}" "$jdkNameOfSdkman"
5770
done
5871

72+
echo
73+
blueEcho "ls $SDKMAN_CANDIDATES_DIR/java/ :"
5974
ls -la "$SDKMAN_CANDIDATES_DIR/java/"
6075
}
61-
installJdkBySdkman
76+
__setJdkHomeVarsAndInstallJdk
6277

6378
switch_to_jdk() {
79+
[ $# == 1 ] || die "${FUNCNAME[0]} need 1 argument! But provided: $*"
80+
6481
local javaHomeVarName="JDK${1}_HOME"
65-
if [ -n "${!javaHomeVarName:-}" ]; then
66-
export JAVA_HOME="${!javaHomeVarName}"
67-
else
68-
export JAVA_HOME="$SDKMAN_CANDIDATES_DIR/java/$1"
69-
fi
82+
export JAVA_HOME="${!javaHomeVarName}"
7083

7184
[ -n "$JAVA_HOME" ] || die "jdk $1 env not found: $javaHomeVarName"
7285
[ -e "$JAVA_HOME" ] || die "jdk $1 not existed: $JAVA_HOME"

0 commit comments

Comments
 (0)