-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathbuild-arm64
More file actions
113 lines (103 loc) · 2.81 KB
/
build-arm64
File metadata and controls
113 lines (103 loc) · 2.81 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
#!/usr/bin/env bash
set -eu
readonly IMAGE_NAME="ghcr.io/datadog/dd-trace-java-docker-build"
function compute_metadata() {
GIT_BRANCH="${GITHUB_REF_NAME:-$(git branch --show-current)}"
readonly GIT_BRANCH="${GIT_BRANCH:-local}"
if [[ ${GIT_BRANCH} = master ]]; then
TAG_PREFIX=""
else
TAG_PREFIX="${GIT_BRANCH}-"
TAG_PREFIX="${TAG_PREFIX,,}"
TAG_PREFIX="${TAG_PREFIX//\//_}"
fi
BUILD_DATE="$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
GIT_HEAD_REF="$(git show-ref --head --hash ^HEAD)"
}
function image_name() {
echo -n "${IMAGE_NAME}:${TAG_PREFIX}arm64-base"
}
function docker_build() {
docker buildx build \
--platform linux/arm64 \
--label org.opencontainers.image.created="$BUILD_DATE" \
--label org.opencontainers.image.source=https://github.com/DataDog/dd-trace-java-docker-build \
--label org.opencontainers.image.revision="$GIT_HEAD_REF" \
--file Dockerfile.arm64 \
--target base \
--tag "$(image_name)" \
--load \
.
}
function do_build() {
compute_metadata
docker_build
if [ -n "${GITHUB_OUTPUT+unset}" ]; then
echo "LATEST_IMAGE_TAG=$(image_name)" >>"$GITHUB_OUTPUT"
fi
}
function do_test() {
local image
compute_metadata
image="$(image_name)"
docker run \
--platform linux/arm64 \
--rm \
"$image" \
bash -lc '
set -eux
"$JAVA_HOME/bin/java" -version
"$JAVA_8_HOME/bin/java" -version
"$JAVA_11_HOME/bin/java" -version
"$JAVA_17_HOME/bin/java" -version
"$JAVA_21_HOME/bin/java" -version
"$JAVA_25_HOME/bin/java" -version
'
}
function do_describe() {
local image
compute_metadata
image="$(image_name)"
docker run \
--platform linux/arm64 \
--rm \
"$image" \
bash -lc '
echo "# arm64 image"
echo
echo "## Operating System"
echo
. /etc/os-release
echo "* ${PRETTY_NAME}"
echo
echo "## Java Home"
echo
echo "* ${JAVA_HOME}"
echo
echo "## JDKs"
echo
for env_name in JAVA_8_HOME JAVA_11_HOME JAVA_17_HOME JAVA_21_HOME JAVA_25_HOME; do
echo "* ${env_name}"
printf '%s\n' '```'
"${!env_name}/bin/java" -version 2>&1
printf '%s\n' '```'
echo
done
'
}
function do_push() {
compute_metadata
docker push "$(image_name)"
}
if [[ -z ${1:-} ]]; then
do_build
elif [[ ${1} = "--test" ]]; then
do_test
elif [[ ${1} = "--describe" ]]; then
do_describe
elif [[ ${1} = "--push" ]]; then
do_push
else
echo "Unknown argument: ${1}" >&2
exit 1
fi