forked from rancher/cli
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpackage
More file actions
executable file
·90 lines (76 loc) · 3.44 KB
/
Copy pathpackage
File metadata and controls
executable file
·90 lines (76 loc) · 3.44 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
#!/usr/bin/env bash
set -euo pipefail
source "$(dirname "$0")/version"
cd "$(dirname "$0")/.."
DIST="$(pwd)/dist/artifacts"
SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH:-$(git show -s --format=%ct HEAD)}"
export SOURCE_DATE_EPOCH TZ=UTC
rm -rf build/archive "${DIST}/${VERSION}" "${DIST}/latest"
mkdir -p "${DIST}/${VERSION}" "${DIST}/latest"
for binary in build/bin/*; do
[ -e "${binary}" ] || continue
base_name="$(basename "${binary}")"
platform="${base_name#pasturestack_}"
extension=
if [[ "${platform}" == windows-* ]]; then
extension=.exe
platform="${platform%.exe}"
fi
archive_root="build/archive/${platform}"
directory_name="pasturestack-${VERSION}"
archive_directory="${archive_root}/${directory_name}"
rm -rf "${archive_root}"
mkdir -p "${archive_directory}"
install -m 0755 "${binary}" "${archive_directory}/pasturestack${extension}"
touch -d "@${SOURCE_DATE_EPOCH}" "${archive_directory}/pasturestack${extension}" "${archive_directory}" "${archive_root}"
binary_directory="${DIST}/${VERSION}/binaries/${platform}"
latest_binary_directory="${DIST}/latest/binaries/${platform}"
mkdir -p "${binary_directory}" "${latest_binary_directory}"
install -m 0755 "${binary}" "${binary_directory}/pasturestack${extension}"
install -m 0755 "${binary}" "${latest_binary_directory}/pasturestack${extension}"
archive_base="pasturestack-${platform}"
if [ -z "${extension}" ]; then
gzip -n -9 -c "${binary}" > "${binary_directory}/pasturestack.gz"
xz -T1 -9e -c "${binary}" > "${binary_directory}/pasturestack.xz"
cp "${binary_directory}/pasturestack.gz" "${latest_binary_directory}/pasturestack.gz"
cp "${binary_directory}/pasturestack.xz" "${latest_binary_directory}/pasturestack.xz"
tar --sort=name --owner=0 --group=0 --numeric-owner --mtime="@${SOURCE_DATE_EPOCH}" \
-C "${archive_root}" -cf - "${directory_name}" \
| gzip -n -9 > "${DIST}/${VERSION}/${archive_base}-${VERSION}.tar.gz"
tar --sort=name --owner=0 --group=0 --numeric-owner --mtime="@${SOURCE_DATE_EPOCH}" \
-C "${archive_root}" -cf - "${directory_name}" \
| xz -T1 -9e > "${DIST}/${VERSION}/${archive_base}-${VERSION}.tar.xz"
cp "${DIST}/${VERSION}/${archive_base}-${VERSION}.tar.gz" "${DIST}/latest/${archive_base}.tar.gz"
cp "${DIST}/${VERSION}/${archive_base}-${VERSION}.tar.xz" "${DIST}/latest/${archive_base}.tar.xz"
else
(
cd "${archive_root}"
zip -X -9 -q "${DIST}/${VERSION}/${archive_base}-${VERSION}.zip" "${directory_name}/pasturestack.exe"
)
cp "${DIST}/${VERSION}/${archive_base}-${VERSION}.zip" "${DIST}/latest/${archive_base}.zip"
fi
done
if [ "${SKIP_IMAGE_BUILD:-false}" = "true" ]; then
exit 0
fi
architecture="${ARCH:-amd64}"
suffix=
[ "${architecture}" = "amd64" ] || suffix="_${architecture}"
tag="${TAG:-${VERSION}${suffix}}"
image_name="${IMAGE_NAME:-${REPO:-ghcr.io/pasturestack}/cli}"
if [[ "${tag}" == *dirty* ]]; then
tag=dev
fi
docker_build_network_arg=()
if [ -n "${DOCKER_BUILD_NETWORK:-}" ]; then
docker_build_network_arg=(--network="${DOCKER_BUILD_NETWORK}")
fi
image="${image_name}:${tag}"
DOCKER_BUILDKIT=1 docker build "${docker_build_network_arg[@]}" \
--build-arg IMAGE_VERSION="${tag}" \
--file package/Dockerfile \
--tag "${image}" \
.
mkdir -p dist
printf '%s\n' "${image}" > dist/images
printf 'Built %s\n' "${image}"